src/HOL/Algebra/AbelCoset.thy
changeset 27611 2c01c0bdb385
parent 27192 005d4b953fdc
child 27717 21bbd410ba04
equal deleted inserted replaced
27610:8882d47e075f 27611:2c01c0bdb385
    58 
    58 
    59 lemmas a_r_coset_defs =
    59 lemmas a_r_coset_defs =
    60   a_r_coset_def r_coset_def
    60   a_r_coset_def r_coset_def
    61 
    61 
    62 lemma a_r_coset_def':
    62 lemma a_r_coset_def':
    63   includes struct G
    63   fixes G (structure)
    64   shows "H +> a \<equiv> \<Union>h\<in>H. {h \<oplus> a}"
    64   shows "H +> a \<equiv> \<Union>h\<in>H. {h \<oplus> a}"
    65 unfolding a_r_coset_defs
    65 unfolding a_r_coset_defs
    66 by simp
    66 by simp
    67 
    67 
    68 lemmas a_l_coset_defs =
    68 lemmas a_l_coset_defs =
    69   a_l_coset_def l_coset_def
    69   a_l_coset_def l_coset_def
    70 
    70 
    71 lemma a_l_coset_def':
    71 lemma a_l_coset_def':
    72   includes struct G
    72   fixes G (structure)
    73   shows "a <+ H \<equiv> \<Union>h\<in>H. {a \<oplus> h}"
    73   shows "a <+ H \<equiv> \<Union>h\<in>H. {a \<oplus> h}"
    74 unfolding a_l_coset_defs
    74 unfolding a_l_coset_defs
    75 by simp
    75 by simp
    76 
    76 
    77 lemmas A_RCOSETS_defs =
    77 lemmas A_RCOSETS_defs =
    78   A_RCOSETS_def RCOSETS_def
    78   A_RCOSETS_def RCOSETS_def
    79 
    79 
    80 lemma A_RCOSETS_def':
    80 lemma A_RCOSETS_def':
    81   includes struct G
    81   fixes G (structure)
    82   shows "a_rcosets H \<equiv> \<Union>a\<in>carrier G. {H +> a}"
    82   shows "a_rcosets H \<equiv> \<Union>a\<in>carrier G. {H +> a}"
    83 unfolding A_RCOSETS_defs
    83 unfolding A_RCOSETS_defs
    84 by (fold a_r_coset_def, simp)
    84 by (fold a_r_coset_def, simp)
    85 
    85 
    86 lemmas set_add_defs =
    86 lemmas set_add_defs =
    87   set_add_def set_mult_def
    87   set_add_def set_mult_def
    88 
    88 
    89 lemma set_add_def':
    89 lemma set_add_def':
    90   includes struct G
    90   fixes G (structure)
    91   shows "H <+> K \<equiv> \<Union>h\<in>H. \<Union>k\<in>K. {h \<oplus> k}"
    91   shows "H <+> K \<equiv> \<Union>h\<in>H. \<Union>k\<in>K. {h \<oplus> k}"
    92 unfolding set_add_defs
    92 unfolding set_add_defs
    93 by simp
    93 by simp
    94 
    94 
    95 lemmas A_SET_INV_defs =
    95 lemmas A_SET_INV_defs =
    96   A_SET_INV_def SET_INV_def
    96   A_SET_INV_def SET_INV_def
    97 
    97 
    98 lemma A_SET_INV_def':
    98 lemma A_SET_INV_def':
    99   includes struct G
    99   fixes G (structure)
   100   shows "a_set_inv H \<equiv> \<Union>h\<in>H. {\<ominus> h}"
   100   shows "a_set_inv H \<equiv> \<Union>h\<in>H. {\<ominus> h}"
   101 unfolding A_SET_INV_defs
   101 unfolding A_SET_INV_defs
   102 by (fold a_inv_def)
   102 by (fold a_inv_def)
   103 
   103 
   104 
   104 
   186 lemma (in additive_subgroup) is_additive_subgroup:
   186 lemma (in additive_subgroup) is_additive_subgroup:
   187   shows "additive_subgroup H G"
   187   shows "additive_subgroup H G"
   188 by (rule additive_subgroup_axioms)
   188 by (rule additive_subgroup_axioms)
   189 
   189 
   190 lemma additive_subgroupI:
   190 lemma additive_subgroupI:
   191   includes struct G
   191   fixes G (structure)
   192   assumes a_subgroup: "subgroup H \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>"
   192   assumes a_subgroup: "subgroup H \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>"
   193   shows "additive_subgroup H G"
   193   shows "additive_subgroup H G"
   194 by (rule additive_subgroup.intro) (rule a_subgroup)
   194 by (rule additive_subgroup.intro) (rule a_subgroup)
   195 
   195 
   196 lemma (in additive_subgroup) a_subset:
   196 lemma (in additive_subgroup) a_subset:
   238   show "abelian_subgroup H G"
   238   show "abelian_subgroup H G"
   239   by (unfold_locales, simp add: a_comm)
   239   by (unfold_locales, simp add: a_comm)
   240 qed
   240 qed
   241 
   241 
   242 lemma abelian_subgroupI2:
   242 lemma abelian_subgroupI2:
   243   includes struct G
   243   fixes G (structure)
   244   assumes a_comm_group: "comm_group \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>"
   244   assumes a_comm_group: "comm_group \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>"
   245       and a_subgroup: "subgroup H \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>"
   245       and a_subgroup: "subgroup H \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>"
   246   shows "abelian_subgroup H G"
   246   shows "abelian_subgroup H G"
   247 proof -
   247 proof -
   248   interpret comm_group ["\<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>"]
   248   interpret comm_group ["\<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>"]
   263         by fast
   263         by fast
   264   qed
   264   qed
   265 qed
   265 qed
   266 
   266 
   267 lemma abelian_subgroupI3:
   267 lemma abelian_subgroupI3:
   268   includes struct G
   268   fixes G (structure)
   269   assumes asg: "additive_subgroup H G"
   269   assumes asg: "additive_subgroup H G"
   270       and ag: "abelian_group G"
   270       and ag: "abelian_group G"
   271   shows "abelian_subgroup H G"
   271   shows "abelian_subgroup H G"
   272 apply (rule abelian_subgroupI2)
   272 apply (rule abelian_subgroupI2)
   273  apply (rule abelian_group.a_comm_group[OF ag])
   273  apply (rule abelian_group.a_comm_group[OF ag])
   449 subsection {* Factorization *}
   449 subsection {* Factorization *}
   450 
   450 
   451 lemmas A_FactGroup_defs = A_FactGroup_def FactGroup_def
   451 lemmas A_FactGroup_defs = A_FactGroup_def FactGroup_def
   452 
   452 
   453 lemma A_FactGroup_def':
   453 lemma A_FactGroup_def':
   454   includes struct G
   454   fixes G (structure)
   455   shows "G A_Mod H \<equiv> \<lparr>carrier = a_rcosets\<^bsub>G\<^esub> H, mult = set_add G, one = H\<rparr>"
   455   shows "G A_Mod H \<equiv> \<lparr>carrier = a_rcosets\<^bsub>G\<^esub> H, mult = set_add G, one = H\<rparr>"
   456 unfolding A_FactGroup_defs
   456 unfolding A_FactGroup_defs
   457 by (fold A_RCOSETS_def set_add_def)
   457 by (fold A_RCOSETS_def set_add_def)
   458 
   458 
   459 
   459 
   532 
   532 
   533 
   533 
   534 subsection {* Homomorphisms *}
   534 subsection {* Homomorphisms *}
   535 
   535 
   536 lemma abelian_group_homI:
   536 lemma abelian_group_homI:
   537   includes abelian_group G
   537   assumes "abelian_group G"
   538   includes abelian_group H
   538   assumes "abelian_group H"
   539   assumes a_group_hom: "group_hom (| carrier = carrier G, mult = add G, one = zero G |)
   539   assumes a_group_hom: "group_hom (| carrier = carrier G, mult = add G, one = zero G |)
   540                                   (| carrier = carrier H, mult = add H, one = zero H |) h"
   540                                   (| carrier = carrier H, mult = add H, one = zero H |) h"
   541   shows "abelian_group_hom G H h"
   541   shows "abelian_group_hom G H h"
   542 apply (intro abelian_group_hom.intro abelian_group_hom_axioms.intro)
   542 proof -
   543   apply (rule G.abelian_group_axioms)
   543   interpret G: abelian_group [G] by fact
   544  apply (rule H.abelian_group_axioms)
   544   interpret H: abelian_group [H] by fact
   545 apply (rule a_group_hom)
   545   show ?thesis apply (intro abelian_group_hom.intro abelian_group_hom_axioms.intro)
   546 done
   546     apply fact
       
   547     apply fact
       
   548     apply (rule a_group_hom)
       
   549     done
       
   550 qed
   547 
   551 
   548 lemma (in abelian_group_hom) is_abelian_group_hom:
   552 lemma (in abelian_group_hom) is_abelian_group_hom:
   549   "abelian_group_hom G H h"
   553   "abelian_group_hom G H h"
   550 by (unfold_locales)
   554 by (unfold_locales)
   551 
   555 
   686 by (rule subgroup.rcos_module [OF a_subgroup a_group,
   690 by (rule subgroup.rcos_module [OF a_subgroup a_group,
   687     folded a_r_coset_def a_inv_def, simplified monoid_record_simps])
   691     folded a_r_coset_def a_inv_def, simplified monoid_record_simps])
   688 
   692 
   689 --"variant"
   693 --"variant"
   690 lemma (in abelian_subgroup) a_rcos_module_minus:
   694 lemma (in abelian_subgroup) a_rcos_module_minus:
   691   includes ring G
   695   assumes "ring G"
   692   assumes carr: "x \<in> carrier G" "x' \<in> carrier G"
   696   assumes carr: "x \<in> carrier G" "x' \<in> carrier G"
   693   shows "(x' \<in> H +> x) = (x' \<ominus> x \<in> H)"
   697   shows "(x' \<in> H +> x) = (x' \<ominus> x \<in> H)"
   694 proof -
   698 proof -
       
   699   interpret G: ring [G] by fact
   695   from carr
   700   from carr
   696   have "(x' \<in> H +> x) = (x' \<oplus> \<ominus>x \<in> H)" by (rule a_rcos_module)
   701   have "(x' \<in> H +> x) = (x' \<oplus> \<ominus>x \<in> H)" by (rule a_rcos_module)
   697   with carr
   702   with carr
   698   show "(x' \<in> H +> x) = (x' \<ominus> x \<in> H)"
   703   show "(x' \<in> H +> x) = (x' \<ominus> x \<in> H)"
   699     by (simp add: minus_eq)
   704     by (simp add: minus_eq)