[STATEMENT]
lemma "p3 = q3"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. p3 = q3
[PROOF STEP]
nitpick [expect = none]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. p3 = q3
[PROOF STEP]
nitpick [non_wf, expect = none]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. p3 = q3
[PROOF STEP]
sorry


[STATEMENT]
lemma prj_in_hom [intro]:
    shows "\<guillemotleft>Prj\<^sub>1\<^sub>1 : \<mu>\<nu>_\<pi>.chine \<rightarrow>\<^sub>C \<mu>.apex\<guillemotright>"
    and "\<guillemotleft>Prj\<^sub>0\<^sub>1 : \<mu>\<nu>_\<pi>.chine \<rightarrow>\<^sub>C \<nu>.apex\<guillemotright>"
    and "\<guillemotleft>Prj\<^sub>0 : \<mu>\<nu>_\<pi>.chine \<rightarrow>\<^sub>C \<pi>.apex\<guillemotright>"
    and "\<guillemotleft>Prj\<^sub>1 : \<mu>\<nu>\<pi>.chine \<rightarrow>\<^sub>C \<mu>.apex\<guillemotright>"
    and "\<guillemotleft>Prj\<^sub>1\<^sub>0 : \<mu>\<nu>\<pi>.chine \<rightarrow>\<^sub>C \<nu>.apex\<guillemotright>"
    and "\<guillemotleft>Prj\<^sub>0\<^sub>0 : \<mu>\<nu>\<pi>.chine \<rightarrow>\<^sub>C \<pi>.apex\<guillemotright>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<guillemotleft>Prj\<^sub>1\<^sub>1 : \<mu>\<nu>_\<pi>.chine \<rightarrow>\<^sub>C \<mu>.apex\<guillemotright> &&& \<guillemotleft>Prj\<^sub>0\<^sub>1 : \<mu>\<nu>_\<pi>.chine \<rightarrow>\<^sub>C \<nu>.apex\<guillemotright> &&& \<guillemotleft>Prj\<^sub>0 : \<mu>\<nu>_\<pi>.chine \<rightarrow>\<^sub>C \<pi>.apex\<guillemotright>) &&& \<guillemotleft>Prj\<^sub>1 : \<mu>\<nu>\<pi>.chine \<rightarrow>\<^sub>C \<mu>.apex\<guillemotright> &&& \<guillemotleft>Prj\<^sub>1\<^sub>0 : \<mu>\<nu>\<pi>.chine \<rightarrow>\<^sub>C \<nu>.apex\<guillemotright> &&& \<guillemotleft>Prj\<^sub>0\<^sub>0 : \<mu>\<nu>\<pi>.chine \<rightarrow>\<^sub>C \<pi>.apex\<guillemotright>
[PROOF STEP]
using \<mu>\<nu>.composable \<nu>\<pi>.composable src_def trg_def chine_composite
[PROOF STATE]
proof (prove)
using this:
src \<mu> = trg \<nu>
src \<nu> = trg \<pi>
src ?\<mu> \<equiv> if arr ?\<mu> then mkObj (C.cod (Leg0 (Dom ?\<mu>))) else null
trg ?\<mu> \<equiv> if arr ?\<mu> then mkObj (C.cod (Leg1 (Dom ?\<mu>))) else null
\<mu>\<nu>_\<pi>.chine = \<nu>.leg0 \<cdot> \<mu>\<nu>.prj\<^sub>0 \<down>\<down> \<pi>.leg1
\<mu>\<nu>\<pi>.chine = \<mu>.leg0 \<down>\<down> \<nu>.leg1 \<cdot> \<nu>\<pi>.prj\<^sub>1

goal (1 subgoal):
 1. (\<guillemotleft>Prj\<^sub>1\<^sub>1 : \<mu>\<nu>_\<pi>.chine \<rightarrow>\<^sub>C \<mu>.apex\<guillemotright> &&& \<guillemotleft>Prj\<^sub>0\<^sub>1 : \<mu>\<nu>_\<pi>.chine \<rightarrow>\<^sub>C \<nu>.apex\<guillemotright> &&& \<guillemotleft>Prj\<^sub>0 : \<mu>\<nu>_\<pi>.chine \<rightarrow>\<^sub>C \<pi>.apex\<guillemotright>) &&& \<guillemotleft>Prj\<^sub>1 : \<mu>\<nu>\<pi>.chine \<rightarrow>\<^sub>C \<mu>.apex\<guillemotright> &&& \<guillemotleft>Prj\<^sub>1\<^sub>0 : \<mu>\<nu>\<pi>.chine \<rightarrow>\<^sub>C \<nu>.apex\<guillemotright> &&& \<guillemotleft>Prj\<^sub>0\<^sub>0 : \<mu>\<nu>\<pi>.chine \<rightarrow>\<^sub>C \<pi>.apex\<guillemotright>
[PROOF STEP]
by auto


[STATEMENT]
lemma True
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. True
[PROOF STEP]
nunchaku[satisfy]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. True
[PROOF STEP]
nitpick[satisfy]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. True
[PROOF STEP]
oops


[STATEMENT]
lemma MGT_valid:
"\<Gamma>\<Turnstile>\<^sub>t\<^bsub>/F \<^esub>{s. s=Z \<and> \<Gamma>\<turnstile>\<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>({Stuck} \<union> Fault ` (-F)) \<and> \<Gamma>\<turnstile>c\<down>Normal s} c
    {t. \<Gamma>\<turnstile>\<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t}, {t. \<Gamma>\<turnstile>\<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Gamma>\<Turnstile>\<^sub>t\<^bsub>/F\<^esub> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s} c {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t},{t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}
[PROOF STEP]
proof (rule validtI)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>s t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow> t; s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}; t \<notin> Fault ` F\<rbrakk> \<Longrightarrow> t \<in> Normal ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t} \<union> Abrupt ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}
 2. \<And>s. s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s} \<Longrightarrow> \<Gamma>\<turnstile>c \<down> Normal s
[PROOF STEP]
fix s t
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>s t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow> t; s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}; t \<notin> Fault ` F\<rbrakk> \<Longrightarrow> t \<in> Normal ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t} \<union> Abrupt ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}
 2. \<And>s. s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s} \<Longrightarrow> \<Gamma>\<turnstile>c \<down> Normal s
[PROOF STEP]
assume "\<Gamma>\<turnstile>\<langle>c,Normal s\<rangle> \<Rightarrow> t"
         "s \<in> {s. s = Z \<and> \<Gamma>\<turnstile>\<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>({Stuck} \<union> Fault ` (-F)) \<and> \<Gamma>\<turnstile>c\<down>Normal s}"
         "t \<notin> Fault ` F"
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow> t
s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}
t \<notin> Fault ` F

goal (2 subgoals):
 1. \<And>s t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow> t; s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}; t \<notin> Fault ` F\<rbrakk> \<Longrightarrow> t \<in> Normal ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t} \<union> Abrupt ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}
 2. \<And>s. s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s} \<Longrightarrow> \<Gamma>\<turnstile>c \<down> Normal s
[PROOF STEP]
thus "t \<in> Normal ` {t. \<Gamma>\<turnstile>\<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t} \<union>
            Abrupt ` {t. \<Gamma>\<turnstile>\<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow> t
s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}
t \<notin> Fault ` F

goal (1 subgoal):
 1. t \<in> Normal ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t} \<union> Abrupt ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}
[PROOF STEP]
apply (cases t)
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. \<And>x1. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow> t; s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}; t \<notin> Fault ` F; t = Normal x1\<rbrakk> \<Longrightarrow> t \<in> Normal ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t} \<union> Abrupt ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}
 2. \<And>x2. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow> t; s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}; t \<notin> Fault ` F; t = Abrupt x2\<rbrakk> \<Longrightarrow> t \<in> Normal ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t} \<union> Abrupt ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}
 3. \<And>x3. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow> t; s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}; t \<notin> Fault ` F; t = Fault x3\<rbrakk> \<Longrightarrow> t \<in> Normal ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t} \<union> Abrupt ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}
 4. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow> t; s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}; t \<notin> Fault ` F; t = Stuck\<rbrakk> \<Longrightarrow> t \<in> Normal ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t} \<union> Abrupt ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}
[PROOF STEP]
apply (auto simp add: final_notin_def)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
t \<in> Normal ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Normal t} \<union> Abrupt ` {t. \<Gamma>\<turnstile> \<langle>c,Normal Z\<rangle> \<Rightarrow> Abrupt t}

goal (1 subgoal):
 1. \<And>s. s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s} \<Longrightarrow> \<Gamma>\<turnstile>c \<down> Normal s
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>s. s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s} \<Longrightarrow> \<Gamma>\<turnstile>c \<down> Normal s
[PROOF STEP]
fix s
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>s. s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s} \<Longrightarrow> \<Gamma>\<turnstile>c \<down> Normal s
[PROOF STEP]
assume "s \<in> {s. s=Z \<and> \<Gamma>\<turnstile>\<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>({Stuck} \<union> Fault ` (-F)) \<and> \<Gamma>\<turnstile>c\<down>Normal s}"
[PROOF STATE]
proof (state)
this:
s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}

goal (1 subgoal):
 1. \<And>s. s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s} \<Longrightarrow> \<Gamma>\<turnstile>c \<down> Normal s
[PROOF STEP]
thus "\<Gamma>\<turnstile>c\<down>Normal s"
[PROOF STATE]
proof (prove)
using this:
s \<in> {s. s = Z \<and> \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> \<Rightarrow>\<notin>{Stuck} \<union> Fault ` (- F) \<and> \<Gamma>\<turnstile>c \<down> Normal s}

goal (1 subgoal):
 1. \<Gamma>\<turnstile>c \<down> Normal s
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile>c \<down> Normal s

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma ts_inv_ok_upd_inv:
 "ts_inv_ok ts I \<Longrightarrow> ts_inv_ok (redT_updT ts ta) (upd_inv I P ta)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ts_inv_ok ts I \<Longrightarrow> ts_inv_ok (redT_updT ts ta) (upd_inv I P ta)
[PROOF STEP]
apply(cases ta)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>x11 x12 x13. \<lbrakk>ts_inv_ok ts I; ta = NewThread x11 x12 x13\<rbrakk> \<Longrightarrow> ts_inv_ok (redT_updT ts ta) (upd_inv I P ta)
 2. \<And>x21 x22. \<lbrakk>ts_inv_ok ts I; ta = ThreadExists x21 x22\<rbrakk> \<Longrightarrow> ts_inv_ok (redT_updT ts ta) (upd_inv I P ta)
[PROOF STEP]
apply(auto intro!: ts_inv_okI elim: ts_inv_okD del: iffI)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma Check_check: "Check check"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Check check
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>s. \<U> s \<Longrightarrow> check s = s
 2. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 5. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
fix s :: "('i,'a) state"
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>s. \<U> s \<Longrightarrow> check s = s
 2. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 5. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
assume "\<U> s"
[PROOF STATE]
proof (state)
this:
\<U> s

goal (5 subgoals):
 1. \<And>s. \<U> s \<Longrightarrow> check s = s
 2. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 5. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<U> s
[PROOF STEP]
show "check s = s"
[PROOF STATE]
proof (prove)
using this:
\<U> s

goal (1 subgoal):
 1. check s = s
[PROOF STEP]
by (simp add: check.simps)
[PROOF STATE]
proof (state)
this:
check s = s

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
fix s :: "('i,'a) state" and v :: "'a valuation"
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
assume *: "\<nabla> s" "\<triangle> (\<T> s)" "\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s" "\<diamond> s"
[PROOF STATE]
proof (state)
this:
\<nabla> s
\<triangle> (\<T> s)
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
\<diamond> s

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<nabla> s
\<triangle> (\<T> s)
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
\<diamond> s
[PROOF STEP]
have "v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> (check s)"
[PROOF STATE]
proof (prove)
using this:
\<nabla> s
\<triangle> (\<T> s)
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
\<diamond> s

goal (1 subgoal):
 1. v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> (check s)
[PROOF STEP]
by (rule check_induct, simp_all add: pivotandupdate_tableau_equiv)
[PROOF STATE]
proof (state)
this:
v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> (check s)

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> (check s)

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
have "\<triangle> (\<T> (check s))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<triangle> (\<T> (check s))
[PROOF STEP]
by (rule check_induct', simp_all add: * pivotandupdate_tableau_normalized)
[PROOF STATE]
proof (state)
this:
\<triangle> (\<T> (check s))

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<triangle> (\<T> (check s))

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
have "\<diamond> (check s)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<diamond> (check s)
[PROOF STEP]
by (rule check_induct', simp_all add: * pivotandupdate_tableau_normalized pivotandupdate_bounds_consistent)
[PROOF STATE]
proof (state)
this:
\<diamond> (check s)

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<diamond> (check s)

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
have "\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s (check s)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s (check s)
[PROOF STEP]
by (rule check_induct'', simp_all add: *)
[PROOF STATE]
proof (state)
this:
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s (check s)

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s (check s)

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
have "\<nabla> (check s)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<nabla> (check s)
[PROOF STEP]
proof (rule check_induct', simp_all add: * pivotandupdate_tableau_valuated)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>s x\<^sub>i dir I. \<lbrakk>dir = Direction (<) \<B>\<^sub>i\<^sub>l \<B>\<^sub>i\<^sub>u \<B>\<^sub>l \<B>\<^sub>u \<I>\<^sub>l \<I>\<^sub>u \<B>\<^sub>i\<^sub>u_update Leq Geq (\<le>) \<or> dir = Direction (\<lambda>x y. y < x) \<B>\<^sub>i\<^sub>u \<B>\<^sub>i\<^sub>l \<B>\<^sub>u \<B>\<^sub>l \<I>\<^sub>u \<I>\<^sub>l \<B>\<^sub>i\<^sub>l_update Geq Leq (\<lambda>x y. y \<le> x); \<not> \<U> s; min_lvar_not_in_bounds s = Some x\<^sub>i; \<lhd>\<^sub>l\<^sub>b (lt dir) (\<langle>\<V> s\<rangle> x\<^sub>i) (LB dir s x\<^sub>i); min_rvar_incdec dir s x\<^sub>i = Inl I; \<nabla> s\<rbrakk> \<Longrightarrow> \<nabla> (set_unsat I s)
[PROOF STEP]
fix s I
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>s x\<^sub>i dir I. \<lbrakk>dir = Direction (<) \<B>\<^sub>i\<^sub>l \<B>\<^sub>i\<^sub>u \<B>\<^sub>l \<B>\<^sub>u \<I>\<^sub>l \<I>\<^sub>u \<B>\<^sub>i\<^sub>u_update Leq Geq (\<le>) \<or> dir = Direction (\<lambda>x y. y < x) \<B>\<^sub>i\<^sub>u \<B>\<^sub>i\<^sub>l \<B>\<^sub>u \<B>\<^sub>l \<I>\<^sub>u \<I>\<^sub>l \<B>\<^sub>i\<^sub>l_update Geq Leq (\<lambda>x y. y \<le> x); \<not> \<U> s; min_lvar_not_in_bounds s = Some x\<^sub>i; \<lhd>\<^sub>l\<^sub>b (lt dir) (\<langle>\<V> s\<rangle> x\<^sub>i) (LB dir s x\<^sub>i); min_rvar_incdec dir s x\<^sub>i = Inl I; \<nabla> s\<rbrakk> \<Longrightarrow> \<nabla> (set_unsat I s)
[PROOF STEP]
show "\<nabla> s \<Longrightarrow> \<nabla> (set_unsat I s)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<nabla> s \<Longrightarrow> \<nabla> (set_unsat I s)
[PROOF STEP]
by (simp add: tableau_valuated_def)
[PROOF STATE]
proof (state)
this:
\<nabla> s \<Longrightarrow> \<nabla> (set_unsat I s)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<nabla> (check s)

goal (4 subgoals):
 1. \<And>s v. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 4. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> (check s)
\<triangle> (\<T> (check s))
\<diamond> (check s)
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s (check s)
\<nabla> (check s)
[PROOF STEP]
show "let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'"
[PROOF STATE]
proof (prove)
using this:
v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> (check s)
\<triangle> (\<T> (check s))
\<diamond> (check s)
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s (check s)
\<nabla> (check s)

goal (1 subgoal):
 1. let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'
[PROOF STEP]
by (simp add: Let_def)
[PROOF STATE]
proof (state)
this:
let s' = check s in v \<Turnstile>\<^sub>t \<T> s = v \<Turnstile>\<^sub>t \<T> s' \<and> \<triangle> (\<T> s') \<and> \<nabla> s' \<and> \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s' \<and> \<diamond> s'

goal (3 subgoals):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
fix s :: "('i,'a) state"
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
assume *: "\<nabla> s" "\<triangle> (\<T> s)" "\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s" "\<diamond> s"
[PROOF STATE]
proof (state)
this:
\<nabla> s
\<triangle> (\<T> s)
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
\<diamond> s

goal (3 subgoals):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s\<rbrakk> \<Longrightarrow> \<B>\<^sub>i (check s) = \<B>\<^sub>i s
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 3. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
from *
[PROOF STATE]
proof (chain)
picking this:
\<nabla> s
\<triangle> (\<T> s)
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
\<diamond> s
[PROOF STEP]
show "\<B>\<^sub>i (check s) = \<B>\<^sub>i s"
[PROOF STATE]
proof (prove)
using this:
\<nabla> s
\<triangle> (\<T> s)
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
\<diamond> s

goal (1 subgoal):
 1. \<B>\<^sub>i (check s) = \<B>\<^sub>i s
[PROOF STEP]
by (rule check_induct, simp_all add: pivotandupdate_bounds_id)
[PROOF STATE]
proof (state)
this:
\<B>\<^sub>i (check s) = \<B>\<^sub>i s

goal (2 subgoals):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
fix s :: "('i,'a) state"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
assume *: "\<not> \<U> s" "\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s" "\<diamond> s" "\<triangle> (\<T> s)" "\<nabla> s"
[PROOF STATE]
proof (state)
this:
\<not> \<U> s
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
\<diamond> s
\<triangle> (\<T> s)
\<nabla> s

goal (2 subgoals):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
have "\<not> \<U> (check s) \<longrightarrow> \<Turnstile> (check s)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<not> \<U> (check s) \<longrightarrow> \<Turnstile> (check s)
[PROOF STEP]
proof (rule check_induct'', simp_all add: *)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>s. \<lbrakk>\<nabla> s; \<triangle> (\<T> s); \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<not> \<U> s; min_lvar_not_in_bounds s = None\<rbrakk> \<Longrightarrow> \<Turnstile> s
[PROOF STEP]
fix s
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>s. \<lbrakk>\<nabla> s; \<triangle> (\<T> s); \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<not> \<U> s; min_lvar_not_in_bounds s = None\<rbrakk> \<Longrightarrow> \<Turnstile> s
[PROOF STEP]
assume "min_lvar_not_in_bounds s = None" "\<not> \<U> s" "\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s"
[PROOF STATE]
proof (state)
this:
min_lvar_not_in_bounds s = None
\<not> \<U> s
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s

goal (1 subgoal):
 1. \<And>s. \<lbrakk>\<nabla> s; \<triangle> (\<T> s); \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<not> \<U> s; min_lvar_not_in_bounds s = None\<rbrakk> \<Longrightarrow> \<Turnstile> s
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
min_lvar_not_in_bounds s = None
\<not> \<U> s
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
[PROOF STEP]
show " \<Turnstile> s"
[PROOF STATE]
proof (prove)
using this:
min_lvar_not_in_bounds s = None
\<not> \<U> s
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s

goal (1 subgoal):
 1. \<Turnstile> s
[PROOF STEP]
using min_lvar_not_in_bounds_None[of s]
[PROOF STATE]
proof (prove)
using this:
min_lvar_not_in_bounds s = None
\<not> \<U> s
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
min_lvar_not_in_bounds s = None \<longrightarrow> (\<forall>x\<in>lvars (\<T> s). in_bounds x \<langle>\<V> s\<rangle> (\<B> s))

goal (1 subgoal):
 1. \<Turnstile> s
[PROOF STEP]
unfolding curr_val_satisfies_state_def satisfies_state_def
[PROOF STATE]
proof (prove)
using this:
min_lvar_not_in_bounds s = None
\<not> \<U> s
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
min_lvar_not_in_bounds s = None \<longrightarrow> (\<forall>x\<in>lvars (\<T> s). in_bounds x \<langle>\<V> s\<rangle> (\<B> s))

goal (1 subgoal):
 1. \<langle>\<V> s\<rangle> \<Turnstile>\<^sub>b \<B> s \<and> \<langle>\<V> s\<rangle> \<Turnstile>\<^sub>t \<T> s
[PROOF STEP]
unfolding curr_val_satisfies_no_lhs_def
[PROOF STATE]
proof (prove)
using this:
min_lvar_not_in_bounds s = None
\<not> \<U> s
\<langle>\<V> s\<rangle> \<Turnstile>\<^sub>t \<T> s \<and> \<langle>\<V> s\<rangle> \<Turnstile>\<^sub>b \<B> s \<parallel> - lvars (\<T> s)
min_lvar_not_in_bounds s = None \<longrightarrow> (\<forall>x\<in>lvars (\<T> s). in_bounds x \<langle>\<V> s\<rangle> (\<B> s))

goal (1 subgoal):
 1. \<langle>\<V> s\<rangle> \<Turnstile>\<^sub>b \<B> s \<and> \<langle>\<V> s\<rangle> \<Turnstile>\<^sub>t \<T> s
[PROOF STEP]
by (auto simp add: satisfies_bounds_set.simps satisfies_bounds.simps)
[PROOF STATE]
proof (state)
this:
\<Turnstile> s

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<not> \<U> (check s) \<longrightarrow> \<Turnstile> (check s)

goal (2 subgoals):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<not> \<U> (check s)\<rbrakk> \<Longrightarrow> \<Turnstile> (check s)
 2. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<not> \<U> (check s) \<longrightarrow> \<Turnstile> (check s)
[PROOF STEP]
show "\<not> \<U> (check s) \<Longrightarrow> \<Turnstile> (check s)"
[PROOF STATE]
proof (prove)
using this:
\<not> \<U> (check s) \<longrightarrow> \<Turnstile> (check s)

goal (1 subgoal):
 1. \<not> \<U> (check s) \<Longrightarrow> \<Turnstile> (check s)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<not> \<U> (check s) \<Longrightarrow> \<Turnstile> (check s)

goal (1 subgoal):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
fix s :: "('i,'a) state"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
assume *: "\<not> \<U> s" "\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s" "\<diamond> s" "\<triangle> (\<T> s)" "\<nabla> s"
[PROOF STATE]
proof (state)
this:
\<not> \<U> s
\<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s
\<diamond> s
\<triangle> (\<T> s)
\<nabla> s

goal (1 subgoal):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
have "\<U> (check s) \<longrightarrow> minimal_unsat_state_core (check s)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<U> (check s) \<longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
by (rule check_minimal_unsat_state_core[OF *])
[PROOF STATE]
proof (state)
this:
\<U> (check s) \<longrightarrow> minimal_unsat_state_core (check s)

goal (1 subgoal):
 1. \<And>s. \<lbrakk>\<not> \<U> s; \<Turnstile>\<^sub>n\<^sub>o\<^sub>l\<^sub>h\<^sub>s s; \<diamond> s; \<triangle> (\<T> s); \<nabla> s; \<U> (check s)\<rbrakk> \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<U> (check s) \<longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
show "\<U> (check s) \<Longrightarrow> minimal_unsat_state_core (check s)"
[PROOF STATE]
proof (prove)
using this:
\<U> (check s) \<longrightarrow> minimal_unsat_state_core (check s)

goal (1 subgoal):
 1. \<U> (check s) \<Longrightarrow> minimal_unsat_state_core (check s)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<U> (check s) \<Longrightarrow> minimal_unsat_state_core (check s)

goal:
No subgoals!
[PROOF STEP]
qed