src/HOL/Algebra/Group.thy
changeset 13949 0ce528cd6f19
parent 13944 9b34607cd83e
child 13975 c8e9a89883ce
equal deleted inserted replaced
13948:8d5de16583ef 13949:0ce528cd6f19
     4   Author: Clemens Ballarin, started 4 February 2003
     4   Author: Clemens Ballarin, started 4 February 2003
     5 
     5 
     6 Based on work by Florian Kammueller, L C Paulson and Markus Wenzel.
     6 Based on work by Florian Kammueller, L C Paulson and Markus Wenzel.
     7 *)
     7 *)
     8 
     8 
     9 header {* Algebraic Structures up to Commutative Groups *}
     9 header {* Groups *}
    10 
    10 
    11 theory Group = FuncSet:
    11 theory Group = FuncSet:
    12 
    12 
    13 axclass number < type
    13 (* axclass number < type
    14 
    14 
    15 instance nat :: number ..
    15 instance nat :: number ..
    16 instance int :: number ..
    16 instance int :: number .. *)
    17 
    17 
    18 section {* From Magmas to Groups *}
    18 section {* From Magmas to Groups *}
    19 
    19 
    20 text {*
    20 text {*
    21   Definitions follow Jacobson, Basic Algebra I, Freeman, 1985; with
    21   Definitions follow Jacobson, Basic Algebra I, Freeman, 1985; with
   414 locale subgroup = submagma H G +
   414 locale subgroup = submagma H G +
   415   assumes one_closed [intro, simp]: "\<one> \<in> H"
   415   assumes one_closed [intro, simp]: "\<one> \<in> H"
   416     and m_inv_closed [intro, simp]: "x \<in> H ==> inv x \<in> H"
   416     and m_inv_closed [intro, simp]: "x \<in> H ==> inv x \<in> H"
   417 
   417 
   418 declare (in subgroup) group.intro [intro]
   418 declare (in subgroup) group.intro [intro]
   419 (*
   419 
   420 lemma (in subgroup) l_oneI [intro]:
       
   421   includes l_one G
       
   422   shows "l_one (G(| carrier := H |))"
       
   423   by rule simp_all
       
   424 *)
       
   425 lemma (in subgroup) group_axiomsI [intro]:
   420 lemma (in subgroup) group_axiomsI [intro]:
   426   includes group G
   421   includes group G
   427   shows "group_axioms (G(| carrier := H |))"
   422   shows "group_axioms (G(| carrier := H |))"
   428   by rule (auto intro: l_inv r_inv simp add: Units_def)
   423   by rule (auto intro: l_inv r_inv simp add: Units_def)
   429 
   424 
   509     "[('a, 'm) monoid_scheme, ('b, 'n) monoid_scheme] => ('a \<times> 'b) monoid"
   504     "[('a, 'm) monoid_scheme, ('b, 'n) monoid_scheme] => ('a \<times> 'b) monoid"
   510     (infixr "\<times>\<^sub>g" 80)
   505     (infixr "\<times>\<^sub>g" 80)
   511   "G \<times>\<^sub>g H == (| carrier = carrier (G \<times>\<^sub>s H),
   506   "G \<times>\<^sub>g H == (| carrier = carrier (G \<times>\<^sub>s H),
   512     mult = mult (G \<times>\<^sub>s H),
   507     mult = mult (G \<times>\<^sub>s H),
   513     one = (one G, one H) |)"
   508     one = (one G, one H) |)"
   514 (*
       
   515   DirProdGroup ::
       
   516     "[('a, 'm) group_scheme, ('b, 'n) group_scheme] => ('a \<times> 'b) group"
       
   517     (infixr "\<times>\<^sub>g" 80)
       
   518   "G \<times>\<^sub>g H == (| carrier = carrier (G \<times>\<^sub>m H),
       
   519     mult = mult (G \<times>\<^sub>m H),
       
   520     one = one (G \<times>\<^sub>m H),
       
   521     m_inv = (%(g, h). (m_inv G g, m_inv H h)) |)"
       
   522 *)
       
   523 
   509 
   524 lemma DirProdSemigroup_magma:
   510 lemma DirProdSemigroup_magma:
   525   includes magma G + magma H
   511   includes magma G + magma H
   526   shows "magma (G \<times>\<^sub>s H)"
   512   shows "magma (G \<times>\<^sub>s H)"
   527   by rule (auto simp add: DirProdSemigroup_def)
   513   by rule (auto simp add: DirProdSemigroup_def)
   657     by (simp add: hom_mult [symmetric] H.r_inv del: hom_mult)
   643     by (simp add: hom_mult [symmetric] H.r_inv del: hom_mult)
   658   finally have "h x \<otimes>\<^sub>2 h (inv x) = h x \<otimes>\<^sub>2 inv\<^sub>2 (h x)" .
   644   finally have "h x \<otimes>\<^sub>2 h (inv x) = h x \<otimes>\<^sub>2 inv\<^sub>2 (h x)" .
   659   with x show ?thesis by simp
   645   with x show ?thesis by simp
   660 qed
   646 qed
   661 
   647 
   662 section {* Commutative Structures *}
   648 subsection {* Commutative Structures *}
   663 
   649 
   664 text {*
   650 text {*
   665   Naming convention: multiplicative structures that are commutative
   651   Naming convention: multiplicative structures that are commutative
   666   are called \emph{commutative}, additive structures are called
   652   are called \emph{commutative}, additive structures are called
   667   \emph{Abelian}.
   653   \emph{Abelian}.