src/ZF/Constructible/Separation.thy
changeset 13437 01b3fc0cc1b8
parent 13429 2232810416fc
child 13440 cdde97e1db1c
equal deleted inserted replaced
13436:8fd1d803a3d3 13437:01b3fc0cc1b8
       
     1 (*  Title:      ZF/Constructible/Separation.thy
       
     2     ID:         $Id$
       
     3     Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
       
     4     Copyright   2002  University of Cambridge
       
     5 *)
       
     6 
     1 header{*Early Instances of Separation and Strong Replacement*}
     7 header{*Early Instances of Separation and Strong Replacement*}
     2 
     8 
     3 theory Separation = L_axioms + WF_absolute:
     9 theory Separation = L_axioms + WF_absolute:
     4 
    10 
     5 text{*This theory proves all instances needed for locale @{text "M_axioms"}*}
    11 text{*This theory proves all instances needed for locale @{text "M_axioms"}*}
    67 apply (rule_tac [2] i=1 and j=0 and env="[y,x,A]" in mem_iff_sats)
    73 apply (rule_tac [2] i=1 and j=0 and env="[y,x,A]" in mem_iff_sats)
    68 apply (rule_tac i=0 and j=2 in mem_iff_sats)
    74 apply (rule_tac i=0 and j=2 in mem_iff_sats)
    69 apply (simp_all add: succ_Un_distrib [symmetric])
    75 apply (simp_all add: succ_Un_distrib [symmetric])
    70 done
    76 done
    71 
    77 
       
    78 subsection{*Separation for Set Difference*}
       
    79 
       
    80 lemma Diff_Reflects:
       
    81      "REFLECTS[\<lambda>x. x \<notin> B, \<lambda>i x. x \<notin> B]"
       
    82 by (intro FOL_reflections)  
       
    83 
       
    84 lemma Diff_separation:
       
    85      "L(B) ==> separation(L, \<lambda>x. x \<notin> B)"
       
    86 apply (rule separation_CollectI) 
       
    87 apply (rule_tac A="{B,z}" in subset_LsetE, blast ) 
       
    88 apply (rule ReflectsE [OF Diff_Reflects], assumption)
       
    89 apply (drule subset_Lset_ltD, assumption) 
       
    90 apply (erule reflection_imp_L_separation)
       
    91   apply (simp_all add: lt_Ord2, clarify)
       
    92 apply (rule DPow_LsetI) 
       
    93 apply (rule not_iff_sats) 
       
    94 apply (rule_tac env="[x,B]" in mem_iff_sats)
       
    95 apply (rule sep_rules | simp)+
       
    96 done
       
    97 
    72 subsection{*Separation for Cartesian Product*}
    98 subsection{*Separation for Cartesian Product*}
    73 
    99 
    74 lemma cartprod_Reflects:
   100 lemma cartprod_Reflects:
    75      "REFLECTS[\<lambda>z. \<exists>x[L]. x\<in>A & (\<exists>y[L]. y\<in>B & pair(L,x,y,z)),
   101      "REFLECTS[\<lambda>z. \<exists>x[L]. x\<in>A & (\<exists>y[L]. y\<in>B & pair(L,x,y,z)),
    76                 \<lambda>i z. \<exists>x\<in>Lset(i). x\<in>A & (\<exists>y\<in>Lset(i). y\<in>B &
   102                 \<lambda>i z. \<exists>x\<in>Lset(i). x\<in>A & (\<exists>y\<in>Lset(i). y\<in>B &
   446 
   472 
   447 subsection{*Instantiating the locale @{text M_axioms}*}
   473 subsection{*Instantiating the locale @{text M_axioms}*}
   448 text{*Separation (and Strong Replacement) for basic set-theoretic constructions
   474 text{*Separation (and Strong Replacement) for basic set-theoretic constructions
   449 such as intersection, Cartesian Product and image.*}
   475 such as intersection, Cartesian Product and image.*}
   450 
   476 
       
   477 lemma M_axioms_axioms_L: "M_axioms_axioms(L)"
       
   478   apply (rule M_axioms_axioms.intro)
       
   479        apply (assumption | rule
       
   480 	 Inter_separation Diff_separation cartprod_separation image_separation
       
   481 	 converse_separation restrict_separation
       
   482 	 comp_separation pred_separation Memrel_separation
       
   483 	 funspace_succ_replacement well_ord_iso_separation
       
   484 	 obase_separation obase_equals_separation
       
   485 	 omap_replacement is_recfun_separation)+
       
   486   done
       
   487 
   451 theorem M_axioms_L: "PROP M_axioms(L)"
   488 theorem M_axioms_L: "PROP M_axioms(L)"
   452   apply (rule M_axioms.intro)
   489 by (rule M_axioms.intro [OF M_triv_axioms_L M_axioms_axioms_L])
   453    apply (rule M_triv_axioms_L)
   490 
   454   apply (rule M_axioms_axioms.intro)
       
   455                apply (assumption | rule
       
   456                  Inter_separation cartprod_separation image_separation
       
   457                  converse_separation restrict_separation
       
   458                  comp_separation pred_separation Memrel_separation
       
   459                  funspace_succ_replacement well_ord_iso_separation
       
   460                  obase_separation obase_equals_separation
       
   461                  omap_replacement is_recfun_separation)+
       
   462   done
       
   463 
   491 
   464 lemmas cartprod_iff = M_axioms.cartprod_iff [OF M_axioms_L]
   492 lemmas cartprod_iff = M_axioms.cartprod_iff [OF M_axioms_L]
   465   and cartprod_closed = M_axioms.cartprod_closed [OF M_axioms_L]
   493   and cartprod_closed = M_axioms.cartprod_closed [OF M_axioms_L]
   466   and sum_closed = M_axioms.sum_closed [OF M_axioms_L]
   494   and sum_closed = M_axioms.sum_closed [OF M_axioms_L]
   467   and M_converse_iff = M_axioms.M_converse_iff [OF M_axioms_L]
   495   and M_converse_iff = M_axioms.M_converse_iff [OF M_axioms_L]