X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Flibrary%2Falgebra%2Fsemigroups.ma;h=18d73b619402ecee81343ec6e9a9420181efa96f;hb=e880d6eab5e1700f4a625ddcd7d0fa8f0cce2dcc;hp=5a739ae126c52327fcd63d9a5b192e3f95c4156f;hpb=9eabe046c1182960de8cfdba96c5414224e3a61e;p=helm.git diff --git a/helm/software/matita/library/algebra/semigroups.ma b/helm/software/matita/library/algebra/semigroups.ma index 5a739ae12..18d73b619 100644 --- a/helm/software/matita/library/algebra/semigroups.ma +++ b/helm/software/matita/library/algebra/semigroups.ma @@ -14,38 +14,31 @@ include "higher_order_defs/functions.ma". -(* Magmas *) +(* Semigroups *) -record Magma : Type≝ +record PreSemiGroup : Type≝ { carrier:> Type; op: carrier → carrier → carrier }. -notation "hvbox(a break \middot b)" - left associative with precedence 55 -for @{ 'magma_op $a $b }. - -interpretation "magma operation" 'magma_op a b = - (cic:/matita/algebra/semigroups/op.con _ a b). - -(* Semigroups *) +interpretation "Semigroup operation" 'middot a b = (op ? a b). -record isSemiGroup (M:Magma) : Prop≝ - { op_associative: associative ? (op M) }. +record IsSemiGroup (S:PreSemiGroup) : Prop ≝ + { op_is_associative: associative ? (op S) }. record SemiGroup : Type≝ - { magma:> Magma; - semigroup_properties:> isSemiGroup magma + { pre_semi_group:> PreSemiGroup; + is_semi_group :> IsSemiGroup pre_semi_group }. - + definition is_left_unit ≝ - λS:SemiGroup. λe:S. ∀x:S. e·x = x. - + λS:PreSemiGroup. λe:S. ∀x:S. e·x = x. + definition is_right_unit ≝ - λS:SemiGroup. λe:S. ∀x:S. x·e = x. + λS:PreSemiGroup. λe:S. ∀x:S. x·e = x. theorem is_left_unit_to_is_right_unit_to_eq: - ∀S:SemiGroup. ∀e,e':S. + ∀S:PreSemiGroup. ∀e,e':S. is_left_unit ? e → is_right_unit ? e' → e=e'. intros; rewrite < (H e');