src/HOL/Algebra/QuotRing.thy
changeset 69597 ff784d5a5bfb
parent 69122 1b5178abaf97
child 77138 c8597292cd41
equal deleted inserted replaced
69596:c8a2755bf220 69597:ff784d5a5bfb
    14 definition rcoset_mult :: "[('a, _) ring_scheme, 'a set, 'a set, 'a set] \<Rightarrow> 'a set"
    14 definition rcoset_mult :: "[('a, _) ring_scheme, 'a set, 'a set, 'a set] \<Rightarrow> 'a set"
    15     ("[mod _:] _ \<Otimes>\<index> _" [81,81,81] 80)
    15     ("[mod _:] _ \<Otimes>\<index> _" [81,81,81] 80)
    16   where "rcoset_mult R I A B = (\<Union>a\<in>A. \<Union>b\<in>B. I +>\<^bsub>R\<^esub> (a \<otimes>\<^bsub>R\<^esub> b))"
    16   where "rcoset_mult R I A B = (\<Union>a\<in>A. \<Union>b\<in>B. I +>\<^bsub>R\<^esub> (a \<otimes>\<^bsub>R\<^esub> b))"
    17 
    17 
    18 
    18 
    19 text \<open>@{const "rcoset_mult"} fulfils the properties required by congruences\<close>
    19 text \<open>\<^const>\<open>rcoset_mult\<close> fulfils the properties required by congruences\<close>
    20 lemma (in ideal) rcoset_mult_add:
    20 lemma (in ideal) rcoset_mult_add:
    21   assumes "x \<in> carrier R" "y \<in> carrier R"
    21   assumes "x \<in> carrier R" "y \<in> carrier R"
    22   shows "[mod I:] (I +> x) \<Otimes> (I +> y) = I +> (x \<otimes> y)"
    22   shows "[mod I:] (I +> x) \<Otimes> (I +> y) = I +> (x \<otimes> y)"
    23 proof -
    23 proof -
    24   have 1: "z \<in> I +> x \<otimes> y" 
    24   have 1: "z \<in> I +> x \<otimes> y" 
   177       ultimately show ?thesis by blast
   177       ultimately show ?thesis by blast
   178     qed
   178     qed
   179     then have Jcarr: "J = carrier R"
   179     then have Jcarr: "J = carrier R"
   180       using I_maximal IinJ additive_subgroup.a_subset idealJ ideal_def by blast
   180       using I_maximal IinJ additive_subgroup.a_subset idealJ ideal_def by blast
   181 
   181 
   182     \<comment> \<open>Calculating an inverse for @{term "a"}\<close>
   182     \<comment> \<open>Calculating an inverse for \<^term>\<open>a\<close>\<close>
   183     from one_closed[folded Jcarr]
   183     from one_closed[folded Jcarr]
   184     obtain r i where rcarr: "r \<in> carrier R"
   184     obtain r i where rcarr: "r \<in> carrier R"
   185       and iI: "i \<in> I" and one: "\<one> = r \<otimes> a \<oplus> i" 
   185       and iI: "i \<in> I" and one: "\<one> = r \<otimes> a \<oplus> i" 
   186       by (auto simp add: J_def r_coset_def set_add_defs)
   186       by (auto simp add: J_def r_coset_def set_add_defs)
   187 
   187