[STATEMENT]
lemma limproc_Sync_D: "chain Y\<Longrightarrow>D(lim_proc(range Y)\<lbrakk> A \<rbrakk> S)=D(lim_proc(range(\<lambda>i. Y i \<lbrakk> A \<rbrakk> S)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. chain Y \<Longrightarrow> D (lim_proc (range Y) \<lbrakk>A\<rbrakk> S) = D (lim_proc (range (\<lambda>i. Y i \<lbrakk>A\<rbrakk> S)))
[PROOF STEP]
apply(auto simp:Process_eq_spec  F_sync D_sync T_sync F_LUB D_LUB T_LUB chain_Sync1)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<And>xa t u r v. \<lbrakk>chain Y; front_tickFree v; r setinterleaves ((t, u), insert tick (ev ` A)); tickFree r; \<forall>x. t \<in> D (Y x); u \<in> T S\<rbrakk> \<Longrightarrow> \<exists>t u ra va. front_tickFree va \<and> (tickFree ra \<or> va = []) \<and> r @ v = ra @ va \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 2. \<And>xa t u r v. \<lbrakk>chain Y; front_tickFree v; r setinterleaves ((t, u), insert tick (ev ` A)); tickFree r; t \<in> D S; \<forall>x. u \<in> T (Y x)\<rbrakk> \<Longrightarrow> \<exists>t u ra va. front_tickFree va \<and> (tickFree ra \<or> va = []) \<and> r @ v = ra @ va \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 3. \<And>xa t u r. \<lbrakk>chain Y; r setinterleaves ((t, u), insert tick (ev ` A)); \<forall>x. t \<in> D (Y x); u \<in> T S\<rbrakk> \<Longrightarrow> \<exists>t u ra v. front_tickFree v \<and> (tickFree ra \<or> v = []) \<and> r = ra @ v \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 4. \<And>xa t u r. \<lbrakk>chain Y; r setinterleaves ((t, u), insert tick (ev ` A)); t \<in> D S; \<forall>x. u \<in> T (Y x)\<rbrakk> \<Longrightarrow> \<exists>t u ra v. front_tickFree v \<and> (tickFree ra \<or> v = []) \<and> r = ra @ v \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 5. \<And>x. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. \<And>xa t u r v. \<lbrakk>chain Y; front_tickFree v; r setinterleaves ((t, u), insert tick (ev ` A)); tickFree r; t \<in> D S; \<forall>x. u \<in> T (Y x)\<rbrakk> \<Longrightarrow> \<exists>t u ra va. front_tickFree va \<and> (tickFree ra \<or> va = []) \<and> r @ v = ra @ va \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 2. \<And>xa t u r. \<lbrakk>chain Y; r setinterleaves ((t, u), insert tick (ev ` A)); \<forall>x. t \<in> D (Y x); u \<in> T S\<rbrakk> \<Longrightarrow> \<exists>t u ra v. front_tickFree v \<and> (tickFree ra \<or> v = []) \<and> r = ra @ v \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 3. \<And>xa t u r. \<lbrakk>chain Y; r setinterleaves ((t, u), insert tick (ev ` A)); t \<in> D S; \<forall>x. u \<in> T (Y x)\<rbrakk> \<Longrightarrow> \<exists>t u ra v. front_tickFree v \<and> (tickFree ra \<or> v = []) \<and> r = ra @ v \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 4. \<And>x. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>xa t u r. \<lbrakk>chain Y; r setinterleaves ((t, u), insert tick (ev ` A)); \<forall>x. t \<in> D (Y x); u \<in> T S\<rbrakk> \<Longrightarrow> \<exists>t u ra v. front_tickFree v \<and> (tickFree ra \<or> v = []) \<and> r = ra @ v \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 2. \<And>xa t u r. \<lbrakk>chain Y; r setinterleaves ((t, u), insert tick (ev ` A)); t \<in> D S; \<forall>x. u \<in> T (Y x)\<rbrakk> \<Longrightarrow> \<exists>t u ra v. front_tickFree v \<and> (tickFree ra \<or> v = []) \<and> r = ra @ v \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 3. \<And>x. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
using front_tickFree_Nil
[PROOF STATE]
proof (prove)
using this:
front_tickFree []

goal (3 subgoals):
 1. \<And>xa t u r. \<lbrakk>chain Y; r setinterleaves ((t, u), insert tick (ev ` A)); \<forall>x. t \<in> D (Y x); u \<in> T S\<rbrakk> \<Longrightarrow> \<exists>t u ra v. front_tickFree v \<and> (tickFree ra \<or> v = []) \<and> r = ra @ v \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 2. \<And>xa t u r. \<lbrakk>chain Y; r setinterleaves ((t, u), insert tick (ev ` A)); t \<in> D S; \<forall>x. u \<in> T (Y x)\<rbrakk> \<Longrightarrow> \<exists>t u ra v. front_tickFree v \<and> (tickFree ra \<or> v = []) \<and> r = ra @ v \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 3. \<And>x. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa t u r. \<lbrakk>chain Y; r setinterleaves ((t, u), insert tick (ev ` A)); t \<in> D S; \<forall>x. u \<in> T (Y x)\<rbrakk> \<Longrightarrow> \<exists>t u ra v. front_tickFree v \<and> (tickFree ra \<or> v = []) \<and> r = ra @ v \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 2. \<And>x. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
using front_tickFree_Nil
[PROOF STATE]
proof (prove)
using this:
front_tickFree []

goal (2 subgoals):
 1. \<And>xa t u r. \<lbrakk>chain Y; r setinterleaves ((t, u), insert tick (ev ` A)); t \<in> D S; \<forall>x. u \<in> T (Y x)\<rbrakk> \<Longrightarrow> \<exists>t u ra v. front_tickFree v \<and> (tickFree ra \<or> v = []) \<and> r = ra @ v \<and> ra setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
 2. \<And>x. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
fix x
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
assume A: "chain Y"
    and B: " \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves
    ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))"
[PROOF STATE]
proof (state)
this:
chain Y
\<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))

goal (1 subgoal):
 1. \<And>x. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
thus "\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves
    ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))"
[PROOF STATE]
proof (prove)
using this:
chain Y
\<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))

goal (1 subgoal):
 1. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
proof(cases "\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow>
            (r\<le>x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from A
[PROOF STATE]
proof (chain)
picking this:
chain Y
[PROOF STEP]
obtain tryunion where Ctryy: "tryunion={(t, u, r). r setinterleaves
      ((t, u), insert tick (ev ` A))\<and>(\<exists>v.(x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = [])))}"
[PROOF STATE]
proof (prove)
using this:
chain Y

goal (1 subgoal):
 1. (\<And>tryunion. tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))} \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from Ctryy inters_fin
[PROOF STATE]
proof (chain)
picking this:
tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}
finite {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` ?A)) \<and> (\<exists>v. ?x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}
[PROOF STEP]
have tolfin: "finite tryunion"
[PROOF STATE]
proof (prove)
using this:
tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}
finite {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` ?A)) \<and> (\<exists>v. ?x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}

goal (1 subgoal):
 1. finite tryunion
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
finite tryunion

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
obtain tryunion1 where Ctryy1: "tryunion1={n. \<exists>(t,u, r)\<in>tryunion.(t \<in> D (Y n) \<and> u\<in>T S \<or> t \<in>
      D S \<and> u \<in> T (Y n))}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>tryunion1. tryunion1 = {n. \<exists>(t, u, r)\<in>tryunion. t \<in> D (Y n) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y n)} \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
tryunion1 = {n. \<exists>(t, u, r)\<in>tryunion. t \<in> D (Y n) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y n)}

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from B Ctryy1 Ctryy
[PROOF STATE]
proof (chain)
picking this:
\<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
tryunion1 = {n. \<exists>(t, u, r)\<in>tryunion. t \<in> D (Y n) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y n)}
tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}
[PROOF STEP]
have Ctryy3: "\<forall>n. n\<in>tryunion1"
[PROOF STATE]
proof (prove)
using this:
\<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
tryunion1 = {n. \<exists>(t, u, r)\<in>tryunion. t \<in> D (Y n) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y n)}
tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}

goal (1 subgoal):
 1. \<forall>n. n \<in> tryunion1
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<forall>n. n \<in> tryunion1

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from Ctryy3
[PROOF STATE]
proof (chain)
picking this:
\<forall>n. n \<in> tryunion1
[PROOF STEP]
have Ctryy2: "infinite tryunion1"
[PROOF STATE]
proof (prove)
using this:
\<forall>n. n \<in> tryunion1

goal (1 subgoal):
 1. infinite tryunion1
[PROOF STEP]
using finite_nat_set_iff_bounded
[PROOF STATE]
proof (prove)
using this:
\<forall>n. n \<in> tryunion1
finite ?N = (\<exists>m. \<forall>n\<in>?N. n < m)

goal (1 subgoal):
 1. infinite tryunion1
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
infinite tryunion1

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from Ctryy2 Ctryy1 tolfin
[PROOF STATE]
proof (chain)
picking this:
infinite tryunion1
tryunion1 = {n. \<exists>(t, u, r)\<in>tryunion. t \<in> D (Y n) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y n)}
finite tryunion
[PROOF STEP]
obtain  r2 t2 u2 where Ee: "(t2,u2, r2)\<in>tryunion \<and>
      infinite {n. (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n))}"
[PROOF STATE]
proof (prove)
using this:
infinite tryunion1
tryunion1 = {n. \<exists>(t, u, r)\<in>tryunion. t \<in> D (Y n) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y n)}
finite tryunion

goal (1 subgoal):
 1. (\<And>t2 u2 r2. (t2, u2, r2) \<in> tryunion \<and> infinite {n. t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)} \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(t2, u2, r2) \<in> tryunion \<and> infinite {n. t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)}

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from True Ee  Ctryy
[PROOF STATE]
proof (chain)
picking this:
\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))
(t2, u2, r2) \<in> tryunion \<and> infinite {n. t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)}
tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}
[PROOF STEP]
obtain x1 x2 where Ee1: "((t2 \<notin> D (Y x1)) \<or> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow>
      (u2 \<notin> T (Y x2)))"
[PROOF STATE]
proof (prove)
using this:
\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))
(t2, u2, r2) \<in> tryunion \<and> infinite {n. t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)}
tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}

goal (1 subgoal):
 1. (\<And>x1 x2. (t2 \<notin> D (Y x1) \<or> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
apply (simp add: le_list_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>\<And>x1 x2. (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)) \<Longrightarrow> thesis; \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> (\<exists>ra. r @ ra = x) \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))); r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> (finite {n. t2 \<in> D (Y n) \<and> u2 \<in> T S} \<longrightarrow> infinite {n. t2 \<in> D S \<and> u2 \<in> T (Y n)}); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
(t2 \<notin> D (Y x1) \<or> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2))

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from Ee Ee1 Ctryy
[PROOF STATE]
proof (chain)
picking this:
(t2, u2, r2) \<in> tryunion \<and> infinite {n. t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)}
(t2 \<notin> D (Y x1) \<or> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2))
tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}
[PROOF STEP]
obtain x3 where Ee2: "(x1\<le>x3) \<and> (x2\<le>x3) \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or>
      t2 \<in> D S \<and> u2 \<in> T (Y x3))"
[PROOF STATE]
proof (prove)
using this:
(t2, u2, r2) \<in> tryunion \<and> infinite {n. t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)}
(t2 \<notin> D (Y x1) \<or> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2))
tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}

goal (1 subgoal):
 1. (\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
apply(simp add: infinite_nat_iff_unbounded_le)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
assume a1: "r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and>
        front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or>
        (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n)))"
[PROOF STATE]
proof (state)
this:
r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n)))

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
assume a2: "\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3\<and>(t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3))
        \<Longrightarrow> thesis"
[PROOF STATE]
proof (state)
this:
x1 \<le> ?x3.0 \<and> x2 \<le> ?x3.0 \<and> (t2 \<in> D (Y ?x3.0) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y ?x3.0)) \<Longrightarrow> thesis

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
obtain nn :: "nat \<Rightarrow> nat" where f3: "\<forall>x0. (\<exists>v1\<ge>x0. t2 \<in> D S \<and> u2 \<in> T (Y v1)) =
        (x0 \<le> nn x0 \<and> t2 \<in> D S \<and> u2 \<in> T (Y (nn x0)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>nn. \<forall>x0. (\<exists>v1\<ge>x0. t2 \<in> D S \<and> u2 \<in> T (Y v1)) = (x0 \<le> nn x0 \<and> t2 \<in> D S \<and> u2 \<in> T (Y (nn x0))) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
\<forall>x0. (\<exists>v1\<ge>x0. t2 \<in> D S \<and> u2 \<in> T (Y v1)) = (x0 \<le> nn x0 \<and> t2 \<in> D S \<and> u2 \<in> T (Y (nn x0)))

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
obtain nna :: "nat \<Rightarrow> nat" where "\<forall>x0. (\<exists>v1\<ge>x0. t2 \<in> D (Y v1) \<and> u2 \<in> T S) =
        (x0 \<le> nna x0 \<and> t2 \<in> D (Y (nna x0)) \<and> u2 \<in> T S)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>nna. \<forall>x0. (\<exists>v1\<ge>x0. t2 \<in> D (Y v1) \<and> u2 \<in> T S) = (x0 \<le> nna x0 \<and> t2 \<in> D (Y (nna x0)) \<and> u2 \<in> T S) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
\<forall>x0. (\<exists>v1\<ge>x0. t2 \<in> D (Y v1) \<and> u2 \<in> T S) = (x0 \<le> nna x0 \<and> t2 \<in> D (Y (nna x0)) \<and> u2 \<in> T S)

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<forall>x0. (\<exists>v1\<ge>x0. t2 \<in> D (Y v1) \<and> u2 \<in> T S) = (x0 \<le> nna x0 \<and> t2 \<in> D (Y (nna x0)) \<and> u2 \<in> T S)
[PROOF STEP]
have f4: "(\<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S) \<or> (\<forall>n. n \<le> nn n \<and> t2 \<in> D S
        \<and> u2 \<in> T (Y (nn n)))"
[PROOF STATE]
proof (prove)
using this:
\<forall>x0. (\<exists>v1\<ge>x0. t2 \<in> D (Y v1) \<and> u2 \<in> T S) = (x0 \<le> nna x0 \<and> t2 \<in> D (Y (nna x0)) \<and> u2 \<in> T S)

goal (1 subgoal):
 1. (\<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S) \<or> (\<forall>n. n \<le> nn n \<and> t2 \<in> D S \<and> u2 \<in> T (Y (nn n)))
[PROOF STEP]
using f3 a1
[PROOF STATE]
proof (prove)
using this:
\<forall>x0. (\<exists>v1\<ge>x0. t2 \<in> D (Y v1) \<and> u2 \<in> T S) = (x0 \<le> nna x0 \<and> t2 \<in> D (Y (nna x0)) \<and> u2 \<in> T S)
\<forall>x0. (\<exists>v1\<ge>x0. t2 \<in> D S \<and> u2 \<in> T (Y v1)) = (x0 \<le> nn x0 \<and> t2 \<in> D S \<and> u2 \<in> T (Y (nn x0)))
r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n)))

goal (1 subgoal):
 1. (\<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S) \<or> (\<forall>n. n \<le> nn n \<and> t2 \<in> D S \<and> u2 \<in> T (Y (nn n)))
[PROOF STEP]
by presburger
[PROOF STATE]
proof (state)
this:
(\<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S) \<or> (\<forall>n. n \<le> nn n \<and> t2 \<in> D S \<and> u2 \<in> T (Y (nn n)))

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
have "(\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))) \<or> (\<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and>
        u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))) \<or> (\<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)))
[PROOF STEP]
by (metis le_cases order.trans)
[PROOF STATE]
proof (state)
this:
(\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))) \<or> (\<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)))

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))) \<or> (\<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)))

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
(\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))) \<or> (\<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)))

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
assume "\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))"
[PROOF STATE]
proof (state)
this:
\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))
[PROOF STEP]
have "\<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S"
[PROOF STATE]
proof (prove)
using this:
\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))

goal (1 subgoal):
 1. \<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S
[PROOF STEP]
using f4
[PROOF STATE]
proof (prove)
using this:
\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))
(\<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S) \<or> (\<forall>n. n \<le> nn n \<and> t2 \<in> D S \<and> u2 \<in> T (Y (nn n)))

goal (1 subgoal):
 1. \<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S
[PROOF STEP]
have "\<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n))"
[PROOF STATE]
proof (prove)
using this:
\<forall>n. n \<le> nna n \<and> t2 \<in> D (Y (nna n)) \<and> u2 \<in> T S

goal (1 subgoal):
 1. \<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n))
[PROOF STEP]
by (metis (no_types) le_cases order.trans)
[PROOF STATE]
proof (state)
this:
\<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n))

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n)) \<Longrightarrow> \<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n))

goal (1 subgoal):
 1. \<lbrakk>\<And>x3. x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3)) \<Longrightarrow> thesis; r2 setinterleaves ((t2, u2), insert tick (ev ` A)) \<and> (\<exists>v. x = r2 @ v \<and> front_tickFree v \<and> (tickFree r2 \<or> v = [])) \<and> ((\<forall>m. \<exists>n\<ge>m. t2 \<in> D (Y n) \<and> u2 \<in> T S) \<or> (\<forall>m. \<exists>n\<ge>m. t2 \<in> D S \<and> u2 \<in> T (Y n))); (t2 \<in> D (Y x1) \<longrightarrow> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2)); tryunion = {(t, u, r). r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (\<exists>v. x = r @ v \<and> front_tickFree v \<and> (tickFree r \<or> v = []))}\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
(\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))) \<or> (\<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)))
\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n)) \<Longrightarrow> \<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
(\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))) \<or> (\<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)))
\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n)) \<Longrightarrow> \<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n))

goal (1 subgoal):
 1. thesis
[PROOF STEP]
using a2
[PROOF STATE]
proof (prove)
using this:
(\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n))) \<or> (\<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)))
\<exists>n. \<not> n \<le> nn n \<or> t2 \<notin> D S \<or> u2 \<notin> T (Y (nn n)) \<Longrightarrow> \<exists>n\<ge>x1. x2 \<le> n \<and> (t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n))
x1 \<le> ?x3.0 \<and> x2 \<le> ?x3.0 \<and> (t2 \<in> D (Y ?x3.0) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y ?x3.0)) \<Longrightarrow> thesis

goal (1 subgoal):
 1. thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
thesis

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3))

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from A
[PROOF STATE]
proof (chain)
picking this:
chain Y
[PROOF STEP]
have Abb1: "\<forall>n1 n2. n1\<le>n2 \<longrightarrow> Y n1 \<sqsubseteq> Y n2"
[PROOF STATE]
proof (prove)
using this:
chain Y

goal (1 subgoal):
 1. \<forall>n1 n2. n1 \<le> n2 \<longrightarrow> Y n1 \<sqsubseteq> Y n2
[PROOF STEP]
by (simp add: po_class.chain_mono)
[PROOF STATE]
proof (state)
this:
\<forall>n1 n2. n1 \<le> n2 \<longrightarrow> Y n1 \<sqsubseteq> Y n2

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from A Abb1
[PROOF STATE]
proof (chain)
picking this:
chain Y
\<forall>n1 n2. n1 \<le> n2 \<longrightarrow> Y n1 \<sqsubseteq> Y n2
[PROOF STEP]
have Abb2: "\<forall>n1 n2. n1>n2\<and>t \<notin> D (Y n2)\<longrightarrow>t \<notin> D (Y n1)"
[PROOF STATE]
proof (prove)
using this:
chain Y
\<forall>n1 n2. n1 \<le> n2 \<longrightarrow> Y n1 \<sqsubseteq> Y n2

goal (1 subgoal):
 1. \<forall>n1 n2. n2 < n1 \<and> t \<notin> D (Y n2) \<longrightarrow> t \<notin> D (Y n1)
[PROOF STEP]
using le_approx1 less_imp_le_nat
[PROOF STATE]
proof (prove)
using this:
chain Y
\<forall>n1 n2. n1 \<le> n2 \<longrightarrow> Y n1 \<sqsubseteq> Y n2
?P \<sqsubseteq> ?Q \<Longrightarrow> D ?Q \<subseteq> D ?P
?m < ?n \<Longrightarrow> ?m \<le> ?n

goal (1 subgoal):
 1. \<forall>n1 n2. n2 < n1 \<and> t \<notin> D (Y n2) \<longrightarrow> t \<notin> D (Y n1)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<forall>n1 n2. n2 < n1 \<and> t \<notin> D (Y n2) \<longrightarrow> t \<notin> D (Y n1)

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from A Abb1
[PROOF STATE]
proof (chain)
picking this:
chain Y
\<forall>n1 n2. n1 \<le> n2 \<longrightarrow> Y n1 \<sqsubseteq> Y n2
[PROOF STEP]
have Abb3: "\<forall>n1 n2. n1>n2\<and>t \<notin> T (Y n2)\<longrightarrow>t \<notin> T (Y n1)"
[PROOF STATE]
proof (prove)
using this:
chain Y
\<forall>n1 n2. n1 \<le> n2 \<longrightarrow> Y n1 \<sqsubseteq> Y n2

goal (1 subgoal):
 1. \<forall>n1 n2. n2 < n1 \<and> t \<notin> T (Y n2) \<longrightarrow> t \<notin> T (Y n1)
[PROOF STEP]
by (meson NT_ND le_approx2T less_imp_le_nat)
[PROOF STATE]
proof (state)
this:
\<forall>n1 n2. n2 < n1 \<and> t \<notin> T (Y n2) \<longrightarrow> t \<notin> T (Y n1)

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from Abb2 Ee2
[PROOF STATE]
proof (chain)
picking this:
\<forall>n1 n2. n2 < n1 \<and> t \<notin> D (Y n2) \<longrightarrow> t \<notin> D (Y n1)
x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3))
[PROOF STEP]
have Ab1: "t2 \<notin> D (Y x1)\<longrightarrow>t2 \<notin> D (Y x3)"
[PROOF STATE]
proof (prove)
using this:
\<forall>n1 n2. n2 < n1 \<and> t \<notin> D (Y n2) \<longrightarrow> t \<notin> D (Y n1)
x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3))

goal (1 subgoal):
 1. t2 \<notin> D (Y x1) \<longrightarrow> t2 \<notin> D (Y x3)
[PROOF STEP]
by (meson Abb1 le_approx1 less_imp_le_nat subsetCE)
[PROOF STATE]
proof (state)
this:
t2 \<notin> D (Y x1) \<longrightarrow> t2 \<notin> D (Y x3)

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from Abb3
[PROOF STATE]
proof (chain)
picking this:
\<forall>n1 n2. n2 < n1 \<and> t \<notin> T (Y n2) \<longrightarrow> t \<notin> T (Y n1)
[PROOF STEP]
have Ab2: "u2 \<notin> T (Y x2)\<longrightarrow>u2 \<notin> T (Y x3)"
[PROOF STATE]
proof (prove)
using this:
\<forall>n1 n2. n2 < n1 \<and> t \<notin> T (Y n2) \<longrightarrow> t \<notin> T (Y n1)

goal (1 subgoal):
 1. u2 \<notin> T (Y x2) \<longrightarrow> u2 \<notin> T (Y x3)
[PROOF STEP]
by (meson Abb1 Ee2 NT_ND le_approx2T less_imp_le_nat)
[PROOF STATE]
proof (state)
this:
u2 \<notin> T (Y x2) \<longrightarrow> u2 \<notin> T (Y x3)

goal (2 subgoals):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
 2. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from True Ee Ee1  Ee2 Ab1 Ab2
[PROOF STATE]
proof (chain)
picking this:
\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))
(t2, u2, r2) \<in> tryunion \<and> infinite {n. t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)}
(t2 \<notin> D (Y x1) \<or> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2))
x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3))
t2 \<notin> D (Y x1) \<longrightarrow> t2 \<notin> D (Y x3)
u2 \<notin> T (Y x2) \<longrightarrow> u2 \<notin> T (Y x3)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x)))
(t2, u2, r2) \<in> tryunion \<and> infinite {n. t2 \<in> D (Y n) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y n)}
(t2 \<notin> D (Y x1) \<or> u2 \<notin> T S) \<and> (t2 \<in> D S \<longrightarrow> u2 \<notin> T (Y x2))
x1 \<le> x3 \<and> x2 \<le> x3 \<and> (t2 \<in> D (Y x3) \<and> u2 \<in> T S \<or> t2 \<in> D S \<and> u2 \<in> T (Y x3))
t2 \<notin> D (Y x1) \<longrightarrow> t2 \<notin> D (Y x3)
u2 \<notin> T (Y x2) \<longrightarrow> u2 \<notin> T (Y x3)

goal (1 subgoal):
 1. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))

goal (1 subgoal):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))

goal (1 subgoal):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from A B False
[PROOF STATE]
proof (chain)
picking this:
chain Y
\<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
\<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))
[PROOF STEP]
obtain t u r where Bb1: "r setinterleaves ((t, u), insert tick (ev ` A)) \<and>
      r \<le> x \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))"
[PROOF STATE]
proof (prove)
using this:
chain Y
\<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
\<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))

goal (1 subgoal):
 1. (\<And>r t u. r setinterleaves ((t, u), insert tick (ev ` A)) \<and> r \<le> x \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x))) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
r setinterleaves ((t, u), insert tick (ev ` A)) \<and> r \<le> x \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))

goal (1 subgoal):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from B
[PROOF STATE]
proof (chain)
picking this:
\<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
[PROOF STEP]
have Bb21: "front_tickFree x"
[PROOF STATE]
proof (prove)
using this:
\<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))

goal (1 subgoal):
 1. front_tickFree x
[PROOF STEP]
by (metis D_imp_front_tickFree append_Nil2 front_tickFree_append ftf_syn is_processT2_TR)
[PROOF STATE]
proof (state)
this:
front_tickFree x

goal (1 subgoal):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
from B Bb1
[PROOF STATE]
proof (chain)
picking this:
\<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
r setinterleaves ((t, u), insert tick (ev ` A)) \<and> r \<le> x \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
have Bb2: "\<exists>v. front_tickFree v \<and> (tickFree r \<or> v = [])\<and> x = r @ v"
[PROOF STATE]
proof (prove)
using this:
\<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa))
r setinterleaves ((t, u), insert tick (ev ` A)) \<and> r \<le> x \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))

goal (1 subgoal):
 1. \<exists>v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v
[PROOF STEP]
by (metis Bb21 front_tickFree_Nil front_tickFree_mono le_list_def)
[PROOF STATE]
proof (state)
this:
\<exists>v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v

goal (1 subgoal):
 1. \<lbrakk>chain Y; \<forall>xa. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D (Y xa) \<and> u \<in> T S \<or> t \<in> D S \<and> u \<in> T (Y xa)); \<not> (\<forall>t u r. r setinterleaves ((t, u), insert tick (ev ` A)) \<longrightarrow> r \<le> x \<longrightarrow> ((\<exists>x. t \<notin> D (Y x)) \<or> u \<notin> T S) \<and> (t \<in> D S \<longrightarrow> (\<exists>x. u \<notin> T (Y x))))\<rbrakk> \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<exists>v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v

goal (1 subgoal):
 1. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
using Bb1
[PROOF STATE]
proof (prove)
using this:
\<exists>v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v
r setinterleaves ((t, u), insert tick (ev ` A)) \<and> r \<le> x \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))

goal (1 subgoal):
 1. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((\<forall>x. t \<in> D (Y x)) \<and> u \<in> T S \<or> t \<in> D S \<and> (\<forall>x. u \<in> T (Y x)))

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma assert_bound'_cases:
  assumes "\<lbrakk>\<unrhd>\<^sub>u\<^sub>b (lt dir) c ((UB dir) s x)\<rbrakk> \<Longrightarrow> P s"
  assumes "\<lbrakk>\<not> (\<unrhd>\<^sub>u\<^sub>b (lt dir) c ((UB dir) s x)); \<lhd>\<^sub>l\<^sub>b (lt dir) c ((LB dir) s x)\<rbrakk> \<Longrightarrow>
     P (set_unsat [i, ((LI dir) s x)] (update\<B>\<I> (UBI_upd dir) i x c s))"
  assumes "\<lbrakk>x \<notin> lvars (\<T> s); (lt dir) c (\<langle>\<V> s\<rangle> x); \<not> (\<unrhd>\<^sub>u\<^sub>b (lt dir) c ((UB dir) s x)); \<not> (\<lhd>\<^sub>l\<^sub>b (lt dir) c ((LB dir) s x))\<rbrakk> \<Longrightarrow>
     P (update x c (update\<B>\<I> (UBI_upd dir) i x c s))"
  assumes "\<lbrakk>\<not> (\<unrhd>\<^sub>u\<^sub>b (lt dir) c ((UB dir) s x)); \<not> (\<lhd>\<^sub>l\<^sub>b (lt dir) c ((LB dir) s x)); x \<in> lvars (\<T> s)\<rbrakk> \<Longrightarrow>
     P (update\<B>\<I> (UBI_upd dir) i x c s)"
  assumes "\<lbrakk>\<not> (\<unrhd>\<^sub>u\<^sub>b (lt dir) c ((UB dir) s x)); \<not> (\<lhd>\<^sub>l\<^sub>b (lt dir) c ((LB dir) s x)); \<not> ((lt dir) c (\<langle>\<V> s\<rangle> x))\<rbrakk> \<Longrightarrow>
     P (update\<B>\<I> (UBI_upd dir) i x c s)"
  assumes "dir = Positive \<or> dir = Negative"
  shows "P (assert_bound' dir i x c s)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
proof (cases "\<unrhd>\<^sub>u\<^sub>b (lt dir) c ((UB dir) s x)")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
 2. \<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
\<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)

goal (2 subgoals):
 1. \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
 2. \<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
using assms(1)
[PROOF STATE]
proof (prove)
using this:
\<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)
\<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x) \<Longrightarrow> P s

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P (assert_bound' dir i x c s)

goal (1 subgoal):
 1. \<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)

goal (1 subgoal):
 1. \<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
proof (cases "\<lhd>\<^sub>l\<^sub>b (lt dir) c ((LB dir) s x)")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
 2. \<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
\<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)

goal (2 subgoals):
 1. \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
 2. \<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
using \<open>\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c ((UB dir) s x)\<close>
[PROOF STATE]
proof (prove)
using this:
\<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)
\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
using assms(2)
[PROOF STATE]
proof (prove)
using this:
\<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)
\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)
\<lbrakk>\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x); \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)\<rbrakk> \<Longrightarrow> P (set_unsat [i, LI dir s x] (update\<B>\<I> (UBI_upd dir) i x c s))

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P (assert_bound' dir i x c s)

goal (1 subgoal):
 1. \<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)

goal (1 subgoal):
 1. \<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
let ?s = "update\<B>\<I> (UBI_upd dir) i x c s"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
proof (cases "x \<notin> lvars (\<T> ?s) \<and> (lt dir) c (\<langle>\<V> s\<rangle> x)")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x) \<Longrightarrow> P (assert_bound' dir i x c s)
 2. \<not> (x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)

goal (2 subgoals):
 1. x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x) \<Longrightarrow> P (assert_bound' dir i x c s)
 2. \<not> (x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
using \<open>\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c ((UB dir) s x)\<close> \<open>\<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c ((LB dir) s x)\<close>
[PROOF STATE]
proof (prove)
using this:
x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)
\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)
\<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
using assms(3) assms(6)
[PROOF STATE]
proof (prove)
using this:
x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)
\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)
\<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)
\<lbrakk>x \<notin> lvars (\<T> s); lt dir c (\<langle>\<V> s\<rangle> x); \<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x); \<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)\<rbrakk> \<Longrightarrow> P (update x c (update\<B>\<I> (UBI_upd dir) i x c s))
dir = Positive \<or> dir = Negative

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
P (assert_bound' dir i x c s)

goal (1 subgoal):
 1. \<not> (x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> (x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> (x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x))

goal (1 subgoal):
 1. \<not> (x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<not> (x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x))
[PROOF STEP]
have "x \<in> lvars (\<T> ?s) \<or> \<not> ((lt dir) c (\<langle>\<V> s\<rangle> x))"
[PROOF STATE]
proof (prove)
using this:
\<not> (x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x))

goal (1 subgoal):
 1. x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<or> \<not> lt dir c (\<langle>\<V> s\<rangle> x)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<or> \<not> lt dir c (\<langle>\<V> s\<rangle> x)

goal (1 subgoal):
 1. \<not> (x \<notin> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<and> lt dir c (\<langle>\<V> s\<rangle> x)) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<or> \<not> lt dir c (\<langle>\<V> s\<rangle> x)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<or> \<not> lt dir c (\<langle>\<V> s\<rangle> x)

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<Longrightarrow> P (assert_bound' dir i x c s)
 2. \<not> lt dir c (\<langle>\<V> s\<rangle> x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
assume "x \<in> lvars (\<T> ?s)"
[PROOF STATE]
proof (state)
this:
x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s))

goal (2 subgoals):
 1. x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s)) \<Longrightarrow> P (assert_bound' dir i x c s)
 2. \<not> lt dir c (\<langle>\<V> s\<rangle> x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s))

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
using \<open>\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c ((UB dir) s x)\<close> \<open>\<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c ((LB dir) s x)\<close>
[PROOF STATE]
proof (prove)
using this:
x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s))
\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)
\<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
using assms(4) assms(6)
[PROOF STATE]
proof (prove)
using this:
x \<in> lvars (\<T> (update\<B>\<I> (UBI_upd dir) i x c s))
\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)
\<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)
\<lbrakk>\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x); \<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x); x \<in> lvars (\<T> s)\<rbrakk> \<Longrightarrow> P (update\<B>\<I> (UBI_upd dir) i x c s)
dir = Positive \<or> dir = Negative

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
P (assert_bound' dir i x c s)

goal (1 subgoal):
 1. \<not> lt dir c (\<langle>\<V> s\<rangle> x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> lt dir c (\<langle>\<V> s\<rangle> x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
assume "\<not> (lt dir) c (\<langle>\<V> s\<rangle> x)"
[PROOF STATE]
proof (state)
this:
\<not> lt dir c (\<langle>\<V> s\<rangle> x)

goal (1 subgoal):
 1. \<not> lt dir c (\<langle>\<V> s\<rangle> x) \<Longrightarrow> P (assert_bound' dir i x c s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<not> lt dir c (\<langle>\<V> s\<rangle> x)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<not> lt dir c (\<langle>\<V> s\<rangle> x)

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
using \<open>\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c ((UB dir) s x)\<close> \<open>\<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c ((LB dir) s x)\<close>
[PROOF STATE]
proof (prove)
using this:
\<not> lt dir c (\<langle>\<V> s\<rangle> x)
\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)
\<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
using assms(5) assms(6)
[PROOF STATE]
proof (prove)
using this:
\<not> lt dir c (\<langle>\<V> s\<rangle> x)
\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x)
\<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x)
\<lbrakk>\<not> \<unrhd>\<^sub>u\<^sub>b (lt dir) c (UB dir s x); \<not> \<lhd>\<^sub>l\<^sub>b (lt dir) c (LB dir s x); \<not> lt dir c (\<langle>\<V> s\<rangle> x)\<rbrakk> \<Longrightarrow> P (update\<B>\<I> (UBI_upd dir) i x c s)
dir = Positive \<or> dir = Negative

goal (1 subgoal):
 1. P (assert_bound' dir i x c s)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P (assert_bound' dir i x c s)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P (assert_bound' dir i x c s)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P (assert_bound' dir i x c s)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P (assert_bound' dir i x c s)

goal:
No subgoals!
[PROOF STEP]
qed