reflection for rall and rex
authorpaulson
Thu, 04 Jul 2002 10:53:52 +0200
changeset 13292 f504f5d284d3
parent 13291 a73ab154f75c
child 13293 09276ee04361
reflection for rall and rex
src/ZF/Constructible/Reflection.thy
--- a/src/ZF/Constructible/Reflection.thy	Thu Jul 04 10:52:33 2002 +0200
+++ b/src/ZF/Constructible/Reflection.thy	Thu Jul 04 10:53:52 2002 +0200
@@ -182,6 +182,8 @@
        simp_all add: Mset_mono_le Mset_cont Pair_in_Mset) 
 done
 
+subsection{*Packaging the Quantifier Reflection Rules*}
+
 lemma (in reflection) Ex_reflection_0:
      "Reflects(Cl,P0,Q0) 
       ==> Reflects(\<lambda>a. Cl(a) \<and> ClEx(P0,a), 
@@ -220,6 +222,23 @@
 by (rule All_reflection_0 [of _ "\<lambda>x. P(fst(x),snd(x))" 
                                 "\<lambda>a x. Q(a,fst(x),snd(x))", simplified])
 
+text{*And again, this time using class-bounded quantifiers*}
+
+theorem (in reflection) Rex_reflection [intro]:
+     "Reflects(Cl, \<lambda>x. P(fst(x),snd(x)), \<lambda>a x. Q(a,fst(x),snd(x))) 
+      ==> Reflects(\<lambda>a. Cl(a) \<and> ClEx(\<lambda>x. P(fst(x),snd(x)), a), 
+                   \<lambda>x. \<exists>z[M]. P(x,z), 
+                   \<lambda>a x. \<exists>z\<in>Mset(a). Q(a,x,z))"
+by (unfold rex_def, blast) 
+
+theorem (in reflection) Rall_reflection [intro]:
+     "Reflects(Cl,  \<lambda>x. P(fst(x),snd(x)), \<lambda>a x. Q(a,fst(x),snd(x)))
+      ==> Reflects(\<lambda>a. Cl(a) \<and> ClEx(\<lambda>x. ~P(fst(x),snd(x)), a), 
+                   \<lambda>x. \<forall>z[M]. P(x,z), 
+                   \<lambda>a x. \<forall>z\<in>Mset(a). Q(a,x,z))" 
+by (unfold rall_def, blast) 
+
+
 text{*No point considering bounded quantifiers, where reflection is trivial.*}