src/HOL/Algebra/Coset.thy
changeset 35847 19f1f7066917
parent 35416 d8d7d1b785af
child 35848 5443079512ea
equal deleted inserted replaced
35846:2ae4b7585501 35847:19f1f7066917
     6 theory Coset imports Group begin
     6 theory Coset imports Group begin
     7 
     7 
     8 
     8 
     9 section {*Cosets and Quotient Groups*}
     9 section {*Cosets and Quotient Groups*}
    10 
    10 
    11 constdefs (structure G)
    11 definition
    12   r_coset    :: "[_, 'a set, 'a] \<Rightarrow> 'a set"    (infixl "#>\<index>" 60)
    12   r_coset    :: "[_, 'a set, 'a] \<Rightarrow> 'a set"    (infixl "#>\<index>" 60)
    13   "H #> a \<equiv> \<Union>h\<in>H. {h \<otimes> a}"
    13   where "H #>\<^bsub>G\<^esub> a \<equiv> \<Union>h\<in>H. {h \<otimes>\<^bsub>G\<^esub> a}"
    14 
    14 
       
    15 definition
    15   l_coset    :: "[_, 'a, 'a set] \<Rightarrow> 'a set"    (infixl "<#\<index>" 60)
    16   l_coset    :: "[_, 'a, 'a set] \<Rightarrow> 'a set"    (infixl "<#\<index>" 60)
    16   "a <# H \<equiv> \<Union>h\<in>H. {a \<otimes> h}"
    17   where "a <#\<^bsub>G\<^esub> H \<equiv> \<Union>h\<in>H. {a \<otimes>\<^bsub>G\<^esub> h}"
    17 
    18 
       
    19 definition
    18   RCOSETS  :: "[_, 'a set] \<Rightarrow> ('a set)set"   ("rcosets\<index> _" [81] 80)
    20   RCOSETS  :: "[_, 'a set] \<Rightarrow> ('a set)set"   ("rcosets\<index> _" [81] 80)
    19   "rcosets H \<equiv> \<Union>a\<in>carrier G. {H #> a}"
    21   where "rcosets\<^bsub>G\<^esub> H \<equiv> \<Union>a\<in>carrier G. {H #>\<^bsub>G\<^esub> a}"
    20 
    22 
       
    23 definition
    21   set_mult  :: "[_, 'a set ,'a set] \<Rightarrow> 'a set" (infixl "<#>\<index>" 60)
    24   set_mult  :: "[_, 'a set ,'a set] \<Rightarrow> 'a set" (infixl "<#>\<index>" 60)
    22   "H <#> K \<equiv> \<Union>h\<in>H. \<Union>k\<in>K. {h \<otimes> k}"
    25   where "H <#>\<^bsub>G\<^esub> K \<equiv> \<Union>h\<in>H. \<Union>k\<in>K. {h \<otimes>\<^bsub>G\<^esub> k}"
    23 
    26 
       
    27 definition
    24   SET_INV :: "[_,'a set] \<Rightarrow> 'a set"  ("set'_inv\<index> _" [81] 80)
    28   SET_INV :: "[_,'a set] \<Rightarrow> 'a set"  ("set'_inv\<index> _" [81] 80)
    25   "set_inv H \<equiv> \<Union>h\<in>H. {inv h}"
    29   where "set_inv\<^bsub>G\<^esub> H \<equiv> \<Union>h\<in>H. {inv\<^bsub>G\<^esub> h}"
    26 
    30 
    27 
    31 
    28 locale normal = subgroup + group +
    32 locale normal = subgroup + group +
    29   assumes coset_eq: "(\<forall>x \<in> carrier G. H #> x = x <# H)"
    33   assumes coset_eq: "(\<forall>x \<in> carrier G. H #> x = x <# H)"
    30 
    34 
   587         setmult_rcos_assoc subgroup_mult_id normal.axioms prems)
   591         setmult_rcos_assoc subgroup_mult_id normal.axioms prems)
   588 
   592 
   589 
   593 
   590 subsubsection{*An Equivalence Relation*}
   594 subsubsection{*An Equivalence Relation*}
   591 
   595 
   592 constdefs (structure G)
   596 definition
   593   r_congruent :: "[('a,'b)monoid_scheme, 'a set] \<Rightarrow> ('a*'a)set"
   597   r_congruent :: "[('a,'b)monoid_scheme, 'a set] \<Rightarrow> ('a*'a)set"  ("rcong\<index> _")
   594                   ("rcong\<index> _")
   598   where "rcong\<^bsub>G\<^esub> H \<equiv> {(x,y). x \<in> carrier G & y \<in> carrier G & inv\<^bsub>G\<^esub> x \<otimes>\<^bsub>G\<^esub> y \<in> H}"
   595    "rcong H \<equiv> {(x,y). x \<in> carrier G & y \<in> carrier G & inv x \<otimes> y \<in> H}"
       
   596 
   599 
   597 
   600 
   598 lemma (in subgroup) equiv_rcong:
   601 lemma (in subgroup) equiv_rcong:
   599    assumes "group G"
   602    assumes "group G"
   600    shows "equiv (carrier G) (rcong H)"
   603    shows "equiv (carrier G) (rcong H)"