equal
deleted
inserted
replaced
83 subgroup.subset [THEN subsetD] |
83 subgroup.subset [THEN subsetD] |
84 subgroup.m_closed solve_equation) |
84 subgroup.m_closed solve_equation) |
85 |
85 |
86 lemma (in group) coset_join2: |
86 lemma (in group) coset_join2: |
87 "\<lbrakk>x \<in> carrier G; subgroup H G; x\<in>H\<rbrakk> \<Longrightarrow> H #> x = H" |
87 "\<lbrakk>x \<in> carrier G; subgroup H G; x\<in>H\<rbrakk> \<Longrightarrow> H #> x = H" |
88 \<comment>\<open>Alternative proof is to put @{term "x=\<one>"} in \<open>repr_independence\<close>.\<close> |
88 \<comment> \<open>Alternative proof is to put @{term "x=\<one>"} in \<open>repr_independence\<close>.\<close> |
89 by (force simp add: subgroup.m_closed r_coset_def solve_equation) |
89 by (force simp add: subgroup.m_closed r_coset_def solve_equation) |
90 |
90 |
91 lemma (in monoid) r_coset_subset_G: |
91 lemma (in monoid) r_coset_subset_G: |
92 "[| H \<subseteq> carrier G; x \<in> carrier G |] ==> H #> x \<subseteq> carrier G" |
92 "[| H \<subseteq> carrier G; x \<in> carrier G |] ==> H #> x \<subseteq> carrier G" |
93 by (auto simp add: r_coset_def) |
93 by (auto simp add: r_coset_def) |
829 |
829 |
830 subsection \<open>Quotient Groups: Factorization of a Group\<close> |
830 subsection \<open>Quotient Groups: Factorization of a Group\<close> |
831 |
831 |
832 definition |
832 definition |
833 FactGroup :: "[('a,'b) monoid_scheme, 'a set] \<Rightarrow> ('a set) monoid" (infixl "Mod" 65) |
833 FactGroup :: "[('a,'b) monoid_scheme, 'a set] \<Rightarrow> ('a set) monoid" (infixl "Mod" 65) |
834 \<comment>\<open>Actually defined for groups rather than monoids\<close> |
834 \<comment> \<open>Actually defined for groups rather than monoids\<close> |
835 where "FactGroup G H = \<lparr>carrier = rcosets\<^bsub>G\<^esub> H, mult = set_mult G, one = H\<rparr>" |
835 where "FactGroup G H = \<lparr>carrier = rcosets\<^bsub>G\<^esub> H, mult = set_mult G, one = H\<rparr>" |
836 |
836 |
837 lemma (in normal) setmult_closed: |
837 lemma (in normal) setmult_closed: |
838 "\<lbrakk>K1 \<in> rcosets H; K2 \<in> rcosets H\<rbrakk> \<Longrightarrow> K1 <#> K2 \<in> rcosets H" |
838 "\<lbrakk>K1 \<in> rcosets H; K2 \<in> rcosets H\<rbrakk> \<Longrightarrow> K1 <#> K2 \<in> rcosets H" |
839 by (auto simp add: rcos_sum RCOSETS_def) |
839 by (auto simp add: rcos_sum RCOSETS_def) |
895 text\<open>The quotient by the kernel of a homomorphism is isomorphic to the |
895 text\<open>The quotient by the kernel of a homomorphism is isomorphic to the |
896 range of that homomorphism.\<close> |
896 range of that homomorphism.\<close> |
897 |
897 |
898 definition |
898 definition |
899 kernel :: "('a, 'm) monoid_scheme \<Rightarrow> ('b, 'n) monoid_scheme \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'a set" |
899 kernel :: "('a, 'm) monoid_scheme \<Rightarrow> ('b, 'n) monoid_scheme \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'a set" |
900 \<comment>\<open>the kernel of a homomorphism\<close> |
900 \<comment> \<open>the kernel of a homomorphism\<close> |
901 where "kernel G H h = {x. x \<in> carrier G \<and> h x = \<one>\<^bsub>H\<^esub>}" |
901 where "kernel G H h = {x. x \<in> carrier G \<and> h x = \<one>\<^bsub>H\<^esub>}" |
902 |
902 |
903 lemma (in group_hom) subgroup_kernel: "subgroup (kernel G H h) G" |
903 lemma (in group_hom) subgroup_kernel: "subgroup (kernel G H h) G" |
904 apply (rule subgroup.intro) |
904 apply (rule subgroup.intro) |
905 apply (auto simp add: kernel_def group.intro is_group) |
905 apply (auto simp add: kernel_def group.intro is_group) |