]> matita.cs.unibo.it Git - helm.git/commitdiff
Finished one lemma (after many bug fixes here and there).
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Mon, 20 Feb 2006 15:05:37 +0000 (15:05 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Mon, 20 Feb 2006 15:05:37 +0000 (15:05 +0000)
matita/library/algebra/finite_groups.ma
matita/library/algebra/groups.ma
matita/library/algebra/monoids.ma
matita/library/algebra/semigroups.ma

index 2f80525e704b3cc21682f843589b7317a7117934..2b731d3026a7edb544b084d39c5329554373560e 100644 (file)
@@ -513,7 +513,7 @@ cut (∀n.n ≤ order ? (is_finite_enumerable G) → ∃m.f m = n);
     clearbody GOGO;
     rewrite < HH in GOGO;
     rewrite < HH in GOGO:(? ? % ?);
-    rewrite > (associative ? G) in GOGO;
+    rewrite > (op_associative ? G) in GOGO;
     letin GaGa ≝ (H ? ? ? GOGO);
     clearbody GaGa;
     clear GOGO;
@@ -524,13 +524,13 @@ cut (∀n.n ≤ order ? (is_finite_enumerable G) → ∃m.f m = n);
       letin GaxGax ≝ (refl_eq ? (G \sub a ·x));
       clearbody GaxGax;
       rewrite < GaGa in GaxGax:(? ? % ?);
-      rewrite > (associative ? (semigroup_properties G)) in GaxGax;
+      rewrite > (op_associative ? (semigroup_properties G)) in GaxGax;
       apply (H ? ? ? GaxGax)
     | unfold is_right_unit; intro;
       letin GaxGax ≝ (refl_eq ? (x·G \sub a));
       clearbody GaxGax;
       rewrite < GaGa in GaxGax:(? ? % ?);
-      rewrite < (associative ? (semigroup_properties G)) in GaxGax;
+      rewrite < (op_associative ? (semigroup_properties G)) in GaxGax;
       apply (H1 ? ? ? GaxGax)
     ]
   ]
index 1301d34f923725ea583d1ea4fe47403e869fa33c..57c43d4ae07472c64349296035a59a3e28eb1efd 100644 (file)
@@ -76,8 +76,8 @@ intros (x y z);
 rewrite < (e_is_left_unit ? G);
 rewrite < (e_is_left_unit ? G z);
 rewrite < (inv_is_left_inverse ? G x);
-rewrite > (associative ? (is_semi_group ? ( G)));
-rewrite > (associative ? (is_semi_group ? ( G)));
+rewrite > (op_associative ? G);
+rewrite > (op_associative ? G);
 apply eq_f;
 assumption.
 qed.
@@ -90,16 +90,16 @@ unfold right_cancellable;
 unfold injective;
 simplify;fold simplify (op G); 
 intros (x y z);
-rewrite < (e_is_right_unit ? ( G));
-rewrite < (e_is_right_unit ? ( G) z);
+rewrite < (e_is_right_unit ? G);
+rewrite < (e_is_right_unit ? G z);
 rewrite < (inv_is_right_inverse ? G x);
-rewrite < (associative ? (is_semi_group ? ( G)));
-rewrite < (associative ? (is_semi_group ? ( G)));
+rewrite < (op_associative ? G);
+rewrite < (op_associative ? G);
 rewrite > H;
 reflexivity.
 qed.
 
-theorem inv_inv: ∀G:Group. ∀x:G. x \sup -1 \sup -1 = x.
+theorem eq_inv_inv_x_x: ∀G:Group. ∀x:G. x \sup -1 \sup -1 = x.
 intros;
 apply (eq_op_x_y_op_z_y_to_eq ? (x \sup -1));
 rewrite > (inv_is_right_inverse ? G);
@@ -128,7 +128,7 @@ theorem eq_opxy_z_to_eq_x_opzinvy:
  ∀G:Group. ∀x,y,z:G. x·y=z → x = z·y \sup -1.
 intros;
 apply (eq_op_x_y_op_z_y_to_eq ? y);
-rewrite > (associative ? G);
+rewrite > (op_associative ? G);
 rewrite > (inv_is_left_inverse ? G);
 rewrite > (e_is_right_unit ? G);
 assumption.
@@ -138,9 +138,9 @@ theorem eq_opxy_z_to_eq_y_opinvxz:
  ∀G:Group. ∀x,y,z:G. x·y=z → y = x \sup -1·z.
 intros;
 apply (eq_op_x_y_op_x_z_to_eq ? x);
-rewrite < (associative ? G);
+rewrite < (op_associative ? G);
 rewrite > (inv_is_right_inverse ? G);
-rewrite > (e_is_left_unit ? (is_monoid ? G));
+rewrite > (e_is_left_unit ? G);
 assumption.
 qed.
 
@@ -149,8 +149,8 @@ theorem eq_inv_op_x_y_op_inv_y_inv_x:
 intros;
 apply (eq_op_x_y_op_z_y_to_eq ? (x·y));
 rewrite > (inv_is_left_inverse ? G);
-rewrite < (associative ? G);
-rewrite > (associative ? G (y \sup -1));
+rewrite < (op_associative ? G);
+rewrite > (op_associative ? G (y \sup -1));
 rewrite > (inv_is_left_inverse ? G);
 rewrite > (e_is_right_unit ? G);
 rewrite > (inv_is_left_inverse ? G);
@@ -173,9 +173,9 @@ interpretation "Morphism image" 'morimage f x =
 theorem morphism_to_eq_f_1_1:
  ∀G,G'.∀f:morphism G G'.f˜1 = 1.
 intros;
-apply (eq_op_x_y_op_z_y_to_eq G' (f˜1));
-rewrite > (e_is_left_unit ? G' ?);
-rewrite < (f_morph ? ? f);
+apply (eq_op_x_y_op_z_y_to_eq ? (f˜1));
+rewrite > (e_is_left_unit ? G');
+rewrite < f_morph;
 rewrite > (e_is_left_unit ? G);
 reflexivity.
 qed.
@@ -184,9 +184,9 @@ theorem eq_image_inv_inv_image:
  ∀G,G'.∀f:morphism G G'.
   ∀x.f˜(x \sup -1) = (f˜x) \sup -1.
 intros;
-apply (eq_op_x_y_op_z_y_to_eq G' (f˜x));
+apply (eq_op_x_y_op_z_y_to_eq ? (f˜x));
 rewrite > (inv_is_left_inverse ? G');
-rewrite < (f_morph ? ? f);
+rewrite < f_morph;
 rewrite > (inv_is_left_inverse ? G);
 apply (morphism_to_eq_f_1_1 ? ? f).
 qed.
@@ -199,9 +199,15 @@ record monomorphism (G,G':Group) : Type ≝
 (* Subgroups *)
 
 record subgroup (G:Group) : Type ≝
- { group: Group;
+ { group:> Group;
    embed:> monomorphism group G
  }.
+
+notation < "G"
+for @{ 'type_of_subgroup $G }.
+
+interpretation "Type_of_subgroup coercion" 'type_of_subgroup G =
+ (cic:/matita/algebra/groups/Type_of_subgroup.con _ G).
  
 notation "hvbox(x \sub H)" with precedence 79
 for @{ 'subgroupimage $H $x }.
@@ -263,21 +269,27 @@ intros;
 unfold left_coset_eq;
 simplify in ⊢ (? → ? ? ? (? ? % ?));
 simplify in ⊢ (? → ? ? ? (? ? ? (? ? ? (? ? %) ?)));
-simplify in ⊢ (? % → ?);
+simplify in ⊢ (? % → ?);
 intros;
 unfold member_of_left_coset;
 simplify in ⊢ (? ? (λy:?.? ? ? (? ? ? (? ? ? (? ? %) ?))));
-simplify in ⊢ (? ? (λy:? %.?));
+simplify in ⊢ (? ? (λy:? %.?));
 simplify in ⊢ (? ? (λy:?.? ? ? (? ? % ?)));
 unfold member_of_subgroup in H1;
 elim H1;
 clear H1;
 exists;
 [ apply (a\sup-1 · x1)
-| rewrite > (f_morph ? ? (morphism ? ? H));
-  rewrite > (eq_image_inv_inv_image ? ? 
+| rewrite > f_morph;
+  rewrite > eq_image_inv_inv_image; 
   rewrite < H2;
-  rewrite > (eq_inv_op_x_y_op_inv_y_inv_x ? ? ? ? H2);
+  rewrite > eq_inv_op_x_y_op_inv_y_inv_x;
+  rewrite > eq_inv_inv_x_x;
+  rewrite < (op_associative ? G);
+  rewrite < (op_associative ? G);
+  rewrite > (inv_is_right_inverse ? G);
+  rewrite > (e_is_left_unit ? G);
+  reflexivity
 ].
 qed.
 
index fc6c8f956affc3a08edba8faeb6dd0f4de3ab23a..63b6430ec90facf077bfbd3b4b346a9e124d7cc9 100644 (file)
@@ -75,7 +75,7 @@ theorem is_left_inverse_to_is_right_inverse_to_eq:
  generalize in match (eq_f ? ? (λy.y·(r x)) ? ? H2);
  simplify; fold simplify (op M);
  intro; clear H2;
- generalize in match (associative ? (is_semi_group ? (monoid_properties M)));
+ generalize in match (op_associative ? (is_semi_group ? (monoid_properties M)));
  intro;
  rewrite > H2 in H3; clear H2;
  rewrite > H1 in H3;
index 5b461d1a4f43edba6acc9e4dd448f0eceb157243..73099286ba7350a1148d6f46afa692c84c9e871c 100644 (file)
@@ -37,7 +37,7 @@ interpretation "magma operation" 'magma_op a b =
 (* Semigroups *)
 
 record isSemiGroup (M:Magma) : Prop ≝
- { associative: associative ? (op M) }.
+ { op_associative: associative ? (op M) }.
 
 record SemiGroup : Type ≝
  { magma:> Magma;