| author | wenzelm | 
| Mon, 02 Oct 2017 13:45:36 +0200 | |
| changeset 66748 | 3efac90a11a7 | 
| parent 65416 | f707dbcf11e3 | 
| child 66760 | d44ea023ac09 | 
| permissions | -rw-r--r-- | 
| 65416 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 1 | (* Title: HOL/Algebra/More_Group.thy | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 2 | Author: Jeremy Avigad | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 3 | *) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 4 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 5 | section \<open>More on groups\<close> | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 6 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 7 | theory More_Group | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 8 | imports | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 9 | Ring | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 10 | begin | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 11 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 12 | text \<open> | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 13 | Show that the units in any monoid give rise to a group. | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 14 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 15 | The file Residues.thy provides some infrastructure to use | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 16 | facts about the unit group within the ring locale. | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 17 | \<close> | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 18 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 19 | definition units_of :: "('a, 'b) monoid_scheme => 'a monoid" where
 | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 20 | "units_of G == (| carrier = Units G, | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 21 | Group.monoid.mult = Group.monoid.mult G, | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 22 | one = one G |)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 23 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 24 | lemma (in monoid) units_group: "group(units_of G)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 25 | apply (unfold units_of_def) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 26 | apply (rule groupI) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 27 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 28 | apply (subst m_assoc) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 29 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 30 | apply (rule_tac x = "inv x" in bexI) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 31 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 32 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 33 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 34 | lemma (in comm_monoid) units_comm_group: "comm_group(units_of G)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 35 | apply (rule group.group_comm_groupI) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 36 | apply (rule units_group) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 37 | apply (insert comm_monoid_axioms) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 38 | apply (unfold units_of_def Units_def comm_monoid_def comm_monoid_axioms_def) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 39 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 40 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 41 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 42 | lemma units_of_carrier: "carrier (units_of G) = Units G" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 43 | unfolding units_of_def by auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 44 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 45 | lemma units_of_mult: "mult(units_of G) = mult G" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 46 | unfolding units_of_def by auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 47 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 48 | lemma units_of_one: "one(units_of G) = one G" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 49 | unfolding units_of_def by auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 50 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 51 | lemma (in monoid) units_of_inv: "x : Units G ==> m_inv (units_of G) x = m_inv G x" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 52 | apply (rule sym) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 53 | apply (subst m_inv_def) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 54 | apply (rule the1_equality) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 55 | apply (rule ex_ex1I) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 56 | apply (subst (asm) Units_def) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 57 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 58 | apply (erule inv_unique) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 59 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 60 | apply (rule Units_closed) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 61 | apply (simp_all only: units_of_carrier [symmetric]) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 62 | apply (insert units_group) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 63 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 64 | apply (subst units_of_mult [symmetric]) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 65 | apply (subst units_of_one [symmetric]) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 66 | apply (erule group.r_inv, assumption) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 67 | apply (subst units_of_mult [symmetric]) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 68 | apply (subst units_of_one [symmetric]) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 69 | apply (erule group.l_inv, assumption) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 70 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 71 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 72 | lemma (in group) inj_on_const_mult: "a: (carrier G) ==> inj_on (%x. a \<otimes> x) (carrier G)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 73 | unfolding inj_on_def by auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 74 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 75 | lemma (in group) surj_const_mult: "a : (carrier G) ==> (%x. a \<otimes> x) ` (carrier G) = (carrier G)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 76 | apply (auto simp add: image_def) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 77 | apply (rule_tac x = "(m_inv G a) \<otimes> x" in bexI) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 78 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 79 | (* auto should get this. I suppose we need "comm_monoid_simprules" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 80 | for ac_simps rewriting. *) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 81 | apply (subst m_assoc [symmetric]) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 82 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 83 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 84 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 85 | lemma (in group) l_cancel_one [simp]: | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 86 | "x : carrier G \<Longrightarrow> a : carrier G \<Longrightarrow> (x \<otimes> a = x) = (a = one G)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 87 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 88 | apply (subst l_cancel [symmetric]) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 89 | prefer 4 | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 90 | apply (erule ssubst) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 91 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 92 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 93 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 94 | lemma (in group) r_cancel_one [simp]: "x : carrier G \<Longrightarrow> a : carrier G \<Longrightarrow> | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 95 | (a \<otimes> x = x) = (a = one G)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 96 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 97 | apply (subst r_cancel [symmetric]) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 98 | prefer 4 | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 99 | apply (erule ssubst) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 100 | apply auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 101 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 102 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 103 | (* Is there a better way to do this? *) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 104 | lemma (in group) l_cancel_one' [simp]: "x : carrier G \<Longrightarrow> a : carrier G \<Longrightarrow> | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 105 | (x = x \<otimes> a) = (a = one G)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 106 | apply (subst eq_commute) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 107 | apply simp | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 108 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 109 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 110 | lemma (in group) r_cancel_one' [simp]: "x : carrier G \<Longrightarrow> a : carrier G \<Longrightarrow> | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 111 | (x = a \<otimes> x) = (a = one G)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 112 | apply (subst eq_commute) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 113 | apply simp | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 114 | done | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 115 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 116 | (* This should be generalized to arbitrary groups, not just commutative | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 117 | ones, using Lagrange's theorem. *) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 118 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 119 | lemma (in comm_group) power_order_eq_one: | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 120 | assumes fin [simp]: "finite (carrier G)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 121 | and a [simp]: "a : carrier G" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 122 | shows "a (^) card(carrier G) = one G" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 123 | proof - | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 124 | have "(\<Otimes>x\<in>carrier G. x) = (\<Otimes>x\<in>carrier G. a \<otimes> x)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 125 | by (subst (2) finprod_reindex [symmetric], | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 126 | auto simp add: Pi_def inj_on_const_mult surj_const_mult) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 127 | also have "\<dots> = (\<Otimes>x\<in>carrier G. a) \<otimes> (\<Otimes>x\<in>carrier G. x)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 128 | by (auto simp add: finprod_multf Pi_def) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 129 | also have "(\<Otimes>x\<in>carrier G. a) = a (^) card(carrier G)" | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 130 | by (auto simp add: finprod_const) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 131 | finally show ?thesis | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 132 | (* uses the preceeding lemma *) | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 133 | by auto | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 134 | qed | 
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 135 | |
| 
f707dbcf11e3
more approproiate placement of theories MiscAlgebra and Multiplicate_Group
 haftmann parents: diff
changeset | 136 | end |