Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/ZF/Constructible/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 11 kB image not shown  

Quelle  Rank_Separation.thy

  Sprache: Isabelle
 

(*  Title:      ZF/Constructible/Rank_Separation.thy
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
*)


section Separation for Facts About Order Types, Rank Functions and
 Well-Founded Relations


theory Rank_Separation imports Rank Rec_Separation begin


textThis theory proves all instances needed for locales
 M_ordertype and M_wfrank. But the material is not
 needed for proving the relative consistency of AC.


subsectionThe Locale M_ordertype

subsubsectionSeparation for Order-Isomorphisms

lemma well_ord_iso_Reflects:
  "REFLECTS[λx. xA
                (y[L]. p[L]. fun_apply(L,f,x,y) pair(L,y,x,p) p r),
        λi x. xA (y Lset(i). p Lset(i).
                fun_apply(##Lset(i),f,x,y) pair(##Lset(i),y,x,p) p r)]"
by (intro FOL_reflections function_reflections)

lemma well_ord_iso_separation:
     "[L(A); L(f); L(r)]
      ==> separation (L, λx. xA (y[L]. (p[L].
                     fun_apply(L,f,x,y) pair(L,y,x,p) p r)))"
apply (rule gen_separation_multi [OF well_ord_iso_Reflects, of "{A,f,r}"], 
       auto)
apply (rule_tac env="[A,f,r]" in DPow_LsetI)
apply (rule sep_rules | simp)+
done


subsubsectionSeparation for termobase

lemma obase_reflects:
  "REFLECTS[λa. x[L]. g[L]. mx[L]. par[L].
             ordinal(L,x) membership(L,x,mx) pred_set(L,A,a,r,par)
             order_isomorphism(L,par,r,x,mx,g),
        λi a. x Lset(i). g Lset(i). mx Lset(i). par Lset(i).
             ordinal(##Lset(i),x) membership(##Lset(i),x,mx) pred_set(##Lset(i),A,a,r,par)
             order_isomorphism(##Lset(i),par,r,x,mx,g)]"
by (intro FOL_reflections function_reflections fun_plus_reflections)

lemma obase_separation:
     ― part of the order type formalization
     "[L(A); L(r)]
      ==> separation(L, λa. x[L]. g[L]. mx[L]. par[L].
             ordinal(L,x) membership(L,x,mx) pred_set(L,A,a,r,par)
             order_isomorphism(L,par,r,x,mx,g))"
apply (rule gen_separation_multi [OF obase_reflects, of "{A,r}"], auto)
apply (rule_tac env="[A,r]" in DPow_LsetI)
apply (rule ordinal_iff_sats sep_rules | simp)+
done


subsubsectionSeparation for a Theorem about termobase

lemma obase_equals_reflects:
  "REFLECTS[λx. xA ¬(y[L]. g[L].
                ordinal(L,y) (my[L]. pxr[L].
                membership(L,y,my) pred_set(L,A,x,r,pxr)
                order_isomorphism(L,pxr,r,y,my,g))),
        λi x. xA ¬(y Lset(i). g Lset(i).
                ordinal(##Lset(i),y) (my Lset(i). pxr Lset(i).
                membership(##Lset(i),y,my) pred_set(##Lset(i),A,x,r,pxr)
                order_isomorphism(##Lset(i),pxr,r,y,my,g)))]"
by (intro FOL_reflections function_reflections fun_plus_reflections)

lemma obase_equals_separation:
     "[L(A); L(r)]
      ==> separation (L, λx. xA ¬(y[L]. g[L].
                              ordinal(L,y) (my[L]. pxr[L].
                              membership(L,y,my) pred_set(L,A,x,r,pxr)
                              order_isomorphism(L,pxr,r,y,my,g))))"
apply (rule gen_separation_multi [OF obase_equals_reflects, of "{A,r}"], auto)
apply (rule_tac env="[A,r]" in DPow_LsetI)
apply (rule sep_rules | simp)+
done


subsubsectionReplacement for termomap

lemma omap_reflects:
 "REFLECTS[λz. a[L]. aB (x[L]. g[L]. mx[L]. par[L].
     ordinal(L,x) pair(L,a,x,z) membership(L,x,mx)
     pred_set(L,A,a,r,par) order_isomorphism(L,par,r,x,mx,g)),
 λi z. a Lset(i). aB (x Lset(i). g Lset(i). mx Lset(i).
        par Lset(i).
         ordinal(##Lset(i),x) pair(##Lset(i),a,x,z)
         membership(##Lset(i),x,mx) pred_set(##Lset(i),A,a,r,par)
         order_isomorphism(##Lset(i),par,r,x,mx,g))]"
by (intro FOL_reflections function_reflections fun_plus_reflections)

lemma omap_replacement:
     "[L(A); L(r)]
      ==> strong_replacement(L,
             λa z. x[L]. g[L]. mx[L]. par[L].
             ordinal(L,x) pair(L,a,x,z) membership(L,x,mx)
             pred_set(L,A,a,r,par) order_isomorphism(L,par,r,x,mx,g))"
apply (rule strong_replacementI)
apply (rule_tac u="{A,r,B}" in gen_separation_multi [OF omap_reflects], auto)
apply (rule_tac env="[A,B,r]" in DPow_LsetI)
apply (rule sep_rules | simp)+
done



subsectionInstantiating the locale M_ordertype
textSeparation (and Strong Replacement) for basic set-theoretic constructions
  as intersection, Cartesian Product and image.


lemma M_ordertype_axioms_L: "M_ordertype_axioms(L)"
  apply (rule M_ordertype_axioms.intro)
       apply (assumption | rule well_ord_iso_separation
         obase_separation obase_equals_separation
         omap_replacement)+
  done

theorem M_ordertype_L: "M_ordertype(L)"
  apply (rule M_ordertype.intro)
   apply (rule M_basic_L)
  apply (rule M_ordertype_axioms_L) 
  done


subsectionThe Locale M_wfrank

subsubsectionSeparation for termwfrank

lemma wfrank_Reflects:
 "REFLECTS[λx. rplus[L]. tran_closure(L,r,rplus)
              ¬ (f[L]. M_is_recfun(L, λx f y. is_range(L,f,y), rplus, x, f)),
      λi x. rplus Lset(i). tran_closure(##Lset(i),r,rplus)
         ¬ (f Lset(i).
            M_is_recfun(##Lset(i), λx f y. is_range(##Lset(i),f,y),
                        rplus, x, f))]"
by (intro FOL_reflections function_reflections is_recfun_reflection tran_closure_reflection)

lemma wfrank_separation:
     "L(r) ==>
      separation (L, λx. rplus[L]. tran_closure(L,r,rplus)
         ¬ (f[L]. M_is_recfun(L, λx f y. is_range(L,f,y), rplus, x, f)))"
apply (rule gen_separation [OF wfrank_Reflects], simp)
apply (rule_tac env="[r]" in DPow_LsetI)
apply (rule sep_rules tran_closure_iff_sats is_recfun_iff_sats | simp)+
done


subsubsectionReplacement for termwfrank

lemma wfrank_replacement_Reflects:
 "REFLECTS[λz. x[L]. x A
        (rplus[L]. tran_closure(L,r,rplus)
         (y[L]. f[L]. pair(L,x,y,z)
                        M_is_recfun(L, λx f y. is_range(L,f,y), rplus, x, f)
                        is_range(L,f,y))),
 λi z. x Lset(i). x A
      (rplus Lset(i). tran_closure(##Lset(i),r,rplus)
       (y Lset(i). f Lset(i). pair(##Lset(i),x,y,z)
         M_is_recfun(##Lset(i), λx f y. is_range(##Lset(i),f,y), rplus, x, f)
         is_range(##Lset(i),f,y)))]"
by (intro FOL_reflections function_reflections fun_plus_reflections
             is_recfun_reflection tran_closure_reflection)

lemma wfrank_strong_replacement:
     "L(r) ==>
      strong_replacement(L, λx z.
         rplus[L]. tran_closure(L,r,rplus)
         (y[L]. f[L]. pair(L,x,y,z)
                        M_is_recfun(L, λx f y. is_range(L,f,y), rplus, x, f)
                        is_range(L,f,y)))"
apply (rule strong_replacementI)
apply (rule_tac u="{r,B}" 
         in gen_separation_multi [OF wfrank_replacement_Reflects], 
       auto)
apply (rule_tac env="[r,B]" in DPow_LsetI)
apply (rule sep_rules tran_closure_iff_sats is_recfun_iff_sats | simp)+
done


subsubsectionSeparation for Proving Ord_wfrank_range

lemma Ord_wfrank_Reflects:
 "REFLECTS[λx. rplus[L]. tran_closure(L,r,rplus)
          ¬ (f[L]. rangef[L].
             is_range(L,f,rangef)
             M_is_recfun(L, λx f y. is_range(L,f,y), rplus, x, f)
             ordinal(L,rangef)),
      λi x. rplus Lset(i). tran_closure(##Lset(i),r,rplus)
          ¬ (f Lset(i). rangef Lset(i).
             is_range(##Lset(i),f,rangef)
             M_is_recfun(##Lset(i), λx f y. is_range(##Lset(i),f,y),
                         rplus, x, f)
             ordinal(##Lset(i),rangef))]"
by (intro FOL_reflections function_reflections is_recfun_reflection
          tran_closure_reflection ordinal_reflection)

lemma  Ord_wfrank_separation:
     "L(r) ==>
      separation (L, λx.
         rplus[L]. tran_closure(L,r,rplus)
          ¬ (f[L]. rangef[L].
             is_range(L,f,rangef)
             M_is_recfun(L, λx f y. is_range(L,f,y), rplus, x, f)
             ordinal(L,rangef)))"
apply (rule gen_separation [OF Ord_wfrank_Reflects], simp)
apply (rule_tac env="[r]" in DPow_LsetI)
apply (rule sep_rules tran_closure_iff_sats is_recfun_iff_sats | simp)+
done


subsubsectionInstantiating the locale M_wfrank

lemma M_wfrank_axioms_L: "M_wfrank_axioms(L)"
  apply (rule M_wfrank_axioms.intro)
   apply (assumption | rule
     wfrank_separation wfrank_strong_replacement Ord_wfrank_separation)+
  done

theorem M_wfrank_L: "M_wfrank(L)"
  apply (rule M_wfrank.intro)
   apply (rule M_trancl_L)
  apply (rule M_wfrank_axioms_L) 
  done

lemmas exists_wfrank = M_wfrank.exists_wfrank [OF M_wfrank_L]
  and M_wellfoundedrank = M_wfrank.M_wellfoundedrank [OF M_wfrank_L]
  and Ord_wfrank_range = M_wfrank.Ord_wfrank_range [OF M_wfrank_L]
  and Ord_range_wellfoundedrank = M_wfrank.Ord_range_wellfoundedrank [OF M_wfrank_L]
  and function_wellfoundedrank = M_wfrank.function_wellfoundedrank [OF M_wfrank_L]
  and domain_wellfoundedrank = M_wfrank.domain_wellfoundedrank [OF M_wfrank_L]
  and wellfoundedrank_type = M_wfrank.wellfoundedrank_type [OF M_wfrank_L]
  and Ord_wellfoundedrank = M_wfrank.Ord_wellfoundedrank [OF M_wfrank_L]
  and wellfoundedrank_eq = M_wfrank.wellfoundedrank_eq [OF M_wfrank_L]
  and wellfoundedrank_lt = M_wfrank.wellfoundedrank_lt [OF M_wfrank_L]
  and wellfounded_imp_subset_rvimage = M_wfrank.wellfounded_imp_subset_rvimage [OF M_wfrank_L]
  and wellfounded_imp_wf = M_wfrank.wellfounded_imp_wf [OF M_wfrank_L]
  and wellfounded_on_imp_wf_on = M_wfrank.wellfounded_on_imp_wf_on [OF M_wfrank_L]
  and wf_abs = M_wfrank.wf_abs [OF M_wfrank_L]
  and wf_on_abs = M_wfrank.wf_on_abs [OF M_wfrank_L]

end

Messung V0.5 in Prozent
C=88 H=100 G=94

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-06-09) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.