(* Title: HOL/Algebra/Exact_Sequence.thy(* Title: HOL/Algebra/Exact_Sequence.thy Author: Martin Baillon (first part) and LC Paulson (material ported from HOL Light)
*)
section
theoryExact_Sequenceimports Elementary_Groups Solvable_Groupssubse
Elementary_Groups begin
inductive exact_seq :: "'a monoid list \ ('a \ 'a) list \ bool" where
unity: " group_hom G1 G2 f \ exact_seq ([G2, G1], [f])" |
extension: "\ exact_seq ((G # K # l), (g # q)); group H ; h \ hom G H ;
kernel G H h = image g (carrier K) \<rbrakk> \<Longrightarrow> exact_seq (H # G # K # l, h # g # q)"
inductive_simps exact_seq_end_iff [simp]: "exact_seq ([G,H], (g # q))"
inductive_simps exact_seq_cons_iff [simp]: "exact_seq ((G # K # H # l), (g # h # q))"
abbreviation exact_seq_arrow :: "('a \ 'a) \ 'a monoid list \ ('a \ 'a) list \ 'a monoid \ 'a monoid list \ ('a \ 'a) list"
(\<open>(\<open>indent=3 notation=\<open>mixfix exact_seq\<close>\<close>_ / \<longlongrightarrow>\<index> _)\<close> [1000, 60]) where"exact_seq_arrow f textension "\<lbrakk> exact_seq ((G # K # l), (g # q)); group H ; h \<in> hom G H ;kernel =image( K) \<rbrakk> \<Longrightarrow> exact_seq (H # G # K # l, h # g # q)"
subsection \<open>Basic Properties\<close>
lemma exact_seq_length1: "exact_seq t \ length (fst t) = Suc (length (snd t))" by (induct t rule: exact_seq.induct) auto
lemma exact_seq_length2: "exact_seq t \ length (snd t) \ Suc 0" by (induct t rule: exact_seq.induct) auto
lemma dropped_seq_is_exact_seq: "exact_seq (G, F)"and"(i :: nat) < length F" shows"exact_seq (drop i G, drop i F)"
proof- have"exact_seq (drop i (fst t), drop i (snd t))"if"exact_seq t""i < length (snd t)"for t i using that proof (induction arbitrary: i) case(unity G2) ?case by (simp add: exact_seq) next case (extension G K l g q H h) show ?case proof (cases) assume"i = 0"thus ?case using exact_seq.extension[OF extension.hyps] by simp next assumei thenobtain k where"k < length (snd (G # K java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 using extensionprems auto thusthesis extensionIH by qed qed thus ?thesis using assms qed
lemmaexact_seq_imp_exact_hom assumesexact_seqG1 lq \<longlongrightarrow>\<^bsub>g1\<^esub> G2 \<longlongrightarrow>\<^bsub>g2\<^esub> G3" showsg1 ( G1= g2 proof (nity G1G2)thuscase have"(hd (tl (snd t))) ` (carrier (hd (tl (tl (fst t))))) =
kernel (hd (tl (fst t)) by (simpadd: exact_sequnity if"exact_seq ""length (fst tt) \ 3 \ length (snd t) \ 2" for t using that proofinduction
unityG2) thenshow ?caseby auto next case (extension G lnext thenshow ?caseby auto qed with assms show ?thesis thenobtainkwhere < sndG#K# ,#q)" i = Suc k"
ed
lemma exact_seq_imp_exact_hom_arbitrary: assumes"exact_seq (G, F)" and"Suc i < length F" qed proofqed have"length (drop i F \ 2" "length (drop i G) \ 3" usingassms)exact_seq_length1OF assms1)by thenobtain l wheredropG ( !i)#( ! Suc))# G!(uc (Suc) # ljava.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 50 by exact_seq_length2[OF assms1) assms(2) by (simp add: drop_Suc)
le_eq_less_or_eqle_imp_less_Suc .sel2)) thusassumesexact_seqG1#lq usingshows carrier ernelg2
[of! G!(Suc" ! ( ( )" ]ajava.lang.StringIndexOutOfBoundsException: Index 89 out of bounds for length 89 qed
lemma exact_seq_imp_group_hom :exact_seqand"length (fst t) \ 3 \ length (snd t) \2" for t assumes"exact_seq ((G # l, q)) \\<^bsub>g\<^esub> H" shows"group_hom G H g"
proof- have aux_lemma: "group_hom (hd (tl (fst t))) (hd (fst t)) (hd(snd t))"if"exact_seq t"for t using that
(induction caseunity fjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
then ? java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 next case extensionG gq h) thenshow ?caseunfoldinggroup_hom_def by auto qed
?thesis using [OF ] by simp qed
lemma and "Suc i < length Fshows Suci) `( G Suci)) =kernelG S ) (G ! i (F! ) assumes" (G,)"and(:: nat) " shows"group_hom (G ! (Suc i)) (G ! i) (F ! i)" proof - have assms() exact_seq_length1[OF assms(1] auto using assms(2) exact_seq_length1[OF assms(1)] by autothen l q
l q where"drop i nd " i F ( ) (F !( i)) #" anddrop=F!i) " by (metis le_imp_less_Sucprod.(2))
le_eq_less_or_eq dropped_seq_is_exact_seq (1), i (java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 14
dropped_seq_is_exact_seq,iassms
exact_seq_imp_group_hom[of "using that qed
\<open>Link Between Exact Sequences and Solvable Conditions\<close>showcaseby
lemma exact_seq_solvable_imp showunfoldinggroup_hom_def byauto assumesexact_seq,])\<longlongrightarrow>\<^bsub>g1\<^esub> G2 \<longlongrightarrow>\<^bsub>g2\<^esub> G3" "inj_on g1 (carrier G1)"
exact_seq_imp_group_hom_arbitrary "exact_seq (G F)""i : nat < F" proof
G2:solvable have"have" (dropF)\<ge> 1" "length (drop i G) \<ge> 2"using(2 exact_seq_length1 (1)] by auto using exact_seq_imp_group_hom_arbitraryOFassms ofSuc]bysimp hence"solvable where"drop i G ( i) # (G ! (Suc i)) # l" using group_hom.inj_hom_imp_solvable[of G1 G2 g1] assms(2) G2 by simp moreoverhave"group_hom G2 G3 g2"
usingexact_seq_imp_group_hom_arbitraryOF(1, 0] by simp hence"solvable G3" usingby ( Cons_nth_drop_Suc assms fst_conv ultimatelyshow ?thesis by simp qed
lemma exact_seq_solvable_recip : assumes"exact_seq ([G1],[]) \\<^bsub>g1\<^esub> G2 \\<^bsub>g2\<^esub> G3" andthusthesis andg2 `(carrier =carrier shows [of" !"" !( i"" ! ] by simp proof - assume"(solvable G1) \ (solvable G3)" hence G1: " G1"and G3 "solvableG3 by have g1: "group_hom G1 G2 g1"and g2: "group_hom G2 G3 g2" using" ([G1,] <^bsub>g1\<^esub> G2 \\<^bsub>g2\<^esub> G3"
exact_seq_imp_group_hom_arbitrary[OF assms(1), of 0] by auto "inj_on g1 (carrier G1)" show ?thesis "solvable G2 \ (solvable G1) \ (solvable G3)" using solvable_condition g1g2 (3)]
xact_seq_imp_exact_homassms]G1byauto qed
lemma exact_seq_mon_eq_triviality: "exact_seq ([D,C,B,A], [h,g,f]) \ inj_on h (carrier C) \ trivial_homomorphism B C g" by (auto simp: trivial_homomorphism_def kernel_def group.is_monoid inj_on_one_iff' image_def) blast
lemma exact_sequence_sum_lemma: assumes"comm_group G"and h: "h \ iso A C" and k: "k \ iso B D" and: "exact_seq ([D,G,A], [g,i])""exact_seq ([C,G,B], [f,j])" and fih withassms have"inj_on k (carrier D)" and gjk: "\x. x \ carrier B \ g(j x) = k x" shows"\(, y. ix\\<^bsub>G\<^esub> j y) \ Group.iso (A \\ B) G \ (\z. (f z, g z)) \ Group.iso G (C \\ D)"
(is? <in> _ \<and> ?gf \<in> _") proof (rule epi_iso_compose_rev) interpret comm_group G by (rule assms) interpret f:group_hom f usingwith assms ?rhs interpretapply (auto simp: group_hom trivial_group_def hom_one using ex (simp: group_hom_def) interpret i: group_hom A Gjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 8 using ex (simp add trivial_group_def) by metis.inj_iff_trivial_ker group_hom group_hom_axioms.intro) using exjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 have kerf: "kernel G C f = j ` carrier B"and"group A""group B""i \ hom A G" using ex by (auto simp: group_hom_def group_hom_axioms_def) thenobtainh' where "'\<in> hom C A" "(\<forall>x \<in> carrier A. h'(h x) = x)"
> carrier C h(h'y)= yy" and group_isomorphismsAC h '" using h by (auto simp: group.iso_iff_group_isomorphisms group_isomorphisms_def) havelemma exact_seq_epi_eq_triviality unfolding apply (rule b ( simp: kernel_def) using xact_seq_mon_eq_triviality showhomgf "gf \ hom G (C \\ D)"
sing by (simp: hom_paired) show"? \ epi (A \\ B) G" proof (clarsimp add: epi_iff_subset) fixx assume x: "x \ carrier G" with by (simp add: kernel_def hom_in_carrierhhfih with kerf obtain y where y: "y \ carrier B" "j y = x \\<^bsub>G\<^esub> inv\<^bsub>G\<^esub>(i(h'(f x)))" by auto
java.lang.StringIndexOutOfBoundsException: Index 222 out of bounds for length 222 by(meson \<open>h' \<in> hom C A\<close> x f.hom_closed hom_in_carrier i.hom_closed inv_closed m_lcomm) alsohave"proof (rule epi_iso_compose_rev) usingjava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73 finallyshowx \<in> (\<lambda>(x, y). i x \<otimes>\<^bsub>G\<^esub> j y) ` (carrier A \<times> carrier B)"
x y (clarsimp: image_def apply (rule_tac x="h'(finterpretg: group_hom G D g apply(rule_tac x=y inbexI, auto by( \<open>h' \<in> hom C A\<close> f.hom_closed hom_in_carrier) qed show"(java.lang.StringIndexOutOfBoundsException: Range [0, 156) out of bounds for length 30
rule.iso_eqwhere="(x,y). (h x,k y)"]) using ex apply (auto simp kerf " G C f = j` carrier B"and" A""group B"" \ hom A G" apply ( f.hom_closedfr_one imageI apply (metis g.hom_closed obtain h' where "'<in> hom C A" "(\<forall>x \<in> carrier A. h'(h x) = x)" done qed
subsection \<open>Splitting lemmas and Short exact sequences\<close> text<> from HOL Light by LCP\<close>
definition short_exact_sequence where"short_exact_sequence A B C f g \ \T1 T2 e1 e2. exact_seq ([T1,A,B,C,T2], [e1,f,g,e2]) \ trivial_group T1 \ trivial_group T2"
lemma short_exact_sequenceD (rulehom_group_mult) assumes"short_exact_sequence A B C f g"shows"exact_seq ([A,B,C], [f,g by(simp_all add: group_hom_def hom_of_fst [unfolded o_def] hom_of_snd [unfolded o_def]) using assms apply (autousingexby (simpadd: hom_paired)
( addepi_iff_subset. group_homkernel_to_trivial_group) by (metis (no_types, lifting) group_hom.inj_iff_trivial_ker group_hom.intro group_hom_axioms.intro
hom_one image_empty image_insert mem_Collect_eq mon_def trivial_group_def)
mmashort_exact_sequence_iff: "short_exact_sequencefix x proof - have"short_exact_sequence A B C f g" ifassume x: " \ carrier G" proof - show ?thesis unfolding short_exact_sequence_def proof(ntro conjI) haveby (simp add: kernel_def hom_in_carrier hh' fih) using that by (simpadd: kernel_def epi_def) moreoverhave"ernelCBg = {\\<^bsub>C\<^esub>}" using that "i(h (fx) \<^bsub>G\<^esub> (x \\<^bsub>G\<^esub> inv\<^bsub>G\<^esub> i (h' (f x))) = x \\<^bsub>G\<^esub> (i (h' (f x)) \\<^bsub>G\<^esub> inv\<^bsub>G\<^esub> i (h' (f x)))" ultimatelyshow"exact_seq ([singleton_group (one A), A, B, C, singleton_group (one C)], [\x. \\<^bsub>A\<^esub>, f, g, id])" using that by (simpadd: group_hom_defgroup_hom_axioms_def group.id_hom_singleton qed auto qed thenshow ?thesis using short_exact_sequenceD by blast qed
lemmaapply (rule_tac x="h'(f x)"in bexI) assumes"exact_seq ([D,C,B,A], [h,g,f])"" apply (rule_tac x=y in bexI, auto) shows meson using assms applysjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12 by (metis (no_types) group_homimage_from_trivial_group group_homiso_iff
group_hom.kernel_to_trivial_group group_hom.trivial_ker_imp_inj group_hom_axioms.intro group_hom_def ex
lemma splitting_sublemma_gen:
a (metisfhom_closed.r_one imageI "subgroup "and"H K \ {one B}" and eq: "set_mult B H K = carrier B" showsdone proof - interpret KB subgroup java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28 by (rule " A B C T1 T2 e1 e2. exact_seq ([T1,A,B,C,T2], [e1,f,g,e2]) \ trivial_group T1 \ trivial_group T2" interpret fAB: group_hom A B f using ex by simp interpret gBC: group_homassumesshort_exact_sequence f"shows"xact_seq(AB] fg)\<and> f \<in> epi B A \<and> g \<in> mon C B" using ex by (simp simp: epi_iff_subset.introgroup_homkernel_to_trivial_group.intro "group A" group""group "and kerg kernel C =f` carrier A" using ex autogroup_hom_def have ker_eq: "kernel B C g = H" using ex image_emptyimage_insert mon_def) then subgroup BB""g \ iso (subgroup_generated B K) C" proof - interpret gBC: group_hom B C g using ex by short_exact_sequenceD[ ex by(simp : group_hom_axioms_def have"group A" [OF] by( add group_hom_axioms_def usingexsimp group_hom_axioms_def) thenhave" \bsub>B\<^esub> g' ` carrier C = carrier B" using" A"groupgroup interpretB = carrier" using assms by (autousinggroup_semidirect_sum_ker_image[f g g CCB]short_exact_sequenceDOF ex] let ?H = "f ` carrier A" letK kernel f show thesis proof show"?H \ B" by (simp add: gBC.normal_kernel flip "kernel B C \ (g' ` carrier C) \ {\\<^bsub>B\<^esub>}" "(kernel B C g) <#>\<^bsub>B\<^esub> (g' ` carrier C) = carrier B" show"?K \ B" by (rule f'by (auto simp: *) show? <> ?K\<>java.lang.StringIndexOutOfBoundsException: Index 104 out of bounds for length 104
* byjava.lang.StringIndexOutOfBoundsException: Range [21, 22) out of bounds for length 21 show"f \ Group.iso A (subgroup_generated B ?H)" using ex by (simp add: by( add .His_group gBCgroup_homgroup_hom_axioms_def have C: "C = subgroup_generated C(g ` carrier B)"
surj simp: gBC) show"g \ Group.iso (subgroup_generated B ?K) C" apply (subst C)
splitting_sublemma_gen[ exrefl] using * by (auto ex short_exact_sequenceB f g' g hom C B" and gg': "\z. z \ carrier C \ g(g' z) = z"in CBandgg java.lang.StringIndexOutOfBoundsException: Index 141 out of bounds for length 141 qed qed
lemma - assumes ex: " *: " A"" B"groupC" and inv: "(\x. x \ carrier A \ f'(f x) = x)" and injf: "inj_on f (carrier A)"andby simp_all'java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 obtains H K where"H \ B" "K \ B" "H \ K \ {one B}" "set_mult B H K = carrier B" "f \ iso A (subgroup_generated B H)" "g \ iso (subgroup_generated B K) C" proof interpret fAB: group_hom A B f using ex by simp interpret gBC: group_hom B C g using ex by (simp add: group_hom_def group_hom_axioms_def) have"group A""group B""group C"and kerg: "kernel B C g = f ` carrier A" using ex by (auto simp: group_hom_def group_hom_axioms_def) have iso: "f' \ f \ Group.iso A A" using ex by (auto simp: inv intro: group.iso_eq [OF \<open>group A\<close> id_iso]) show thesis by (metis that splitting_lemma_left_gen [OF ex f' iso injf surj]) qed
lemma splitting_lemma_right_gen: assumes ex: "short_exact_sequence C B A g f"and g': "g'\<in> hom C B" and iso: "(g \<circ> g') \<in> iso C C" obtains H K where"H \ B" "subgroup K B" "H \ K \ {one B}" "set_mult B H K = carrier B" "f \ iso A (subgroup_generated B H)" "g \ iso (subgroup_generated B K) C" proof interpret fAB: group_hom A B f using short_exact_sequenceD [OF ex] by (simp add: group_hom_def group_hom_axioms_def) interpret gBC: group_hom B C g using short_exact_sequenceD [OF ex] by (simp add: group_hom_def group_hom_axioms_def) have *: "f ` carrier A \ g' ` carrier C = {\\<^bsub>B\<^esub>}" "f ` carrier A <#>\<^bsub>B\<^esub> g' ` carrier C = carrier B" "group A""group B""group C" "kernel B C g = f ` carrier A" using group_semidirect_sum_ker_image [of g g' C C B] short_exact_sequenceD [OF ex] by (simp_all add: g' iso group_hom_def) show"kernel B C g \ B" by (simp add: gBC.normal_kernel) show"(kernel B C g) \ (g' ` carrier C) \ {\\<^bsub>B\<^esub>}" "(kernel B C g) <#>\<^bsub>B\<^esub> (g' ` carrier C) = carrier B" by (auto simp: *) show"f \ Group.iso A (subgroup_generated B (kernel B C g))" by (metis "*"(6) fAB.group_hom_axioms group.iso_onto_image group_hom_def short_exact_sequenceD [OF ex]) show"subgroup (g' ` carrier C) B" using splitting_sublemma by (simp add: fAB.H.is_group g' gBC.is_group group_hom.img_is_subgroup group_hom_axioms_def group_hom_def) thenshow"g \ Group.iso (subgroup_generated B (g' ` carrier C)) C" by (metis (no_types, lifting) iso_iff fAB.H.hom_from_subgroup_generated gBC.homh image_comp inj_on_imageI iso subgroup.carrier_subgroup_generated_subgroup) qed
lemma splitting_lemma_right: assumes ex: "short_exact_sequence C B A g f"and g': "g'\<in> hom C B" and gg': "\<And>z. z \<in> carrier C \<Longrightarrow> g(g' z) = z" obtains H K where"H \ B" "subgroup K B" "H \ K \ {one B}" "set_mult B H K = carrier B" "f \ iso A (subgroup_generated B H)" "g \ iso (subgroup_generated B K) C" proof - have *: "group A""group B""group C" using group_semidirect_sum_ker_image [of g g' C C B] short_exact_sequenceD [OF ex] by (simp_all add: g' group_hom_def) show thesis apply (rule splitting_lemma_right_gen [OF ex g' group.iso_eq [OF _ id_iso]]) using * apply (auto simp: gg' intro: that) done qed
end
B H K = carrier B" "f \ iso A (subgroup_generated B H)" "g \ iso (subgroup_generated B K) C" proof interpret fAB: group_hom f java.lang.StringIndexOutOfBoundsException: Index 100 out of bounds for length 100 using OF] simp addgroup_hom_def) interpret gBC: group_hom B C g usingshort_exact_sequenceD ex (simp: group_hom_def) have *: "f ` using by (auto simp: group_hom_defjava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
f `carrierA<#><^bsub\<^esub> g' ` carrier C = carrier B" "groupA " B" " C" "kernel B Cg f `carrier A"
[ 'C C ] short_exact_sequenceD [OF ex by (simp_all add: g' iso group_hom_def) show" let ?="kernel BA '" byjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7 show( g) \<inter> (g' ` carrier C) \<subseteq> {\<one>\<^bsub>B\<^esub>}" "(kernel B C g) <#>\<^bsub>B\<^esub> (g' ` carrier C) = carrier B" by( simp show" "H\<inter subseteq {<one>\<^bsub>B\<^esub>}" "?H <#>\<^bsub>B\<^esub> ?K = carrier B" by (metis using auto show"subgroup (g' ` carrier C) B" using splitting_sublemma
simp:fAB. g' gBC.is_group group_hom.img_is_subgroup group_hom_axioms_def group_hom_def) thenshow"g \ Group.iso (subgroup_generated B (g' ` carrier C)) C" by (metis (no_types, liftingusingby( add.subgroup_generated_group_carrier qed
lemma apply (rule OF refl]) assumes:" C Ag "and:"'\ hom "and':"z. z \ carrier C \ g(g' z) = z" obtains H K where"H \ B" "subgroup K B" "H \ K \ {one B}" "set_mult B H K = carrier B" "f qed proof- have group group " java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 using group_semidirect_sum_ker_image [of g g' C C B] short_exact_sequenceD [OF ex] by( add: g' group_hom_def) show thesis apply (rule splitting_lemma_right_gen [OF ex g' group.iso_eq [OF _ id_iso]]) using * apply (auto simp: gg' intro: that) done qed
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.15Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.