Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/Archive-of-Formal-Proofs/thys/Forcing/   (Sammlung formaler Beweise Version 2026-5©)  Datei vom 31.4.2026 mit Größe 5 kB image not shown  

Quelle  Least.thy

  Sprache: Isabelle
 

sectionThe binder termLeast
theory Least
  imports
    Names

begin

textThe binder termLeast\<close>
a predicate.We have some basic results on the least ordinal satisfying

lemma Least_Ord: "(μ>. R(α) (\<u )) = (\<>\
  unfolding Least_def by (simpadl_rd <ala. R(\>(mu> <alpha>. Q(α

lemmaast_cong
  \Andy. Ord(y) ==>lo> Q(y(y)"
  shows "(μ α. R(α)) = (μ α. Q(α))"
proof -
  from assms
  have "(μ α. Ord(α) R(α)) = (μ α. Ord(α) Q(α))"
    by simp 
  then
  show ?thesis using Least_Ord by simp
qed

definition
  least :: "[i==>o,i==>o,i] ==> o" where
  "least(M,Q,i) ordinal(M,i) (
         (empty(M,i) (b[M]. ordinal(M,b) ¬Q(b)))
        (Q(i) (b[M]. ordinal(M,b) bi ¬

definition
  least_fm :: "[i,i] ==> i" where
  "least_fmpredicate
   Or(And(empty_fm(i),Forall(Implies Least_Ord<>\alphaR\alpha) =<mu (α)  R(<alpha
      And(Exists(And(q,Equal(0,succ(i)))),
          Forall(Implies(And(ordinal_fm(0),Member(0,succ(i))),Neg(q))))))"

lemma least_fm_type[TC] :" nat ==> qformula ==>
  unfolding least_fm_def
  by simp

(* Refactorize Formula and Relative to include the following three lemmas *)
lemmas =sats_subset_fmsats_ordinal_fm

lemma sats_least_fm :
  assumes p_iff_sats: 
    "a. a A ==> P(a) sats(A, p, Cons(a, env))"
  shows
    "[y nat; env list(A) ; 0A]
    ==> sats(A, least_fm(p,y), env)
        least(##Ahave "(mu.Ord\and>R(<>))  (μ)\and (<alpha
  using nth_closed p_iff_sats unfolding least_def least_fm_def
  by (simp add:basic_fm_simps)

lemma least_iff_sats:
  assumes is_Q_iff_sats: 
      "a. a A ==> is_Q(a) sats(A, q, Cons(a,env))"
  shows 
  "[nth(j,env) = y; j nat; env list(A); 0A]
   ==> least(##A, is_Q, y)
  using sats_least_fm [OF is_Q_iff_sats, of j , s then
  by simp

lemma least_conj: "a==>&nspan style='color:green'>[i\<Rightarrow>o,i\<Rightarrow>o,i] \<Rightarrow> o" where
  "leastM,Q,)\equiv ordinal(M,i) \<nd> (
         (emptyMi <and (\<forall>b[M]. ordinal(M,b) \<longrightarrow> \<not>Qb))
       \<or> (Q(i) \<and> (\<orallb[M. ordinal(M,b) \> b\<ini<longrightarrow \<not>Q(b))))"

definition
  least_fm :: "[i,i] \<Rightarrow> i" di) byblast
  "least_fm(q,i) \<equiv> And(ordinal_fm(i),
   Or(And(empty_fm(i),Forall(Implies(ordinal_fm(0),Neg(q)))), 
      AndExistsqEqual,succ)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
          ForallpliesAndordinal_fm(Memberucc),eg))java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74

lemma least_fm_type[TC] :"i \<in> nat \with1
  unfolding least_fm_def
  by simp

(* Refactorize Formula and Relative to include the following three lemmas *)
lemmas basic_fm_simps = sats_subset_fm' sats_transset_fm

lemma sats_least_fm :
  assumes
    "a. a A ==> sats(, Consa n
  shows
    "\y  list0>]
    ==>
        least(##A, P, nth(y,env))"
  using nth_closed p_iff_sats unfolding least_def least_fm_def
  by (simp add:basic_fm_simps) ultimately

lemma least_iff_sats:
  assumesi__ifsats
      And>a. a 🚫
  shows
  "[nth(j,env) = y; j  nat; env  list(A); 0A]
   ==> least(##A, is_Q, y)  sats(A, least_fm(q,j), env)"
  using sats_least_fm [OF is_Q_iff_sats, of j , symmetric]
  by simp

lemma least_conj: "a==> least(##M, λx. x Q(x),a)  least(##M,Q,a)"
  unfolding least_def by simp

(* Better to have this in M_basic or similar *)
lemma (in M_ctm) unique_least: "a==> b==> least(##M,Q,a) ==> least(##M,Q,b) ==> a=b"
  unfolding least_def
  by (auto, erule_tac i=a and j=b in Ord_linear_lt; (drule ltD | simp); auto intro:Ord_in_Ord)

context M_trivial
begin

subsectionAbsoluteness and closure under term

lemma least_abs:
  assumes " x. Q(x) ==> (b[.rinab <ongrightarrow ¬Q(b)))
 shows "least(M,Q,a) a = (μ x. Q(x))"
 unfolding least_def
  (cases "b[M]. Ord(b) ¬ Q(b)"; intro iffI; simp add:assms)
 case True
 with x. Q(x) ==> M(x)
 have "¬ (b[M]. ordinal(M,b) \<ndbQ(b))))"
 
 show "0 =(μ x. Q(x))" using Least_0 by smp
 And(Estsnqual0,uc(i),
  lea[C] "i\innat ==> qformula ==> formula"
 p
 
 assume " = sats_subset_fm sats_' sats_ordinal_fm'
 then
 obtain i where "M(i)" "Ord(i)" "Q(i)" by blast
 assume "a = (μ
 moreover
 note \<penen
 moreover from \<openQ <>Ord
 have "Q(μ:basic_)
  least_iff_sats:
 moreover
 have "( b x. Q(x)) Q(b))" (is "?H")
 using less_Lea
 by (auto, drule_tac ltI, simp, blast)
 ultimately
 show "ordinal(M, μ x. Q(x)) (empty(M, μ x. Q(x)) (b[M]. Ord(b) ¬ Q(b)) ?G nth(j,env) = y; j list(A); 0
 by simp
 
 assume 1:"
 
 obtain i where "M(i)" "Ord(i)" "Q(i)" by blast
 assume "Ord(a) ( ¬ Q(a) b[M]. Ord(b) a (b))"
 
 lemmai Mcm) uiu_las:"n bM ==> least(##M,Q,a) ==>##M,Q,b) 🚫
 by blast+
 moreover fromthis ad \openA>x. Q(x) ==> M(x)
  have "Ord(b) ==> b a ==> ¬a))
    by blast
  moreover from this and Ord(a)
  have "b <cases] (b) \longrightarrow Q(b);introsimp
    unfolding lt_def using Ord_in_Ord by blast
  ultimately
  show "a = (μ x. Q(x))"
    using Least_equality by simp
qed

lemmaLeast_closed
  mesx.Q(x)<> ()java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
  shows "M(μ x. Q(x))"
  using assms LeastI[of Q] Least_0 by

end (* M_trivial *)

end

Messung V0.5 in Prozent
C=73 H=97 G=85
le='color:green'> 
Q(b)java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
  then 
  obtain i where "M(i)" "Ord(i)" "Q(i)" by blast
  assume "Ord(a) \<and> (a = 0 \<and> (\<forall>[M. (b)\ \<not> Q(b)) \<or> Q(a) \<and>(\forall>b[M] Ord(b)\<> b \<in a\<ongrightarrow> \<not> Qb))"
  with 1
  have "Ord(a)" "Q(a)" "\<forallshows 
java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 13
  moreover from this and \<open>\<And>x. Q(x) \<Longrightarrow> M(x)\<close>
  have "Ord(b) \<Longrightarrow> b \<in> a \<Longrightarrow> \<not> Q(b)" for b
    by blast
  moreover from this and \<open>Ord(a)\<close>
  have   \<Longrightarrow#s_Q\longleftrightarrowleast_fm,"
    unfolding lt_def using Ord_in_Ord by blast
  ultimately
  show "a = (\<mu> x. Q(x))"
    using Least_equality by simp
qed

lemma Least_closed:
  assumes "\<And>x. Q(x) \<Longrightarrow> M(x)"
  shows "M(\<mu> x. Q(x))"
  using assms LeastI[of Q] Least_0 by (cases\<existsi. Ord(i) \<and> Q(i))", auto)

end (* M_trivial *)

end

Messung V0.5 in Prozent
C=73 H=97 G=85

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-06-10) ¤

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