lemmat_iff_sats assumes is_Q_iff_sats "∧b[M]. Ord(b) ∧ (μ ¬
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 8 "[ nat; env ∈A] ==> 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∈ (a = 0∧b[M]. Ord(b) ⟶ Q(b)) ∨ (∀ b ∈¬Q))" unfolding least_def by simp
(* Better to have this in M_basic or similar *) lemma (n M_cm) unqu_at:"<nM ==> least(Qb)<> 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
subsection‹from <>\<Andx
lemma least_abs: assumes "\<And>x.Q(x)\<Longrightarrow>M(x)""M(a)" shows"least(M,Q,a)longleftrightarrow>a=(\<mu>x.Q(x))" unfoldingleast_def proof(cases"\<forall>b[M].Ord\>\<not>Qb"iffI;add:assms) caseTrue lemmaLeast_closed: havemes"\<And>xQx)\LongrightarrowMx) then show"0=(\<mu>x.Q(x))"usingLeast_0bysimp
java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 6 show"ordinal(M,\<mu>x.Q(x))\<and>(empty(M,Least(Q))\<or>Q(Least(Q)end bysimp next assume"\<exists>b[M].Ord(b)\<and>Q(b)" then obtainiwhere"M(i)""Ord(i)""Q(i)"byblast assume"a=(\<mu>x.Q(x))" moreover note\<open>M(a)\<close> moreoverfrom\<open>Q(i)\<close>\<open>Ord(i)\<close> have"Q(\<mu>x.Q(x))"(is?G) by(blastintro:LeastI) moreover have"(\<forall>b[M].Ord(b)\<and>b\<in>(\<mu>x.Q(x))\<longrightarrow>\<not>Q(b))"(is"?H") usingless_LeastE[ofQ_False] by(auto,drule_tacltI,simp,blast) ultimately show"ordinal(M,\<mu>x.Q(x))\<and>(empty(M,\<mu>x.Q(x))\<and>(\<forall>b[M].Ord(b)\<longrightarrow>\<not>Q(b))\<or>?G\<and>?H)" next assume:"<>b[M].Ord(b)\<and>Q(b)java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46 then obtainiwhere"M(i)""Ord(i)""Q(i)"byblast assume"Ord(a)\<and>(a=0\<and>(\<forall>[M.(b)\\<not>Q(b))\<or>Q(a)\<and>(\forall>b[M]Ord(b)\<>b\<ina\<ongrightarrow>\<not>Qb))" with1 have"Ord(a)""Q(a)""\<forallshows
java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 13 moreoverfromthisand\<open>\<And>x.Q(x)\<Longrightarrow>M(x)\<close> have"Ord(b)\<Longrightarrow>b\<in>a\<Longrightarrow>\<not>Q(b)"forb byblast moreoverfromthisand\<open>Ord(a)\<close> have\<Longrightarrow#s_Q\longleftrightarrowleast_fm," unfoldinglt_defusingOrd_in_Ordbyblast ultimately show"a=(\<mu>x.Q(x))" usingLeast_equalitybysimp qed