record SemiGroup : Type ≝
{ carrier: Type;
op: carrier → carrier → carrier;
- properties: isSemiGroup carrier op
+ semigroup_properties: isSemiGroup carrier op
}.
coercion cic:/matita/algebra/semigroups/carrier.con.
-notation "hvbox(a break * \sub S b)"
+notation "hvbox(a break \middot \sub S b)"
left associative with precedence 55
for @{ 'ptimes $S $a $b }.
-interpretation "Semigroup operation" 'times a b =
+notation "hvbox(a break \middot b)"
+ left associative with precedence 55
+for @{ 'ptimesi $a $b }.
+
+interpretation "Semigroup operation" 'ptimesi a b =
(cic:/matita/algebra/semigroups/op.con _ a b).
+(* too ugly
interpretation "Semigroup operation" 'ptimes S a b =
- (cic:/matita/algebra/semigroups/op.con S a b).
+ (cic:/matita/algebra/semigroups/op.con S a b). *)
definition is_left_unit ≝
- λS:SemiGroup. λe:S. ∀x:S. e * x = x.
+ λS:SemiGroup. λe:S. ∀x:S. e·x = x.
definition is_right_unit ≝
- λS:SemiGroup. λe:S. ∀x:S. x * e = x.
+ λS:SemiGroup. λe:S. ∀x:S. x·e = x.
theorem is_left_unit_to_is_right_unit_to_eq:
- ∀S:SemiGroup. ∀e1,e2:S.
- is_left_unit ? e1 → is_right_unit ? e2 → e1=e2.
+ ∀S:SemiGroup. ∀e,e':S.
+ is_left_unit ? e → is_right_unit ? e' → e=e'.
intros;
- rewrite < (H e2);
- rewrite < (H1 e1) in \vdash (? ? % ?);
+ rewrite < (H e');
+ rewrite < (H1 e) in \vdash (? ? % ?);
reflexivity.
-qed.
\ No newline at end of file
+qed.