-definition right_neutral \def λC,op. λe:C. ∀x:C. op x e=x.
-
-definition left_inverse \def λC,op.λe:C.λinv:C→C. ∀x:C. op (inv x) x = e.
-
-definition right_inverse \def λC,op.λe:C.λ inv: C→ C. ∀x:C. op x (inv x)=e.
-
-definition distributive_left ≝
- λA:Type.λf:A→A→A.λg:A→A→A.
- ∀x,y,z. f x (g y z) = g (f x y) (f x z).
-
-definition distributive_right ≝
- λA:Type.λf:A→A→A.λg:A→A→A.
- ∀x,y,z. f (g x y) z = g (f x z) (f y z).
-
-record is_abelian_group (C:Type) (plus:C→C→C) (zero:C) (opp:C→C) : Prop \def
- { (* abelian additive semigroup properties *)
- plus_assoc_: associative ? plus;
- plus_comm_: symmetric ? plus;
- (* additive monoid properties *)
- zero_neutral_: left_neutral ? plus zero;
- (* additive group properties *)
- opp_inverse_: left_inverse ? plus zero opp
- }.
-
-record abelian_group : Type \def
- { carrier:> Type;
- plus: carrier → carrier → carrier;
- zero: carrier;
- opp: carrier → carrier;
- ag_abelian_group_properties: is_abelian_group ? plus zero opp