Coq 所有同态都是正确的吗?
两个群之间的同态是正确的吗?下面是我对群和同态的定义:Coq 所有同态都是正确的吗?,coq,Coq,两个群之间的同态是正确的吗?下面是我对群和同态的定义: Definition associative {ty : Type} (f : ty -> ty -> ty) (eq : ty -> ty -> Prop) := forall a b c, eq (f (f a b) c) (f a (f b c)). Definition identity {ty : Type} (f : ty -> ty -> ty) (eq : ty -> ty
Definition associative {ty : Type} (f : ty -> ty -> ty) (eq : ty -> ty -> Prop) :=
forall a b c, eq (f (f a b) c) (f a (f b c)).
Definition identity {ty : Type} (f : ty -> ty -> ty) (eq : ty -> ty -> Prop) (e : ty) :=
forall a, eq (f a e) a /\ eq (f e a) a.
Definition op_inverse {ty : Type} (f : ty -> ty -> ty) (eq : ty -> ty -> Prop) (e a a' : ty) :=
eq (f a a') e /\ eq (f a' a) e.
Definition op_invertible {ty : Type} (f : ty -> ty -> ty) (eq : ty -> ty -> Prop) (e : ty) :=
forall a, exists a', op_inverse f eq e a a'.
Record Group : Type := Group'
{ ty :> Type
; op : ty -> ty -> ty
; eqr : ty -> ty -> Prop
; e : ty
; eq_rel :> Equivalence eqr
; prop_op :> Proper (eqr ==> eqr ==> eqr) op
; assoc_op : associative op eqr
; id_op : identity op eqr e
; inv_op : op_invertible op eqr e
}.
Notation "A <.> B" := ((op _) A B) (at level 50).
Notation "A =.= B" := ((eqr _) A B) (at level 50).
Definition homomorphism {G H : Group} (f : G -> H) :=
forall x y, f (x <.> y) =.= (f x <.> f y).
这一定是真的吗?这不是真的
让H
成为一个非平凡群(例如,Z/2Z
),定义g
为总关系eqr:=fun\uu=>True
(g
因此与平凡群同构),并且f:ty g->ty H
是身份函数f
满足同态
但它不合适
一般来说,为了反映普通的数学实践,在使用集合点时,正确性是一个基本事实,必须从第一性原理得到证明,而理论的其余部分则依赖于此。可以说,homo\u is\u property
不是一个自然的问题,因为所有的定理和属性(比如同态
)实际上应该首先由适当的函数来参数化
Lemma homo_is_proper : forall {G H : Group} (f : ty G -> ty H),
homomorphism f -> Proper (eqr G ==> eqr H) f.