src/ZF/Constructible/L_axioms.thy
changeset 61798 27f3c10b0b50
parent 61393 8673ec68c798
child 69587 53982d5ec0bb
equal deleted inserted replaced
61797:458b4e3720ab 61798:27f3c10b0b50
     4 
     4 
     5 section \<open>The ZF Axioms (Except Separation) in L\<close>
     5 section \<open>The ZF Axioms (Except Separation) in L\<close>
     6 
     6 
     7 theory L_axioms imports Formula Relative Reflection MetaExists begin
     7 theory L_axioms imports Formula Relative Reflection MetaExists begin
     8 
     8 
     9 text \<open>The class L satisfies the premises of locale @{text M_trivial}\<close>
     9 text \<open>The class L satisfies the premises of locale \<open>M_trivial\<close>\<close>
    10 
    10 
    11 lemma transL: "[| y\<in>x; L(x) |] ==> L(y)"
    11 lemma transL: "[| y\<in>x; L(x) |] ==> L(y)"
    12 apply (insert Transset_Lset)
    12 apply (insert Transset_Lset)
    13 apply (simp add: Transset_def L_def, blast)
    13 apply (simp add: Transset_def L_def, blast)
    14 done
    14 done
    76 apply (frule LReplace_in_L, assumption+, clarify)
    76 apply (frule LReplace_in_L, assumption+, clarify)
    77 apply (rule_tac x=Y in rexI)
    77 apply (rule_tac x=Y in rexI)
    78 apply (simp_all add: Replace_iff univalent_def, blast)
    78 apply (simp_all add: Replace_iff univalent_def, blast)
    79 done
    79 done
    80 
    80 
    81 subsection\<open>Instantiating the locale @{text M_trivial}\<close>
    81 subsection\<open>Instantiating the locale \<open>M_trivial\<close>\<close>
    82 text\<open>No instances of Separation yet.\<close>
    82 text\<open>No instances of Separation yet.\<close>
    83 
    83 
    84 lemma Lset_mono_le: "mono_le_subset(Lset)"
    84 lemma Lset_mono_le: "mono_le_subset(Lset)"
    85 by (simp add: mono_le_subset_def le_imp_subset Lset_mono)
    85 by (simp add: mono_le_subset_def le_imp_subset Lset_mono)
    86 
    86 
   108 declare rall_abs [simp]
   108 declare rall_abs [simp]
   109 declare rex_abs [simp]
   109 declare rex_abs [simp]
   110 ...and dozens of similar ones.
   110 ...and dozens of similar ones.
   111 *)
   111 *)
   112 
   112 
   113 subsection\<open>Instantiation of the locale @{text reflection}\<close>
   113 subsection\<open>Instantiation of the locale \<open>reflection\<close>\<close>
   114 
   114 
   115 text\<open>instances of locale constants\<close>
   115 text\<open>instances of locale constants\<close>
   116 
   116 
   117 definition
   117 definition
   118   L_F0 :: "[i=>o,i] => i" where
   118   L_F0 :: "[i=>o,i] => i" where
   222 apply (unfold rall_def)
   222 apply (unfold rall_def)
   223 apply (intro Imp_reflection All_reflection, assumption)
   223 apply (intro Imp_reflection All_reflection, assumption)
   224 done
   224 done
   225 
   225 
   226 text\<open>This version handles an alternative form of the bounded quantifier
   226 text\<open>This version handles an alternative form of the bounded quantifier
   227       in the second argument of @{text REFLECTS}.\<close>
   227       in the second argument of \<open>REFLECTS\<close>.\<close>
   228 theorem Rex_reflection':
   228 theorem Rex_reflection':
   229      "REFLECTS[\<lambda>x. P(fst(x),snd(x)), \<lambda>a x. Q(a,fst(x),snd(x))]
   229      "REFLECTS[\<lambda>x. P(fst(x),snd(x)), \<lambda>a x. Q(a,fst(x),snd(x))]
   230       ==> REFLECTS[\<lambda>x. \<exists>z[L]. P(x,z), \<lambda>a x. \<exists>z[##Lset(a)]. Q(a,x,z)]"
   230       ==> REFLECTS[\<lambda>x. \<exists>z[L]. P(x,z), \<lambda>a x. \<exists>z[##Lset(a)]. Q(a,x,z)]"
   231 apply (unfold setclass_def rex_def)
   231 apply (unfold setclass_def rex_def)
   232 apply (erule Rex_reflection [unfolded rex_def Bex_def]) 
   232 apply (erule Rex_reflection [unfolded rex_def Bex_def]) 
   562 done
   562 done
   563 
   563 
   564 
   564 
   565 subsubsection\<open>Variants of Satisfaction Definitions for Ordinals, etc.\<close>
   565 subsubsection\<open>Variants of Satisfaction Definitions for Ordinals, etc.\<close>
   566 
   566 
   567 text\<open>The @{text sats} theorems below are standard versions of the ones proved
   567 text\<open>The \<open>sats\<close> theorems below are standard versions of the ones proved
   568 in theory @{text Formula}.  They relate elements of type @{term formula} to
   568 in theory \<open>Formula\<close>.  They relate elements of type @{term formula} to
   569 relativized concepts such as @{term subset} or @{term ordinal} rather than to
   569 relativized concepts such as @{term subset} or @{term ordinal} rather than to
   570 real concepts such as @{term Ord}.  Now that we have instantiated the locale
   570 real concepts such as @{term Ord}.  Now that we have instantiated the locale
   571 @{text M_trivial}, we no longer require the earlier versions.\<close>
   571 \<open>M_trivial\<close>, we no longer require the earlier versions.\<close>
   572 
   572 
   573 lemma sats_subset_fm':
   573 lemma sats_subset_fm':
   574    "[|x \<in> nat; y \<in> nat; env \<in> list(A)|]
   574    "[|x \<in> nat; y \<in> nat; env \<in> list(A)|]
   575     ==> sats(A, subset_fm(x,y), env) \<longleftrightarrow> subset(##A, nth(x,env), nth(y,env))"
   575     ==> sats(A, subset_fm(x,y), env) \<longleftrightarrow> subset(##A, nth(x,env), nth(y,env))"
   576 by (simp add: subset_fm_def Relative.subset_def)
   576 by (simp add: subset_fm_def Relative.subset_def)