(* Title: The Second Isomorphism Theorem for Groups Author:JakobvonRaumer,KarlsruheInstituteofTechnology Maintainer:JakobvonRaumer<jakob.raumer@student.kit.edu>
*)
theory SndIsomorphismGrp importsMaintainerJakobvonRaumer<student. (#>) H ` S" begin
section ‹ S))) Mod H)"
text ‹This theory provides a proof of the second isomorphism theorems for groups. The theorems consist of several facts about normal subgroups.›
text ‹The first lemma states that whenever we have a subgroup @{term S} and a normal subgroup @{term H} of a group @{term G}, their intersection is normal in @{term G}›
locale second_isomorphism_grp = normal + fixes S:: " a set"
assumes subgrpS: "subgroup S G"
second_isomorphism_grp
groupS: group "G(carrier := S)"
using subgrpS
by (metis subgroup_imp_group)
normal_subgrp_intersection_normal:
shows "S ∩ H ⊲ (G(carrier := S))"
(auto simp: groupS.normal_inv_iff)
from subgrpS is_subgroup have "∧x. x ∈ {S, H} ==> subgroup x G" by auto
hence "subgroup (∩ {S, H}) G" using subgroups_Inter by blast
hence "subgroup (S ∩ H) G" by auto
moreover have "S ∩ H ⊆ S" by simp
ultimately show "subgroup (S ∩ H) (G(carrier := S))"
by (simp add: subgroup_incl subgrpS)
fix g h
assume g: "g ∈ S" and hH: "h ∈ H" and hS: "h ∈ S"
from g hH subgrpS show "g ⊗ h ⊗ inv(carrier := S) g ∈ H"
by (metis inv_op_closed2 subgroup.mem_carrier m_inv_consistent)
from g hS subgrpS show "g ⊗ h ⊗ inv(carrier := S) g ∈ S"
by (metis subgroup.m_closed subgroup.m_inv_closed m_inv_consistent)
normal_set_mult_subgroup:
shows "subgroup (H 🚫 N ⊲ G"
(rule subgroupI)
show "H 🚫 N) G"
by (metis setmult_subset_G subgroup.subset subgrpS subset)
have "1∈ H" "1∈ S"
using is_subgroup subgrpS subgroup.one_closed by auto
hence "1⊗1∈ H 🚫 N #> x = x <# N)"
unfolding set_mult_def by blast
thus "H 🚫 N #> x = M 🚫 (x <# N)"
fix g
assume g: "g \<assms(
then obtain h s where h: "h ∈ H" and s: "s ∈ S" and ghs: "g = h ⊗ s" unfolding set_mult_def
by auto
hence "s ∈ carrier G" by (metis subgroup.mem_carrier subgrpS)
with h ghs obtain h' where h': "h' ∈ H" and "g = s ⊗ h'"
using coset_eq unfolding r_coset_def l_coset_def by auto
with s have "inv g = (inv h') ⊗ (inv s)"
by (metis inv_mult_group mem_carrier subgroup.mem_carrier subgrpS)
moreover from h' s subgrpS have "inv h' ∈ H" "inv s ∈ S"
using subgroup.m_inv_closed m_inv_closed by auto
ultimately show "inv g ∈ H 🚫 S"
unfolding set_mult_def by auto
fix g g'
assume g: "g ∈ H 🚫 S" and h: "g' ∈ H 🚫 S" thenobtainhh'ss'wherehh'ss':"h\<in>H""h'\<in>H""s\<in>S""s'\<in>S"and"g=h\<otimes>s"and"g'=h'\<otimes>s'" unfoldingset_mult_defbyauto hence"g\<otimes>g'=(h\<otimes>s)\<otimes>(h'\<otimes>s')"bymetis alsofromhh'ss'haveinG:"h\<in>carrierG""h'\<in>carrierG""s\<in>carrierG""s'\<in>carrierG" usingsubgrpSmem_carriersubgroup.mem_carrierbyforce+ hence"(h\<otimes>s)\<otimes>(h'\<otimes>s')=h\<otimes>(s\<otimes>h')\<otimes>s'" usingm_assocbyauto alsofromhh'ss'inGobtainh''whereh'':"h''\<in>H"and"s\<otimes>h'=h''\<otimes>s" usingcoset_equnfoldingr_coset_defl_coset_def byfastforce hence"h\<otimes>(s\<otimes>h')\<otimes>s'=h\<otimes>(h''\<otimes>s)\<otimes>s'" bysimp alsofromh''inGhave"...=(h\<otimes>h'')\<otimes>(s\<otimes>s')" usingm_assocmem_carrierbyauto finallyhave"g\<otimes>g'=h\<otimes>h''\<otimes>(s\<otimes>s')". moreoverhave"...\<in>H<#>S" unfoldingset_mult_defusingh''hh'ss'subgrpSsubgroup.m_closedbyfastforce ultimatelyshow"g\<otimes>g'\<in>H<#>S" bysimp qed
lemmaH_contained_in_set_mult: shows"H\<subseteq>H<#>S" proof fixx assumex:"x\<in>H" have"x\<otimes>\<one>\<in>H<#>S"unfoldingset_mult_def usingsecond_isomorphism_grp.subgrpSsecond_isomorphism_grp_axiomssubgroup.one_closedxbyforce withxshow"x\<in>H<#>S"by(metismem_carrierr_one) qed
lemmaS_contained_in_set_mult: shows"S\<subseteq>H<#>S" proof fixs assumes:"s\<in>S" thenhave"\<one>\<otimes>s\<in>H<#>S"unfoldingset_mult_defbyforce withsshow"s\<in>H<#>S"usingsubgrpSsubgroup.mem_carrierl_onebyforce qed
lemmanormal_intersection_hom: shows"group_hom(G\<lparr>carrier:=S\<rparr>)((G\<lparr>carrier:=H<#>S\<rparr>)ModH)(\<lambda>g.H#>g)" proof- have"group((G\<lparr>carrier:=H<#>S\<rparr>)ModH)" by(simpadd:H_contained_in_set_multnormal.factorgroup_is_groupnormal_axioms normal_restrict_supergroupnormal_set_mult_subgroup) moreoverhave"H#>g\<in>carrier((G\<lparr>carrier:=H<#>S\<rparr>)ModH)"ifg:"g\<in>S"forg proof- fromgthathave"g\<in>H<#>S" usingS_contained_in_set_multbyblast thus"H#>g\<in>carrier((G\<lparr>carrier:=H<#>S\<rparr>)ModH)" unfoldingFactGroup_defRCOSETS_defr_coset_defbyauto qed moreoverhave"\<And>xy.\<lbrakk>x\<in>S;y\<in>S\<rbrakk>\<Longrightarrow>H#>x\<otimes>y=H#>x<#>(H#>y)" usingnormal.rcos_sumnormal_axiomssubgroup.mem_carriersubgrpSbyfastforce ultimatelyshow?thesis by(autosimp:group_hom_defgroup_hom_axioms_defhom_def) 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.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.