src/HOL/Algebra/AbelCoset.thy
changeset 67443 3abf6a722518
parent 67091 1393c2340eec
child 67613 ce654b0e6d69
equal deleted inserted replaced
67442:f075640b8868 67443:3abf6a722518
    39   a_r_congruent :: "[('a,'b)ring_scheme, 'a set] \<Rightarrow> ('a*'a)set"  ("racong\<index>")
    39   a_r_congruent :: "[('a,'b)ring_scheme, 'a set] \<Rightarrow> ('a*'a)set"  ("racong\<index>")
    40   where "a_r_congruent G = r_congruent \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>"
    40   where "a_r_congruent G = r_congruent \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>"
    41 
    41 
    42 definition
    42 definition
    43   A_FactGroup :: "[('a,'b) ring_scheme, 'a set] \<Rightarrow> ('a set) monoid" (infixl "A'_Mod" 65)
    43   A_FactGroup :: "[('a,'b) ring_scheme, 'a set] \<Rightarrow> ('a set) monoid" (infixl "A'_Mod" 65)
    44     \<comment>\<open>Actually defined for groups rather than monoids\<close>
    44     \<comment> \<open>Actually defined for groups rather than monoids\<close>
    45   where "A_FactGroup G H = FactGroup \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr> H"
    45   where "A_FactGroup G H = FactGroup \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr> H"
    46 
    46 
    47 definition
    47 definition
    48   a_kernel :: "('a, 'm) ring_scheme \<Rightarrow> ('b, 'n) ring_scheme \<Rightarrow>  ('a \<Rightarrow> 'b) \<Rightarrow> 'a set"
    48   a_kernel :: "('a, 'm) ring_scheme \<Rightarrow> ('b, 'n) ring_scheme \<Rightarrow>  ('a \<Rightarrow> 'b) \<Rightarrow> 'a set"
    49     \<comment>\<open>the kernel of a homomorphism (additive)\<close>
    49     \<comment> \<open>the kernel of a homomorphism (additive)\<close>
    50   where "a_kernel G H h =
    50   where "a_kernel G H h =
    51     kernel \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>
    51     kernel \<lparr>carrier = carrier G, mult = add G, one = zero G\<rparr>
    52       \<lparr>carrier = carrier H, mult = add H, one = zero H\<rparr> h"
    52       \<lparr>carrier = carrier H, mult = add H, one = zero H\<rparr> h"
    53 
    53 
    54 locale abelian_group_hom = G?: abelian_group G + H?: abelian_group H
    54 locale abelian_group_hom = G?: abelian_group G + H?: abelian_group H
   685   shows "(x' \<in> H +> x) = (x' \<oplus> \<ominus>x \<in> H)"
   685   shows "(x' \<in> H +> x) = (x' \<oplus> \<ominus>x \<in> H)"
   686 using assms
   686 using assms
   687 by (rule subgroup.rcos_module [OF a_subgroup a_group,
   687 by (rule subgroup.rcos_module [OF a_subgroup a_group,
   688     folded a_r_coset_def a_inv_def, simplified monoid_record_simps])
   688     folded a_r_coset_def a_inv_def, simplified monoid_record_simps])
   689 
   689 
   690 \<comment>"variant"
   690 \<comment> \<open>variant\<close>
   691 lemma (in abelian_subgroup) a_rcos_module_minus:
   691 lemma (in abelian_subgroup) a_rcos_module_minus:
   692   assumes "ring G"
   692   assumes "ring G"
   693   assumes carr: "x \<in> carrier G" "x' \<in> carrier G"
   693   assumes carr: "x \<in> carrier G" "x' \<in> carrier G"
   694   shows "(x' \<in> H +> x) = (x' \<ominus> x \<in> H)"
   694   shows "(x' \<in> H +> x) = (x' \<ominus> x \<in> H)"
   695 proof -
   695 proof -