diff -r 0854edc4d415 -r 6b5f15387353 src/HOL/Algebra/Coset.thy --- a/src/HOL/Algebra/Coset.thy Tue Jun 26 19:29:14 2018 +0200 +++ b/src/HOL/Algebra/Coset.thy Tue Jun 26 20:48:49 2018 +0100 @@ -50,13 +50,9 @@ shows "H #> x = H <#> {x}" unfolding r_coset_def set_mult_def by simp -(* ************************************************************************** *) - - -(* ************************************************************************** *) (* Next five lemmas contributed by Paulo Emílio de Vilhena. *) -lemma (in subgroup) rcosets_not_empty: +lemma (in subgroup) rcosets_non_empty: assumes "R \ rcosets H" shows "R \ {}" proof - @@ -87,6 +83,9 @@ thus "r1 \ inv r2 \ H" by (metis assms(1) h1(1) h2(1) subgroup_def) qed +lemma mono_set_mult: "\ H \ H'; K \ K' \ \ H <#>\<^bsub>G\<^esub> K \ H' <#>\<^bsub>G\<^esub> K'" + unfolding set_mult_def by (simp add: UN_mono) + subsection \Stable Operations for Subgroups\ @@ -105,7 +104,17 @@ shows "h <#\<^bsub>G \ carrier := H \\<^esub> I = h <# I" using subgroup_set_mult_equality by (simp add: l_coset_eq_set_mult assms) - +lemma set_mult_consistent [simp]: + "N <#>\<^bsub>(G \ carrier := H \)\<^esub> K = N <#>\<^bsub>G\<^esub> K" + unfolding set_mult_def by simp + +lemma r_coset_consistent [simp]: + "I #>\<^bsub>G \ carrier := H \\<^esub> h = I #>\<^bsub>G\<^esub> h" + unfolding r_coset_def by simp + +lemma l_coset_consistent [simp]: + "h <#\<^bsub>G \ carrier := H \\<^esub> I = h <#\<^bsub>G\<^esub> I" + unfolding l_coset_def by simp subsection \Basic Properties of set multiplication\ @@ -1123,15 +1132,15 @@ unfolding r_coset_def Sigma_def DirProd_def FactGroup_def RCOSETS_def apply simp by blast moreover have "(\x\carrier (G Mod H). \y\carrier (K Mod N). \xa\carrier (G Mod H). \ya\carrier (K Mod N). (x <#> xa) \ (y <#>\<^bsub>K\<^esub> ya) = x \ y <#>\<^bsub>G \\ K\<^esub> xa \ ya)" - unfolding set_mult_def apply auto apply blast+. + unfolding set_mult_def by force moreover have "(\x\carrier (G Mod H). \y\carrier (K Mod N). \xa\carrier (G Mod H). \ya\carrier (K Mod N). x \ y = xa \ ya \ x = xa \ y = ya)" - unfolding FactGroup_def using times_eq_iff subgroup.rcosets_not_empty + unfolding FactGroup_def using times_eq_iff subgroup.rcosets_non_empty by (metis assms(2) assms(3) normal_def partial_object.select_convs(1)) moreover have "(\(X, Y). X \ Y) ` (carrier (G Mod H) \ carrier (K Mod N)) = carrier (G \\ K Mod H \ N)" unfolding image_def apply auto using R apply force - unfolding DirProd_def FactGroup_def RCOSETS_def r_coset_def apply auto apply force. + unfolding DirProd_def FactGroup_def RCOSETS_def r_coset_def by force ultimately show ?thesis unfolding iso_def hom_def bij_betw_def inj_on_def by simp qed