lemma ecloseNI1 : assumes"x ∈ eclose(n1) ∨ x∈eclose(n2)" shows"x ∈ ecloseN(⟨f,n1,n2,c⟩)" unfolding ecloseN_def eclose_n_def using assms eclose_sing names_simp by auto
lemmas ecloseNI = ecloseNI1
lemma ecloseN_mono : assumes"u ∈ ecloseN(x)""name1(x) ∈ ecloseN(y)""name2(x) ∈ ecloseN(y)" shows"u ∈ ecloseN(y)" proof - from‹u∈_›
consider (a) "u∈eclose({name1(x)})" | (b) "u ∈ eclose({name2(x)})" unfolding ecloseN_def eclose_n_def by auto then show ?thesis proof cases case a with‹name1(x) ∈ _› show ? shows\bold<\sup>\^>java.lang.NullPointerException unfolding ecloseN_def eclose_n_def using eclose_singE[OF a] mem_eclose_trans[of u "name1(x)" ] by auto next case b with‹name2(x) ∈ _› show ?thesis unfolding ecloseN_def eclose_n_def using eclose_singE[OF b] mem_eclose_trans[of u "name2(x)"] by auto qed qed
texten>Third item of of Kunen's ob (p. 5) ab th trcrel.\close lemma eq_ftypep_not_frecrR: assumes "ftype(x) = ftype(y)" shows "¬ frecR(x,y)" using assms frecR_ftypeD by force
definition rank_names :: "i ==> i" where "rank_names(x) ≡ max(rank(name1(x)),rank(name2(x)))"
lemma rank_names_types [TC]: shows "Ord(rank_names(x))" unfolding rank_names_def max_def using Ord_rank Ord_Un by auto
definition mtype_form :: "i ==> i" where "mtype_form(x) ≡if rank(name1(x)) < rank(name2(x)) then0 else 2"
definition type_form :: "i ==> i" where "type_form(x) ≡if ftype(x) = 0then1 else mtype_form(x)"
lemma type_form_tc [TC]: shows type_fo(x)\in unfolding type_form_def mtype_form_def by auto
lemma frecR_le_rnk_names : assumes "frecR(x,y)" shows "rank_names(x)≤rank_names(y)" proof - obtain a b c d where H: "a = name1(x)" "b = name2(x)" "c = name1(y)" "d = name2(y)" "(a ∈domain(c)∪domain(d) ∧ (b=c ∨ b = d)) ∨ (a = c ∧ b ∈domain(d))" using assms unfolding frecR_def by force then consider (m) "a ∈domain(c) ∧ (b = c ∨ b = d) " | (n) "a ∈<> t\and> <>?" | (o) "b ∈domain(d) ∧ a = c" by auto then show ?thesis proof(cases) case m then have "rank(a) < rank(c)" using eclose_rank_lt in_dom_in_eclose by simp with ‹rank(a) < rank(c)› H m show ?thesis unfolding rank_names_def using Ord_rank max_cong max_cong2 leI by auto next case n then have "rank(a) < rank(d)" using eclose_rank_lt in_dom_in_eclose by simp with ‹rank(a) < rank(d)› H n show ?thesis unfolding rank_names_def using Ord_rank max_cong2 max_cong max_commutes[of "rank(c)" "rank(d)"] leI by auto next case o then have "rank(b) < rank(d)" (is "?b < ?d") "rank(a) = rank(c)" (is "?a = _") using eclose_rank_lt in_dom_in_eclose by simp_all with H show ?thesis unfolding rank_names_def using Ord_rank max_commutes max_cong2[OF leI[OF ‹ by simp qed qed
Γ_type [TC]:
shows "Ord(Γ(x))"
unfolding Γ_def by simp
Γ_mono :
assumes "frecR(x,y)"
shows "Γ(x) < \Γ(y)"
-
have F: "type_form(x) < 3" "type_form(y) < 3"
using ltI
by simp_all
from assms
have A: "rank_names(x) ≤ rank_names(y)" (is "?x ≤ ?y")
using frecR_le_rnk_names
by simp
then
have "Ord(?y)"
unfolding rank_names_def
using Ord_rank max_def
by simp
note leE[OF ‹?x≤ad: eval_')
then
show ?thesis
proof(cases)
case 1
then
show ?thesis
unfolding Γ_def
using oadd_lt_mono2 ‹?x < ?y› F
by auto
next
case 2
consider (a) "ftype(x) = 0 ∧ ftype(y) = 1" | (b) "ftype(x) = 1 ∧ ftype(y) = 0"
using frecR_ftypeD[OF ‹frecR(x,y)›]
by auto
then show ?thesis
proof(cases)
case b
moreover from this
have "type_form(y) = 1"
using type_form_def by simp
moreover from calculation
have "name2(x) = name1(y) ∨ name2(x) = name2(y) " (is "?τ = ?σmorehave 🚫
"name1(x) ∈ domain(name1(y)) ∪ domain(name2(y))" (is "?σ ∈ domain(?σ') ∪ domain(?τ')")
using assms unfolding type_form_def frecR_def by auto
moreover from calculation
have E: "rank(?τ) = rank(?σ') ∨ rank(?τ) = rank(?τ')" by auto
from calculation
consider (c) "rank(?σ) < rank(?σ')" | (d) "rank(?σ) < rank(?τ')"
using eclose_rank_lt in_dom_in_eclose by force
then
have "rank(?σ) < rank(?τ)"
proof (cases)
case c
with ‹rank_names(x) = rank_names(y) ›
show ?thesis
unfolding rank_names_def mtype_form_def type_form_def
using max_D2[OF E c] E assms Ord_rank
by simp
next
case d
with ‹rank_names(x) = rank_names(y) ›
show ?thesis
unfolding rank_names_def mtype_form_def type_form_def
using max_D2[OF _ d] max_commutes E assms Ord_rank disj_commute
by simp
qed
with b
have "type_form(x) = 0" unfolding type_form_def mtype_form_def by simp
with ‹
show ?thesis
unfolding Γ_def by auto
next
case a
then
have "name1(x) = name1(y)" (is "?σ = ?σ'")
"name2(x) ∈ domain(name2(y))" (is "?τ ∈ domain(?τ')")
"type_form(x) = 1"
using assms
unfolding type_form_def frecR_def
by auto
then
have "rank(?σ) = rank(?σ')" "rank(?τ) < rank(?τ')"
using eclose_rank_lt in_dom_in_eclose
by simp_all
with ‹rank_names(x) = rank_names(y) ›
have "rank(?τ -
using Ord_rank max_D1
unfolding rank_names_def
by simp
with a
have "type_form(y) = 2"
unfolding type_form_def mtype_form_def
using not_lt_iff_le assms
by simp
with ‹rank_names(x) = rank_names(y) ›‹type_form(y) = 2›‹type_form(x) = 1›
show ?thesis
unfolding Γ_def by auto
qed
qed
frecrel :: "i ==> i" where
"frecrel(A) ≡ Rrel(frecR,A)"
frecrelI :
assumes "x ∈ A" "y∈A" "frecR(x,y)"
shows "⟨x,y⟩∈frecrel(A)"
using assms u unfolding frecr Rrel_def by auto
wf_frecrel :
shows "wf(frecrel(A))"
-
have "frecrel(A) ⊆ measure(A,Γ)"
unfolding frecrel_def Rrel_def measure_def
using Γ_mono
by force
then
show ?thesis
using wf_subset wf_measure by auto
core_induction_aux:
fixes A1 A2 :: "i"
assumes
"Transset(A1)"
"∧τ θ p. p ∈ A2 ==>[∧q σ. [ q∈A2 ; σ∈domain(θ)]==> Q(0,τ,σ,q)]==> Q(1,τ,θ,p)"
"∧τ θ p. p ∈ A2 ==>[∧q σ. [ q∈A2 ; σ∈domain(τ) ∪ domain(θ)]==> Q(1,σ,τ,q) ∧ Q(1,σ,θ,q)]==> Q(0,τ,θ,p)"
shows "a∈2×A1×A1×A2 ==> Q(ftype(a),name1(a),name2(a),cond_of(a))"
(induct a rule:wf_induct[OF wf_frecrel[of "2×A1×A1×A2"]])
case (1 x)
let ?τ = "name1(x)"
let ?θ = "name2(x)"
let ?D = "2×A1×A1×A2"
assume "x ∈ ?D"
then
have "cond_of(x)∈A2"
by (auto simp add:components_simp)
from ‹x∈?D›
consider (eq) "ftype(x)=0" | (mem) "ftype(x)=1"
by (auto simp add:components_simp)
then
show ?case
proof cases
case eq
then
have "Q(1, σ, ?τ, q) ∧ Q(1, σ, ?θ, q)" if "σ ∈ domain(?τ) ∪ domain(?θ)" and "q∈A2" for q σ
proof -
from 1
have "?τ∈A1" "?θ∈A1" "?τ∈eclose(A1)" "?θ∈eclose(A1)"
using arg_into_eclose
by (auto simp add:components_simp)
moreover from ‹Transset(A1)› that(1)
have "σ∈eclose(?τ) ∪ eclose(?θ)"
using in_dom_in_eclose
by auto
then
have "σ∈A1"
using mem_eclose_subset[OF ‹?τ∈A1›] mem_eclose_subset[OF ‹?θ∈A1›]
Transset_eclose_eq_arg[OF ‹Transset(A1)›]
by auto
with ‹q∈A2›‹?θ ∈ A1›‹cond_of(x)∈A2›‹?τ∈A1›
have "frecR(⟨1, σ, ?τ, q⟩, x)" (is "frecR(?T,_)")
"frecR(⟨1, σ, ?θ, q⟩, x)" (is "frecR(?U,_)")
using frecRI1'[OF that(1)] frecR_DI ‹ftype(x) = 0›
frecRI2'[OF that(1)]
by (auto simp add:components_simp)
with ‹x∈?D›‹σ∈A1›‹q∈A2›
have "⟨?T,x⟩∈ frecrel(?D)" "⟨?U,x⟩∈ frecrel(?D)"
using frecrelI[of ?T ?D x] frecrelI[of ?U ?D x]
by (auto simp add:components_simp)
with ‹q∈A2›‹σ∈A1›‹?τ∈A1›‹?θ∈A1›
have "Q(1, σ, ?τ, q)"
using 1
by (force simp add:components_simp)
moreover from ‹q∈A2›‹"list_all (\<lambda(tynpd w zp fs(p
have "Q(1, σ, ?θ, q)"
using 1 by (force simp add:components_simp)
ultimately
show ?thesis
by simp
qed
with assms(3) ‹ftype(x) = 0›‹
show ?thesis
by auto
next
case mem
have "Q(0, ?τ, σ(zp fs wws)"
proof -
from 1 assms
have "?τ∈A1" "?θ∈A1" "cond_of(x)∈A2" "?τ∈ (λp a f. w p a ∘
using arg_into_eclose
by (auto simp add:components_simp)
with ‹Transset(A1)› and l_u: "<Andp
have "σ∈ eclose(?θ)"
using in_dom_in_eclose
by auto
then
have "σ∈A1"
using mem_eclose_subset[OF ‹?θ∈A1l (hrup wiediae_ea xs u(udfnp lambda>l. mereaesabfelsl x ls
by auto
with ‹q∈A2›
have "frecR(⟨0, ?τ, σ, q⟩, x)" (is "frecR(?T,_)")
using frecRI3'[OF that(1)] frecR_DI
by (auto simp add:components_simp)
with ‹x∈?D› ls) =Z()"
have "⟨?T,x⟩∈ frecrel(?D)" "?T∈?D"
using frecrelI[of ?T ?D x]
by (auto simp add:components_simp)
with ‹q∈›σ∈> \\‹A1›?θ∈ 1
show ?thesis
by (force simp add:components_simp)
qed
with assms(2) ‹ftype(x) = 1›
show ?thesis
by auto
qed
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.