src/HOL/Algebra/Coset.thy
changeset 69597 ff784d5a5bfb
parent 69122 1b5178abaf97
child 69749 10e48c47a549
equal deleted inserted replaced
69596:c8a2755bf220 69597:ff784d5a5bfb
   204                    subgroup.m_closed solve_equation)
   204                    subgroup.m_closed solve_equation)
   205 
   205 
   206 lemma (in group) coset_join2:
   206 lemma (in group) coset_join2:
   207   assumes "x \<in> carrier G" "subgroup H G" "x \<in> H"
   207   assumes "x \<in> carrier G" "subgroup H G" "x \<in> H"
   208   shows "H #> x = H" using assms
   208   shows "H #> x = H" using assms
   209   \<comment> \<open>Alternative proof is to put @{term "x=\<one>"} in \<open>repr_independence\<close>.\<close>
   209   \<comment> \<open>Alternative proof is to put \<^term>\<open>x=\<one>\<close> in \<open>repr_independence\<close>.\<close>
   210 by (force simp add: subgroup.m_closed r_coset_def solve_equation)
   210 by (force simp add: subgroup.m_closed r_coset_def solve_equation)
   211 
   211 
   212 lemma (in group) coset_join3:
   212 lemma (in group) coset_join3:
   213   assumes "x \<in> carrier G" "subgroup H G" "x \<in> H"
   213   assumes "x \<in> carrier G" "subgroup H G" "x \<in> H"
   214   shows "x <# H = H"
   214   shows "x <# H = H"
   932     by (simp add: \<open>X \<in> rcosets H\<close> setinv_closed)
   932     by (simp add: \<open>X \<in> rcosets H\<close> setinv_closed)
   933   ultimately show ?thesis
   933   ultimately show ?thesis
   934     by (simp add: FactGroup_def group.inv_equality)
   934     by (simp add: FactGroup_def group.inv_equality)
   935 qed
   935 qed
   936 
   936 
   937 text\<open>The coset map is a homomorphism from @{term G} to the quotient group
   937 text\<open>The coset map is a homomorphism from \<^term>\<open>G\<close> to the quotient group
   938   @{term "G Mod H"}\<close>
   938   \<^term>\<open>G Mod H\<close>\<close>
   939 lemma (in normal) r_coset_hom_Mod:
   939 lemma (in normal) r_coset_hom_Mod:
   940   "(\<lambda>a. H #> a) \<in> hom G (G Mod H)"
   940   "(\<lambda>a. H #> a) \<in> hom G (G Mod H)"
   941   by (auto simp add: FactGroup_def RCOSETS_def Pi_def hom_def rcos_sum)
   941   by (auto simp add: FactGroup_def RCOSETS_def Pi_def hom_def rcos_sum)
   942 
   942 
   943 
   943 
  1039   hence h: "h g = h g'"
  1039   hence h: "h g = h g'"
  1040     by (simp add: all FactGroup_nonempty X X' the_elem_image_unique)
  1040     by (simp add: all FactGroup_nonempty X X' the_elem_image_unique)
  1041   show "X=X'" by (rule equalityI) (simp_all add: FactGroup_subset h gX)
  1041   show "X=X'" by (rule equalityI) (simp_all add: FactGroup_subset h gX)
  1042 qed
  1042 qed
  1043 
  1043 
  1044 text\<open>If the homomorphism @{term h} is onto @{term H}, then so is the
  1044 text\<open>If the homomorphism \<^term>\<open>h\<close> is onto \<^term>\<open>H\<close>, then so is the
  1045 homomorphism from the quotient group\<close>
  1045 homomorphism from the quotient group\<close>
  1046 lemma (in group_hom) FactGroup_onto:
  1046 lemma (in group_hom) FactGroup_onto:
  1047   assumes h: "h ` carrier G = carrier H"
  1047   assumes h: "h ` carrier G = carrier H"
  1048   shows "(\<lambda>X. the_elem (h ` X)) ` carrier (G Mod kernel G H h) = carrier H"
  1048   shows "(\<lambda>X. the_elem (h ` X)) ` carrier (G Mod kernel G H h) = carrier H"
  1049 proof
  1049 proof
  1064       done
  1064       done
  1065   qed
  1065   qed
  1066 qed
  1066 qed
  1067 
  1067 
  1068 
  1068 
  1069 text\<open>If @{term h} is a homomorphism from @{term G} onto @{term H}, then the
  1069 text\<open>If \<^term>\<open>h\<close> is a homomorphism from \<^term>\<open>G\<close> onto \<^term>\<open>H\<close>, then the
  1070  quotient group @{term "G Mod (kernel G H h)"} is isomorphic to @{term H}.\<close>
  1070  quotient group \<^term>\<open>G Mod (kernel G H h)\<close> is isomorphic to \<^term>\<open>H\<close>.\<close>
  1071 theorem (in group_hom) FactGroup_iso_set:
  1071 theorem (in group_hom) FactGroup_iso_set:
  1072   "h ` carrier G = carrier H
  1072   "h ` carrier G = carrier H
  1073    \<Longrightarrow> (\<lambda>X. the_elem (h`X)) \<in> iso (G Mod (kernel G H h)) H"
  1073    \<Longrightarrow> (\<lambda>X. the_elem (h`X)) \<in> iso (G Mod (kernel G H h)) H"
  1074 by (simp add: iso_def FactGroup_hom FactGroup_inj_on bij_betw_def
  1074 by (simp add: iso_def FactGroup_hom FactGroup_inj_on bij_betw_def
  1075               FactGroup_onto)
  1075               FactGroup_onto)