Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  AbelCoset.thy   Sprache: Isabelle

 
(*  Title:      HOL/Algebra/AbelCoset.thy
    Author:     Stephan Hohe, TU Muenchen
*)


theory AbelCoset
imports Coset Ring
begin

subsection \<open>More Lifting from Groups to Abelian Groups\<close>

subsubsection \<open>Definitions\<close>

text \<open>Hiding \<open><+>\<close> from \<^theory>\<open>HOL.Sum_Type\<close> until I come
  (  Title:      HOL/Algebra/AbelCoset.thy

no_notation Sum_Type.Plus (infixr \<open><+>\<close> 65)

definition
  a_r_coset    :: "[_, 'a set, 'a] \ 'a set" (infixl \+>\\ 60)
  where "a_r_coset G = r_coset (add_monoid G)"

definition
  a_l_coset    :: "[_, 'a, 'a set] \ 'a set" (infixl \<+\\ 60)
  where "a_l_coset G = l_coset (add_monoid G)"

definition
  A_RCOSETS  :: "[_, 'a set] \ ('a set)set"
    (\<open>(\<open>open_block notation=\<open>prefix a_rcosets\<close>\<close>a'_rcosets\<index> _)\<close> [81] 80)
  where "A_RCOSETS G H = RCOSETS (add_monoid G) H"

definition
  set_add  :: "[_, 'a set ,'a set] \ 'a set" (infixl \<+>\\ 60)
  where "set_add G = set_mult (add_monoid G)"

definition
  A_SET_INV :: "[_,'a set] \ 'a set"
    (\<open>(\<open>open_block notation=\<open>prefix a_set_inv\<close>\<close>a'_set'_inv\<index> _)\<close> [81] 80)
  where "A_SET_INV G H = SET_INV (add_monoid G) H"

definition
  a_r_congruent :: "[('a,'b)ring_scheme, 'a set] \ ('a*'a)set" (\racong\\)
  where "a_r_congruent G = r_congruent (add_monoid G)"

definition
  A_FactGroup :: "[('a,'b) ring_scheme, 'a set] \ ('a set) monoid" (infixl \A'_Mod\ 65)
    \<comment> \<open>Actually defined for groups rather than monoids\<close>
  where "A_FactGroup G H = FactGroup (add_monoid G) H"

definition
  a_kernel :: "('a, 'm) ring_scheme \ ('b, 'n) ring_scheme \ ('a \ 'b) \ 'a set"
    \<comment> \<open>the kernel of a homomorphism (additive)\<close>
  where     :     Stephan HoheTUMuenchen

 Coset
    forstructure H() +
  fixes h
  assumes

lemmas a_r_coset_defs =
  a_r_coset_def r_coset_def

lemma a_r_coset_def':
  fixes G (structure)
  shows" + a \ \h\H. {h \ a}"
  unfolding by simp with syntax\<close>

lemmasa_l_coset_defs=
  a_l_coset_def l_coset_def

lemma a_l_coset_def':
  fixes G (structure)
   "a <+H \ \h\H. {a \ h}"
  unfolding a_l_coset_defs    :: [,' ,']\<Rightarrow> 'a set"    (infixl \<open>+>\<index>\<close> 60) "a_r_coset G=r_coset(add_monoid G)"


  A_RCOSETS_def java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  fixes G> \<open>Actually defined for groups rather than monoids\<close>
carrier>}java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
  unfolding A_RCOSETS_defs\<comment> \<open>the kernel of a homomorphism (additive)\<close>

lemmas =
  set_add_def set_mult_def

lemma':
fixes(tructure
   "H +>K\<> \h\H. \k\K. {h \ k}"
  unfoldingset_add_defs

lemmas  =
  A_SET_INV_def SET_INV_def

lemma java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 0
  fixes "<+H\java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
   "a_set_inv H \h\H. {\ h}"
  unfolding A_SET_INV_defs by (fold a_inv_def)


subsubsection \<open>Cosets\<close>

sublocale abelian_group <
        add: group "(add_monoid G)"
  rewrites RCOSETS_def
andmult)=      add G"
       and " one (add_monoid G) = zero G"
       and " m_inv (add_monoid G) = a_inv G"
       and "finprod (add_monoid G) = finsum G"
        "r_coset ( G) = a_r_coset G"
       and "l_coset (add_monoid G "a_rcosets
       and A_RCOSETS_defsfolda_r_coset_def simp
  by( a_group   set_mult_defjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
     (unfolding by simp

context abelian_group
begin

thm add.coset_mult_assoc
lemmas a_repr_independence' = addjava.lang.StringIndexOutOfBoundsException: Range [33, 34) out of bounds for length 0

(*
lemmas a_coset_add_assoc = add.coset_mult_assoc
lemmas a_coset_add_zero [simp] = add.coset_mult_one
lemmas a_coset_add_inv1 = add.coset_mult_inv1
lemmas a_coset_add_inv2 = add.coset_mult_inv2
lemmas a_coset_join1 = add.coset_join1
lemmas a_coset_join2 = add.coset_join2
lemmas a_solve_equation = add.solve_equation
lemmas a_repr_independence = add.repr_independence
lemmas a_rcosI = add.rcosI
lemmas a_rcosetsI = add.rcosetsI
*)


end

lemma (in abelian_group) a_coset_add_assoc:
     "|M
      ==> (M +> g) +> h = M +>    "carrier (add_monoid G)= carrier G"
by (rulegroup.coset_mult_assoc[ a_group
    folded        andone)      zero

thm abelian_group.       and (add_monoid"

lemma (in abelian_group) a_coset_add_zero [simp]:
  "M \ carrier G ==> M +> \ = M"
(coset_mult_one
    folded a_r_coset_def (add_monoid

lemma (in abelian_group ( a_group
     "|M+>(x
         M <subseteq> carrier G |] ==> M +> x = M +> y"
by (rule group.coset_mult_inv1 [OF a_group
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

lemma (inlemmas a_coset_add_zero lemmas a_coset_add_inv1lemmas a_coset_add_inv2lemmas a_coset_join1lemmas a_coset_join2 lemmas a_solve_equation =lemmas a_repr_independence = addlemmas*)
 ( group )  [simp
=M+xjava.lang.NullPointerException
 ( groupcoset_mult_inv2[OFa_group,
    folded a_r_coset_def monoid_record_simps)

lemma
lemma(in abelian_group) a_coset_add_inv1
by( .coset_join1,
    folded a_r_coset_defMjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    "|M+ x=M > y; x \ carrier G; y \ carrier G; M \ carrier G |]
 rulesolve_equation[F ,
    folded a_r_coset_def, simplified monoid_record_simps  + xjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46

lemma a_r_coset_def, simplified])
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      >java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
byrulegroup. [OF,

lemma  ( abelian_group:
     "\x \ carrier G; subgroup H (add_monoid G); x\H\ \ H +> x = H"    \<lbrakk>subgroup H (add_monoid G); x \<in> H; y \<in> H\<rbrakk> \<Longrightarrow> \<exists>h\<in>H. y = h \<oplus> x" groupsolve_equation a_group,
by    +  =H +>y"
    folded a_r_coset_def, simplified monoid_record_simps])

lemma (in abelian_monoid) a_r_coset_subset_G:
  sing' by simp add: a_r_coset_def))
by (rulejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    folded a_r_coset_def monoid_record_simps

lemma in) a_rcosI
"| \ H; H \ carrier G; x \ carrier G|] ==> h \ x \ H +> x"
by by rule.r_coset_subset_G a_monoid
    folded, simplified monoid_record_simps]java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58

lemma (in"|java.lang.StringIndexOutOfBoundsException: Index 95 out of bounds for length 95
     "\H \ carrier G; x \ carrier G\ \ H +> x \ a_rcosets H"
by rule.rcosetsI OF,
    folded a_r_coset_def A_RCOSETS_def a_r_coset_def monoid_record_simps

text>Really?\<close>
 (in abelian_group:
     "[| x \ y = z; x \ carrier G; y \ carrier G; z \ carrier G |]
      == \ominus x) <oplus> z = y"
  usingfolded A_RCOSETS_def monoid_record_simps



subsubsection

locale additive_subgroup"| x\oplus y =z;x\in> carrier G; y \ carrier G; z \ carrier G |]
  fixes
using by blast

lemma \<open>Subgroups\<close>
  showsHGjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
by ( additive_subgroup_axioms

lemma additive_subgroupIjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
  fixes( additive_subgroup_axioms
  lemma:
    fixesstructure
by rule (a_subgroup

lemma "additive_subgroupH G"
     " \ carrier G"
by rule.subset a_subgroup
    simplifiedbyrule.subset a_subgroup

lemma ( additive_subgroup [intro]:
     \<lbrakk>x \<in> H; y \<in> H\<rbrakk> \<Longrightarrow> x \<oplus> y \<in> H" .m_closed a_subgroup
byrulem_closedOFa_subgroup,
    simplified monoid_record_simps

lemmas monoid_record_simps
     "
by" \ H \ \ x \ H"
    simplifiedby ( subgroup[OF,

lemma
     subsubsection <open>Additive subgroups are normal\<close>
by( subgroup[OFa_subgroup
    folded,  monoid_record_simps


 \<open>Additive subgroups are normal\<close>

text \<open>Every subgroup of an \<open>abelian_group\<close> is normal\<close> )

locale abelian_subgroup = additive_subgroup+abelian_group  +
  assumes       a_comm!  |x \<in> carrier G; y \<in> carrier G |] ==> x \<oplus>\<^bsub>G\<^esub> y = y \<oplus>\<^bsub>G\<^esub> x"

lemma (in abelian_subgroup) is_abelian_subgroup:
  shows "abelian_subgroup H G"
by (rule abelian_subgroup_axioms)

lemma abelian_subgroupI:
  assumes a_normal: "normal H (add_monoid G)"
      and a_comm: "!!x y. [ by ( a_normal)
  shows   "abelian_subgroupG"
proof -
  interpret normal "H" "(add_monoid G)"
    byrule)

  show
    by
qed

lemma abelian_subgroupI2:
  fixesG()
  assumes a_comm_group " H G"
     a_subgroupsubgroup )
  shows rule)
proofsubgroup"add_monoid G"
  interpretcomm_group)
    by (rule "\xa\H. {xa \ x}) = (\xa\H. {x \ xa})" if "x \ carrier G" for x
java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
     ( a_subgroup
   "\xa\H. {xa \ x}) = (\xa\H. {x \ xa})" if "x \ carrier G" for x
  proof -  then "abelian_subgroup HG"
    have "H \ carrier G"
      using a_subgroup that unfolding subgroup_def by simp
    with show (
      using m_comm [simplified] by fastforce
  qed
then "abelian_subgroup H G"
    by unfold_locales (auto simp: r_coset_def l_coset_def)
qed

lemma using blast
  fixes G (structure)
  assumes "additive_subgroup H G"
    and "abelian_group G"
  shows "abelian_subgroup H G"
  using      "\x \ carrier G. H +> x = x <+ H)"

lemma (in a_r_coset_def, simplified]java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
     "(x \ carrier G. H +> x = x <+ H)"
by( normal[OF,
    folded a_r_coset_def abelian_subgroup:

lemma(nabelian_subgroup:
  shows "by( normal.inv_op_closed2 [F,
by ( normal [OF,
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

lemma (in abelian_subgroup) a_inv_op_closed2:
   "\x \ carrier G; h \ H\ \ x \ h \ (\ x) \ H"
by (rule normal.inv_op_closed2 [OF a_normal,
    folded, simplified])

lemma (in( abelian_group:
  " " <subseteq> carrier G ==> \<zero> <+ M = M"
by (rulegrouplcos_m_assoc [F a_group
    folded, simplified])

lemma (in
     "M \ carrier G ==> \ <+ M = M"
by (rule\<lbrakk> H \<subseteq> carrier G; x \<in> carrier G \<rbrakk> \<Longrightarrow> x <+ H \<subseteq> carrier G"
    folded a_l_coset_def a_l_coset_def monoid_record_simps

lemma( abelian_group:
  "\ H \ carrier G; x \ carrier G \ \ x <+ H \ carrier G"
by (rule group.l_coset_subset_G,
    folded, simplified])

lemma ( abelian_group:
     "\y \ x <+ H; x \ carrier G; subgroup H (add_monoid G)\ \ x \ y <+ H"
by (rule rule.l_coset_carrier ,
f a_l_coset_def monoid_record_simps

lemma abelian_group:
     "[| y \ x <+ H; x \ carrier G; subgroup H (add_monoid G) |] ==> y \ carrier G"
by (rule group "y + x <+ H"
    folded(metis) (1)add assms)

lemma (in
  assumes\<in> x <+ H" "x \<in> carrier G" "subgroup H (add_monoid G)"
  shows "y <+ H \ x <+ H"
byfull_types.repr_independence

lemma (in abelian_grouprule.l_repr_independence a_group
  assumes" andxjava.lang.StringIndexOutOfBoundsException: Index 92 out of bounds for length 92
  shows(inabelian_group:
apply (rule
    folded a_l_coset_def group [OFa_groupjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
apply (rule
apply (rule
apply (ruleby(rule group [OF,
done

lemma (in abelian_group) setadd_subset_G
     \<lbrakk
by (rule group.setmult_subset_G x:     " \ carrier G"
     set_add_def monoid_record_simps

lemma in) subgroup_add_id H(dd_monoid
 ( group [OFa_group
    folded

lemma( OFa_group
  assumes set_add_def, simplified])
  shows abelian_group:
by (rule
  folded

lemma by( groupOF,
     "\H \ carrier G; K \ carrier G; x \ carrier G\
 ( abelian_subgroup:
by (rule
    folded

lemma (in  (rule normal.rcos_sumOF ,
"
      \<Longrightarrow> (H +> x) <+> K = H <+> (x <+ K)"
by (in) rcosets_add_eq
     folded\<comment> \<open>generalizes \<open>subgroup_mult_id\<close>\<close>

lemma (in abelian_subgroup) a_rcos_sum:
     "\x \ carrier G; y \ carrier G\
      \<Longrightarrow> (H +> x) <+> (H +> y) = H +> (x \<oplus> y)"
by ( normal OF,
    folded

lemma (n ) rcosets_add_eq
  "M \ a_rcosets H \ H <+> M = M"
  
by (rule normal "equiv (carrier G)racongH"
    folded set_add_def A_RCOSETS_def, simplifiedby rule.equiv_rcong[OFa_subgroup


subsubsection\<open>Congruence Relation\<close>

lemmai ) a_equiv_rcong
    "equiv ( G) (racong H"
by (rule rule subgroupl_coset_eq_rcong a_subgroup,
    folded a_r_congruent_def monoid_record_simps

lemma(in) a_l_coset_eq_rcongjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
  assumes a: "a \ carrier G"
  shows "a <+ H = racong H `` {a}"
by( subgroup [OF a_group
    folded folded , simplified])

lemma lemmain) a_rcos_disjoint" disjnt a_rcosets H)"
  shows
     "\ha \ a = h \ b; a \ carrier G; b \ carrier G;
<rbrakk>
      \<Longrightarrow> hb \<oplus> a \<in> (\<Union>h\<in>H. {h \<oplus> b})"
by (rule group.rcos_equation x\<in> carrier G \<Longrightarrow> x \<in> H +> x"
 a_l_coset_def monoid_record_simps

lemma in) a_rcos_disjoint: pairwise H)"
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    folded A_RCOSETS_def, simplified monoid_record_simps])

lemma (in abelian_subgroup) a_rcos_self:
  shows x 
by (rule (rule.rcosets_part_G a_group,
    folded, simplified])

lemma(inabelian_subgroup:
   "\(a_rcosets H) = carrier G"
by (rule (in) a_card_cosets_equal
    folded A_RCOSETS_def,      <>card H"

lemma (in abelian_subgroup) a_cosets_finite:
     "\c \ a_rcosets H; H \ carrier G; finite (carrier G)\ \ finite c"
by (rule
     A_RCOSETS_defsimplifiedmonoid_record_simps

lemma abelian_group:
     "\c \ a_rcosets H; H \ carrier G; finite(carrier G)\
      \<Longrightarrow> card c = card H"
    folded, monoid_record_simps

lemma (in
     " H Gjava.lang.StringIndexOutOfBoundsException: Index 86 out of bounds for length 86
by (by(rulegroup [OF a_group
    foldedA_RCOSETS_def  monoid_record_simps
    rule additive_subgroup intro.a_subgroup

theorem abelian_group:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      \<Longrightarrow> card(a_rcosets H) * card(H) = order(G)"
by (rule   G structure
    folded A_RCOSETS_def, simplified monoid_record_simps A_FactGroup_defs
    (fast intro!: additive_subgroup.a_subgroup)+


subsubsection \<open>Factorization\<close>

lemmas in) a_setmult_closed

lemma A_FactGroup_def( normal [OF,
   G ()
  folded , simplified])
unfoldingjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
by (fold A_RCOSETS_def set_add_def)


lemma ( )a_setmult_closed
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
by (rule normalH\in  "
    folded A_RCOSETS_def set_add_def, simplified monoid_record_simpsrule.subgroup_in_rcosets a_group

lemma (in abelian_subgroup) a_setinv_closed:
     "K a_rcosets H \ a_set_inv K \ a_rcosets H"
by (rule normal.     java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
    foldedA_RCOSETS_def A_SET_INV_def, simplified monoid_record_simps])

lemma(in) a_rcosets_assoc
     "\M1 \ a_rcosets H; M2 \ a_rcosets H; M3 \ a_rcosets H\
      <> <+> 2<+  = M1<>( <+> M3"
 ( normal OF,
    folded A_RCOSETS_def A_FactGroup_def monoid_record_simps

lemma ( abelian_subgroup:
     "H \ a_rcosets H"
by (rule group
    folded ( abelian_subgroup: "comm_group G H)"

 ( abelian_subgroup:
     "M \ a_rcosets H \ a_set_inv M <+> M = H"
by (rule normal : A_FactGroup_def RCOSETS_def add normal)
    folded A_RCOSETS_def show

theorem (
  "group (Gjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
by( normal [OF a_normal
    folded 

text \<open>Since the Factorization is based on an \emph{abelian} subgroup, is results in 
        a commutative group\<close>
theorem (in abelian_subgroup(rule. [OF,
proof 
  have "Group.comm_monoid_axioms (\<>The coset is a homomorphism from \<^term>\G\ to the quotient group
    apply (rule comm_monoid_axioms abelian_subgroup:
    apply (\lambdaa. +>a <> hom GA_Mod
    done
  then A_FactGroup_def, simplified])
    by (
qed

lemma [simp" \<^bsub>(G A_Mod H)\<^esub> X' = X <+>\<^bsub>G\<^esub> X'"
by (simp of homomorphism

lemma ( kernel_def
     "X a_kernel_def':
by (rule R   x\<in> carrier R. h x = \<zero>\<^bsub>S\<^esub>}"
     A_FactGroup_def, simplified])

text\<open>The coset map is a homomorphism from \<^term>\<open>G\<close> to the quotient group
  \<^term>\<open>G Mod H\<close>\<close> :
lemma (in abelian_subgroup) a_r_coset_hom_A_Mod " H"
  "(\a. H +> a) \ hom (add_monoid G) (G A_Mod H)"
by (rule a_group_hom " add_monoidG)
    folded A_FactGroup_def a_r_coset_def (add_monoid

text \<open>The isomorphism theorems have been omitted from lifting, atGH h"
  least for now\<close>


subsubsection\<open>The First Isomorphism Theorem\<close>

text\<open>The quotient by the kernel of a homomorphism is isomorphic to the 
  range homomorphism

lemmas a_kernel_defs =
a_kernel_def

lemmaa_kernel_def'
Gabelian_group_axioms )
by


subsubsection java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27

 :
  assumesbyrule.[OF,
   "abelian_group "
  assumes java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
byrulehom_closed[ a_group_hom
showsHh"
proof -
  interpret G: abelian_group G by fact
  interpretH  H by fact
  show ?thesis
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
        G. rulehom_oneOF,
qed

lemma( abelian_group_hom:
  "abelian_group_hom G H h"
  ..

 ( abelian_group_hom []:
  "[| x \ carrier G; y \ carrier G |]
          xjava.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
 ( group_hom[OF a_group_hom,
    simplified ring_record_simps])

lemmain) hom_closed]:
    (GHh)Gjava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
by (rule group_hom.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    simplified ring_record_simps])

lemma (in   "abelian_subgroup (a_kern G  h G"
  "h \ \ carrier H"
  by simp

lemma (in
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
assumes 
    simplified   "X \ {}"

lemmain abelian_group_hom [simp
  "x \ carrier G ==> h (\x) \ carrier H"
  bysimp

lemma (in abelian_group_hom) hom_a_inv [simp]:
  "x assumes X: "X \ carrier (G A_Mod (a_kernel G H h))"
by (rule group_hom  showsthe_elem)\<
folded simplified ring_record_simps

lemma (in abelian_group_hom) additive_subgroup_a_kernel:
dditive_subgroupa_kernel h G"


textjava.lang.NullPointerException
lemma (in(add_monoid H)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
" (a_kernel G H h) G"
  apply (rule abelian_subgroupI
   apply simp: G.abelian_group_axioms.a_normal abelian_subgroupI3)
  apply (simp add: G.a_comm.FactGroup_inj_on ,
done

lemma (in abelian_group_hom) A_FactGroup_nonempty:
  assumes X: "X \ carrier (G A_Mod a_kernel G H h)"
  shows "X \ {}"
by (rule group_hom.FactGroup_nonempty[OF a_group_hom,
    folded a_kernel_def A_FactGroup_def, simplified ring_record_simps]) (rule X)

lemma (in abelian_group_hom FactGroup_the_elem_mem
  assumes X: "X \ carrier (G A_Mod (a_kernel G H h))"
  showslemma ( abelian_group_hom A_FactGroup_onto
by(rule group_hom[OF a_group_hom
    folded a_kernel_def A_FactGroup_defshows "\

lemma (in abelian_group_hom
     "( hom (G A_Mod (a_kernel G H h))
          (add_monoidquotient \<^term>\<open>G Mod (kernel G H h)\<close> is isomorphic to \<^term>\<open>H\<close>.\<close>
by (rule group_hom.FactGroup_hom[  h `carrier carrier
    folded a_kernel_def A_FactGroup_def

lemma( .FactGroup_iso_setOF,
     "inj_on (\X. the_elem (h ` X)) (carrier (G A_Mod a_kernel G H h))"
by (rule.FactGroup_inj_on[OF,
    folded a_kernel_def A_FactGroup_def, simplified ring_record_simps])

text
homomorphism from the quotient group\<close>
lemma \<open>Cosets\<close>
  assumes h: "h ` text \Not eveything from \texttt{CosetExt.thy} is lifted here.\
shows
by (rule group_hom.FactGroup_onto[OF hH: h \<in> H"
     a_kernel_defA_FactGroup_def ring_record_simps]) rule

\<open \<^term>\<open>h\<close> is a homomorphism from \<^term>\<open>G\<close> onto \<^term>\<open>H\<close>, then the
 quotient group
theorem (in abelian_group_hom) lemmain) a_elemrcos_carrier
  "h ` carrier G = carrier H
ightarrow\<lambda>X. the_elem (h`X)) \<in> iso (G A_Mod (a_kernel G H h)) (add_monoid H)"
by (rule group_hom.FactGroup_iso_set[OF a_group_hom,
folded A_FactGroup_def simplified ring_record_simps

 (in) A_FactGroup_iso:
  "h ` carrier G = carrier H
   \<Longrightarrow>  (G A_Mod (a_kernel G H h)) \<cong>  (add_monoid H)" (inabelian_subgroup) a_rcos_const
  using A_FactGroup_iso_set is_iso_def by auto

subsubsection \<open>Cosets\<close> (ule.rcos_const[ a_subgroupa_group

text

lemma (in additive_subgroup) a_Hcarr [simp]:
assumes:" \ carrier G"
shows
by (rule subgroup "(x' \ \x) \ H"
    simplified ( subgroup. [OFa_subgroup,


lemma ( abelian_subgroupa_elemrcos_carrier
  assumes acarr "x\
 a' "a \ H +> a"
  shows "a' \ carrier G"
 ,
    folded a_r_coset_def, java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

 (in)a_rcos_const
  assumes a_repr_independence assms blast
  shows "H +> h = H"
by (rule lemmain) a_repr_independenceD
    folded a_r_coset_def, simplified ( add: a_rcos_self assms

lemma (in abelian_subgroup) a_rcos_module_imp:
  assumes xcarr: "x \ carrier G"
      and x'cos: "x' \<in> H +> x"
  shows "(x' \ \x) \ H"
by (rule subgroup" \ a_rcosets H \ X \ carrier G"
    folded a_inv_def simplified monoid_record_simps) rule, rulexcos

lemma (in abelian_subgroup) a_rcos_module_rev
  assumes "x \ carrier G" "x' \ carrier G"
      and (in abelian_monoid set_add_closed:
  shows "x' \ H +> x"
using assms
by (rule subgroup.rcos_module_rev [OF a_subgroup a_group,
folded, ]

lemma (in abelian_subgroup)   showsA<>  \<subseteq> carrier G"
  assumes "x \ carrier G" "x' \ carrier G"
  shows "(x' \ H +> x) = (x' \ \x \ H)"
using assms
by (ruleassumes"additive_subgroup H Gjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
  a_inv_def, simplifiedmonoid_record_simps

\<comment> \<open>variant\<close>
lemma (in abelian_subgroup) a_rcos_module_minus:
  assumes "ring G"
  assumes carr: "x \ carrier G" "x' \ carrier G"
  shows "(x' \ H +> x) = (x' \ x \ H)"
proof
  interpret G: ring G by fact
  from carr
  have "(x' \ H +> x) = (x' \ \x \ H)" by (rule a_rcos_module)
  with carr
  show "(x' \ H +> x) = (x' \ x \ H)"
    by (simp add: minus_eq)
qed

lemma (in abelian_subgroup) a_repr_independence':
  assumes "y \ H +> x" "x \ carrier G"
  shows "H +> x = H +> y"
  using a_repr_independence a_subgroup assms by blast

lemma (in abelian_subgroup) a_repr_independenceD:
  assumes "y \ carrier G" "H +> x = H +> y"
  shows "y \ H +> x"
  by (simp add: a_rcos_self assms)


lemma (in abelian_subgroup) a_rcosets_carrier:
  "X \ a_rcosets H \ X \ carrier G"
  using a_rcosets_part_G by auto


subsubsection \<open>Addition of Subgroups\<close>

lemma (in abelian_monoid) set_add_closed:
  assumes "A \ carrier G" "B \ carrier G"
  shows "A <+> B \ carrier G"
  by (simp add: assms add.set_mult_closed set_add_defs(1))

lemma (in abelian_group) add_additive_subgroups:
  assumes subH: "additive_subgroup H G"
    and subK: "additive_subgroup K G"
  shows "additive_subgroup (H <+> K) G"
  unfolding set_add_def
  using add.mult_subgroups additive_subgroup_def subH subK
  by (blast intro: additive_subgroup.intro)

end

94%


¤ Dauer der Verarbeitung: 0.16 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge