src/HOL/Algebra/Coset.thy
changeset 67443 3abf6a722518
parent 67091 1393c2340eec
child 68443 43055b016688
equal deleted inserted replaced
67442:f075640b8868 67443:3abf6a722518
    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)