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 🍋obase\

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 🍋obase\

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 🍋omap\

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
 such 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 🍋wfrank\

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 🍋wfrank\

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=87 H=89 G=87

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet am  2026-04-26) ¤

*© 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.