src/HOL/Algebra/Algebraic_Closure.thy
changeset 80914 d97fdabd9e2b
parent 70215 8371a25ca177
equal deleted inserted replaced
80913:46f59511b7bb 80914:d97fdabd9e2b
    11 
    11 
    12 section \<open>Algebraic Closure\<close>
    12 section \<open>Algebraic Closure\<close>
    13 
    13 
    14 subsection \<open>Definitions\<close>
    14 subsection \<open>Definitions\<close>
    15 
    15 
    16 inductive iso_incl :: "'a ring \<Rightarrow> 'a ring \<Rightarrow> bool" (infixl "\<lesssim>" 65) for A B
    16 inductive iso_incl :: "'a ring \<Rightarrow> 'a ring \<Rightarrow> bool" (infixl \<open>\<lesssim>\<close> 65) for A B
    17   where iso_inclI [intro]: "id \<in> ring_hom A B \<Longrightarrow> iso_incl A B"
    17   where iso_inclI [intro]: "id \<in> ring_hom A B \<Longrightarrow> iso_incl A B"
    18 
    18 
    19 definition law_restrict :: "('a, 'b) ring_scheme \<Rightarrow> 'a ring"
    19 definition law_restrict :: "('a, 'b) ring_scheme \<Rightarrow> 'a ring"
    20   where "law_restrict R \<equiv> (ring.truncate R)
    20   where "law_restrict R \<equiv> (ring.truncate R)
    21            \<lparr> mult := (\<lambda>a \<in> carrier R. \<lambda>b \<in> carrier R. a \<otimes>\<^bsub>R\<^esub> b),
    21            \<lparr> mult := (\<lambda>a \<in> carrier R. \<lambda>b \<in> carrier R. a \<otimes>\<^bsub>R\<^esub> b),
    31            \<comment> \<open>iii\<close> (\<forall>\<P> \<in> carrier L. carrier_coeff \<P>) \<and>
    31            \<comment> \<open>iii\<close> (\<forall>\<P> \<in> carrier L. carrier_coeff \<P>) \<and>
    32            \<comment> \<open>iv\<close>  (\<forall>\<P> \<in> carrier L. \<forall>P \<in> carrier (poly_ring R). \<forall>i.
    32            \<comment> \<open>iv\<close>  (\<forall>\<P> \<in> carrier L. \<forall>P \<in> carrier (poly_ring R). \<forall>i.
    33                        \<not> index_free \<P> (P, i) \<longrightarrow>
    33                        \<not> index_free \<P> (P, i) \<longrightarrow>
    34                          \<X>\<^bsub>(P, i)\<^esub> \<in> carrier L \<and> (ring.eval L) (\<sigma> P) \<X>\<^bsub>(P, i)\<^esub> = \<zero>\<^bsub>L\<^esub>) }"
    34                          \<X>\<^bsub>(P, i)\<^esub> \<in> carrier L \<and> (ring.eval L) (\<sigma> P) \<X>\<^bsub>(P, i)\<^esub> = \<zero>\<^bsub>L\<^esub>) }"
    35 
    35 
    36 abbreviation (in ring) restrict_extensions :: "((('a list \<times> nat) multiset) \<Rightarrow> 'a) ring set" ("\<S>")
    36 abbreviation (in ring) restrict_extensions :: "((('a list \<times> nat) multiset) \<Rightarrow> 'a) ring set" (\<open>\<S>\<close>)
    37   where "\<S> \<equiv> law_restrict ` extensions"
    37   where "\<S> \<equiv> law_restrict ` extensions"
    38 
    38 
    39 
    39 
    40 subsection \<open>Basic Properties\<close>
    40 subsection \<open>Basic Properties\<close>
    41 
    41