[STATEMENT]
lemma execn_strip_guards_to_execn:
  "\<And>s n t. \<Gamma>\<turnstile>\<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t
  \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile>\<langle>c,s\<rangle> =n\<Rightarrow> t' \<and>
            (isFault t \<longrightarrow> isFault t') \<and>
            (t' \<in> Fault ` (- F) \<longrightarrow> t'=t) \<and>
            (\<not> isFault t' \<longrightarrow> t'=t)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (induct c)
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Skip,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Skip,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Basic x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Basic x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Spec x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Spec x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 9. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 10. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
A total of 11 subgoals...
[PROOF STEP]
case Skip
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F Skip,s\<rangle> =n\<Rightarrow> t

goal (11 subgoals):
 1. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Skip,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Skip,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Basic x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Basic x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Spec x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Spec x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 9. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 10. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
A total of 11 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F Skip,s\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Skip,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Skip,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (10 subgoals):
 1. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Basic x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Basic x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Spec x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Spec x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 9. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 10. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Basic x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Basic x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Spec x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Spec x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 9. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 10. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case Basic
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Basic x_),s\<rangle> =n\<Rightarrow> t

goal (10 subgoals):
 1. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Basic x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Basic x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Spec x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Spec x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 9. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 10. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Basic x_),s\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Basic x_,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Basic x_,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (9 subgoals):
 1. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Spec x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Spec x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 9. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Spec x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Spec x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 9. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case Spec
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Spec x_),s\<rangle> =n\<Rightarrow> t

goal (9 subgoals):
 1. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Spec x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Spec x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 9. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Spec x_),s\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Spec x_,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Spec x_,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (8 subgoals):
 1. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Seq c1 c2 s n t)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t

goal (8 subgoals):
 1. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
have exec_strip: "\<Gamma>\<turnstile>\<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t

goal (8 subgoals):
 1. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t
[PROOF STEP]
obtain w where
    exec_strip_c1: "\<Gamma>\<turnstile>\<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> w" and
    exec_strip_c2: "\<Gamma>\<turnstile>\<langle>strip_guards F c2,w\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. (\<And>w. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> w; \<Gamma>\<turnstile> \<langle>strip_guards F c2,w\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (auto elim: execn_elim_cases)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> w
\<Gamma>\<turnstile> \<langle>strip_guards F c2,w\<rangle> =n\<Rightarrow> t

goal (8 subgoals):
 1. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
from Seq.hyps exec_strip_c1
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> w
[PROOF STEP]
obtain w' where
    exec_c1: "\<Gamma>\<turnstile>\<langle>c1,s\<rangle> =n\<Rightarrow> w'" and
    w_Fault: "isFault w \<longrightarrow> isFault w'" and
    w'_Fault: "w' \<in> Fault ` (- F) \<longrightarrow> w'=w" and
    w'_noFault: "\<not> isFault w' \<longrightarrow> w'=w"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> w

goal (1 subgoal):
 1. (\<And>w'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> w'; isFault w \<longrightarrow> isFault w'; w' \<in> Fault ` (- F) \<longrightarrow> w' = w; \<not> isFault w' \<longrightarrow> w' = w\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> w'
isFault w \<longrightarrow> isFault w'
w' \<in> Fault ` (- F) \<longrightarrow> w' = w
\<not> isFault w' \<longrightarrow> w' = w

goal (8 subgoals):
 1. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 8. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "s")
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Fault f)
[PROOF STATE]
proof (state)
this:
s = Fault f

goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t
s = Fault f
[PROOF STEP]
have "t=Fault f"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t
s = Fault f

goal (1 subgoal):
 1. t = Fault f
[PROOF STEP]
by (auto dest: execn_Fault_end)
[PROOF STATE]
proof (state)
this:
t = Fault f

goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Fault
[PROOF STATE]
proof (chain)
picking this:
s = Fault f
t = Fault f
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Fault f
t = Fault f

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case Stuck
[PROOF STATE]
proof (state)
this:
s = Stuck

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t
s = Stuck
[PROOF STEP]
have "t=Stuck"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t
s = Stuck

goal (1 subgoal):
 1. t = Stuck
[PROOF STEP]
by (auto dest: execn_Stuck_end)
[PROOF STATE]
proof (state)
this:
t = Stuck

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Stuck
[PROOF STATE]
proof (chain)
picking this:
s = Stuck
t = Stuck
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Stuck
t = Stuck

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Abrupt s')
[PROOF STATE]
proof (state)
this:
s = Abrupt s'

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t
s = Abrupt s'
[PROOF STEP]
have "t=Abrupt s'"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Seq c1 c2),s\<rangle> =n\<Rightarrow> t
s = Abrupt s'

goal (1 subgoal):
 1. t = Abrupt s'
[PROOF STEP]
by (auto dest: execn_Abrupt_end)
[PROOF STATE]
proof (state)
this:
t = Abrupt s'

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Abrupt
[PROOF STATE]
proof (chain)
picking this:
s = Abrupt s'
t = Abrupt s'
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Abrupt s'
t = Abrupt s'

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Normal s')
[PROOF STATE]
proof (state)
this:
s = Normal s'

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "isFault w")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
isFault w

goal (2 subgoals):
 1. isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
isFault w
[PROOF STEP]
obtain f where w': "w=Fault f"
[PROOF STATE]
proof (prove)
using this:
isFault w

goal (1 subgoal):
 1. (\<And>f. w = Fault f \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
w = Fault f

goal (2 subgoals):
 1. isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
w = Fault f

goal (2 subgoals):
 1. isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip_c2
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F c2,w\<rangle> =n\<Rightarrow> t
w = Fault f
[PROOF STEP]
have t: "t=Fault f"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F c2,w\<rangle> =n\<Rightarrow> t
w = Fault f

goal (1 subgoal):
 1. t = Fault f
[PROOF STEP]
by (auto dest: execn_Fault_end)
[PROOF STATE]
proof (state)
this:
t = Fault f

goal (2 subgoals):
 1. isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
w = Fault f
t = Fault f
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
w = Fault f
t = Fault f

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
using Normal w_Fault w'_Fault exec_c1
[PROOF STATE]
proof (prove)
using this:
w = Fault f
t = Fault f
s = Normal s'
isFault w \<longrightarrow> isFault w'
w' \<in> Fault ` (- F) \<longrightarrow> w' = w
\<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> w'

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (fastforce intro: execn.intros elim: isFaultE)
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<not> isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> isFault w

goal (1 subgoal):
 1. \<not> isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
note noFault_w = this
[PROOF STATE]
proof (state)
this:
\<not> isFault w

goal (1 subgoal):
 1. \<not> isFault w \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "isFault w'")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
isFault w'

goal (2 subgoals):
 1. isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
isFault w'
[PROOF STEP]
obtain f' where w': "w'=Fault f'"
[PROOF STATE]
proof (prove)
using this:
isFault w'

goal (1 subgoal):
 1. (\<And>f'. w' = Fault f' \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
w' = Fault f'

goal (2 subgoals):
 1. isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal exec_c1
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> w'
w' = Fault f'
[PROOF STEP]
have exec: "\<Gamma>\<turnstile>\<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> Fault f'"
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> w'
w' = Fault f'

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> Fault f'
[PROOF STEP]
by (auto intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> Fault f'

goal (2 subgoals):
 1. isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
from w'_Fault w' noFault_w
[PROOF STATE]
proof (chain)
picking this:
w' \<in> Fault ` (- F) \<longrightarrow> w' = w
w' = Fault f'
\<not> isFault w
[PROOF STEP]
have "f' \<in> F"
[PROOF STATE]
proof (prove)
using this:
w' \<in> Fault ` (- F) \<longrightarrow> w' = w
w' = Fault f'
\<not> isFault w

goal (1 subgoal):
 1. f' \<in> F
[PROOF STEP]
by (cases w) auto
[PROOF STATE]
proof (state)
this:
f' \<in> F

goal (2 subgoals):
 1. isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> Fault f'
f' \<in> F
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> Fault f'
f' \<in> F

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<not> isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> isFault w'

goal (1 subgoal):
 1. \<not> isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with w'_noFault
[PROOF STATE]
proof (chain)
picking this:
\<not> isFault w' \<longrightarrow> w' = w
\<not> isFault w'
[PROOF STEP]
have w': "w'=w"
[PROOF STATE]
proof (prove)
using this:
\<not> isFault w' \<longrightarrow> w' = w
\<not> isFault w'

goal (1 subgoal):
 1. w' = w
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
w' = w

goal (1 subgoal):
 1. \<not> isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
from Seq.hyps exec_strip_c2
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,w\<rangle> =n\<Rightarrow> t
[PROOF STEP]
obtain t' where
          "\<Gamma>\<turnstile>\<langle>c2,w\<rangle> =n\<Rightarrow> t'" and
          "isFault t \<longrightarrow> isFault t'" and
          "t' \<in> Fault ` (-F) \<longrightarrow> t'=t" and
          "\<not> isFault t' \<longrightarrow> t'=t"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,w\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. (\<And>t'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c2,w\<rangle> =n\<Rightarrow> t'; isFault t \<longrightarrow> isFault t'; t' \<in> Fault ` (- F) \<longrightarrow> t' = t; \<not> isFault t' \<longrightarrow> t' = t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c2,w\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. \<not> isFault w' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal exec_c1 w'
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> w'
w' = w
\<Gamma>\<turnstile> \<langle>c2,w\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> w'
w' = w
\<Gamma>\<turnstile> \<langle>c2,w\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (fastforce intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Seq c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (7 subgoals):
 1. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Cond b c1 c2 s n t)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t

goal (7 subgoals):
 1. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
have exec_strip: "\<Gamma>\<turnstile>\<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t

goal (7 subgoals):
 1. \<And>x1 c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Cond x1 c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond x1 c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 7. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases s)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Fault f)
[PROOF STATE]
proof (state)
this:
s = Fault f

goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
s = Fault f
[PROOF STEP]
have "t=Fault f"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
s = Fault f

goal (1 subgoal):
 1. t = Fault f
[PROOF STEP]
by (auto dest: execn_Fault_end)
[PROOF STATE]
proof (state)
this:
t = Fault f

goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Fault
[PROOF STATE]
proof (chain)
picking this:
s = Fault f
t = Fault f
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Fault f
t = Fault f

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case Stuck
[PROOF STATE]
proof (state)
this:
s = Stuck

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
s = Stuck
[PROOF STEP]
have "t=Stuck"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
s = Stuck

goal (1 subgoal):
 1. t = Stuck
[PROOF STEP]
by (auto dest: execn_Stuck_end)
[PROOF STATE]
proof (state)
this:
t = Stuck

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Stuck
[PROOF STATE]
proof (chain)
picking this:
s = Stuck
t = Stuck
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Stuck
t = Stuck

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Abrupt s')
[PROOF STATE]
proof (state)
this:
s = Abrupt s'

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
s = Abrupt s'
[PROOF STEP]
have "t=Abrupt s'"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
s = Abrupt s'

goal (1 subgoal):
 1. t = Abrupt s'
[PROOF STEP]
by (auto dest: execn_Abrupt_end)
[PROOF STATE]
proof (state)
this:
t = Abrupt s'

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Abrupt
[PROOF STATE]
proof (chain)
picking this:
s = Abrupt s'
t = Abrupt s'
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Abrupt s'
t = Abrupt s'

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Normal s')
[PROOF STATE]
proof (state)
this:
s = Normal s'

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "s'\<in> b")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
s' \<in> b

goal (2 subgoals):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal exec_strip
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
s' \<in> b
[PROOF STEP]
have "\<Gamma>\<turnstile>\<langle>strip_guards F c1 ,Normal s'\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
s' \<in> b

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t
[PROOF STEP]
by (auto elim: execn_Normal_elim_cases)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t

goal (2 subgoals):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal True Cond.hyps
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
s' \<in> b
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t
[PROOF STEP]
obtain t'
        where "\<Gamma>\<turnstile>\<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'"
            "isFault t \<longrightarrow> isFault t'"
            "t' \<in> Fault ` (-F) \<longrightarrow> t'=t"
            "\<not> isFault t' \<longrightarrow> t' = t"
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
s' \<in> b
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. (\<And>t'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'; isFault t \<longrightarrow> isFault t'; t' \<in> Fault ` (- F) \<longrightarrow> t' = t; \<not> isFault t' \<longrightarrow> t' = t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (2 subgoals):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal True
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
s' \<in> b
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
s' \<in> b
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (blast intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
s' \<notin> b

goal (1 subgoal):
 1. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal exec_strip
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
s' \<notin> b
[PROOF STEP]
have "\<Gamma>\<turnstile>\<langle>strip_guards F c2 ,Normal s'\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>strip_guards F (Cond b c1 c2),s\<rangle> =n\<Rightarrow> t
s' \<notin> b

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal s'\<rangle> =n\<Rightarrow> t
[PROOF STEP]
by (auto elim: execn_Normal_elim_cases)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal s'\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal False Cond.hyps
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
s' \<notin> b
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal s'\<rangle> =n\<Rightarrow> t
[PROOF STEP]
obtain t'
        where "\<Gamma>\<turnstile>\<langle>c2,Normal s'\<rangle> =n\<Rightarrow> t'"
            "isFault t  \<longrightarrow> isFault t'"
            "t' \<in> Fault ` (-F) \<longrightarrow> t'=t"
            "\<not> isFault t' \<longrightarrow> t' = t"
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
s' \<notin> b
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal s'\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. (\<And>t'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c2,Normal s'\<rangle> =n\<Rightarrow> t'; isFault t \<longrightarrow> isFault t'; t' \<in> Fault ` (- F) \<longrightarrow> t' = t; \<not> isFault t' \<longrightarrow> t' = t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c2,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal False
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
s' \<notin> b
\<Gamma>\<turnstile> \<langle>c2,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
s' \<notin> b
\<Gamma>\<turnstile> \<langle>c2,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (blast intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Cond b c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (6 subgoals):
 1. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (While b c s n t)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t

goal (6 subgoals):
 1. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
have exec_strip: "\<Gamma>\<turnstile>\<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t

goal (6 subgoals):
 1. \<And>x1 c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (While x1 c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While x1 c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 6. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases s)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Fault f)
[PROOF STATE]
proof (state)
this:
s = Fault f

goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
s = Fault f
[PROOF STEP]
have "t=Fault f"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
s = Fault f

goal (1 subgoal):
 1. t = Fault f
[PROOF STEP]
by (auto dest: execn_Fault_end)
[PROOF STATE]
proof (state)
this:
t = Fault f

goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Fault
[PROOF STATE]
proof (chain)
picking this:
s = Fault f
t = Fault f
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Fault f
t = Fault f

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case Stuck
[PROOF STATE]
proof (state)
this:
s = Stuck

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
s = Stuck
[PROOF STEP]
have "t=Stuck"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
s = Stuck

goal (1 subgoal):
 1. t = Stuck
[PROOF STEP]
by (auto dest: execn_Stuck_end)
[PROOF STATE]
proof (state)
this:
t = Stuck

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Stuck
[PROOF STATE]
proof (chain)
picking this:
s = Stuck
t = Stuck
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Stuck
t = Stuck

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Abrupt s')
[PROOF STATE]
proof (state)
this:
s = Abrupt s'

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
s = Abrupt s'
[PROOF STEP]
have "t=Abrupt s'"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
s = Abrupt s'

goal (1 subgoal):
 1. t = Abrupt s'
[PROOF STEP]
by (auto dest: execn_Abrupt_end)
[PROOF STATE]
proof (state)
this:
t = Abrupt s'

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Abrupt
[PROOF STATE]
proof (chain)
picking this:
s = Abrupt s'
t = Abrupt s'
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Abrupt s'
t = Abrupt s'

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Normal s')
[PROOF STATE]
proof (state)
this:
s = Normal s'

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
s = Normal s'

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
fix c' r w
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
assume exec_c': "\<Gamma>\<turnstile>\<langle>c',r\<rangle> =n\<Rightarrow> w"
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c',r\<rangle> =n\<Rightarrow> w

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
assume c': "c'=While b (strip_guards F c)"
[PROOF STATE]
proof (state)
this:
c' = While b (strip_guards F c)

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
have "\<exists>w'. \<Gamma>\<turnstile>\<langle>While b c,r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and>
                   (w' \<in> Fault ` (-F) \<longrightarrow> w'=w) \<and>
                   (\<not> isFault w' \<longrightarrow> w'=w)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
using exec_c' c'
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>c',r\<rangle> =n\<Rightarrow> w
c' = While b (strip_guards F c)

goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
proof (induct)
[PROOF STATE]
proof (state)
goal (20 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 20 subgoals...
[PROOF STEP]
case (WhileTrue r b' c'' n u w)
[PROOF STATE]
proof (state)
this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)

goal (20 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 20 subgoals...
[PROOF STEP]
have eqs: "While b' c'' = While b (strip_guards F c)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. While b' c'' = While b (strip_guards F c)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
While b' c'' = While b (strip_guards F c)

goal (20 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 20 subgoals...
[PROOF STEP]
from WhileTrue.hyps eqs
[PROOF STATE]
proof (chain)
picking this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)
[PROOF STEP]
have r_in_b: "r\<in>b"
[PROOF STATE]
proof (prove)
using this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)

goal (1 subgoal):
 1. r \<in> b
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
r \<in> b

goal (20 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 20 subgoals...
[PROOF STEP]
from WhileTrue.hyps eqs
[PROOF STATE]
proof (chain)
picking this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)
[PROOF STEP]
have exec_strip_c: "\<Gamma>\<turnstile>\<langle>strip_guards F c,Normal r\<rangle> =n\<Rightarrow> u"
[PROOF STATE]
proof (prove)
using this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F c,Normal r\<rangle> =n\<Rightarrow> u
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal r\<rangle> =n\<Rightarrow> u

goal (20 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 20 subgoals...
[PROOF STEP]
from WhileTrue.hyps eqs
[PROOF STATE]
proof (chain)
picking this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)
[PROOF STEP]
have exec_strip_w: "\<Gamma>\<turnstile>\<langle>While b (strip_guards F c),u\<rangle> =n\<Rightarrow> w"
[PROOF STATE]
proof (prove)
using this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>While b (strip_guards F c),u\<rangle> =n\<Rightarrow> w
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>While b (strip_guards F c),u\<rangle> =n\<Rightarrow> w

goal (20 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 20 subgoals...
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
from WhileTrue.hyps eqs
[PROOF STATE]
proof (chain)
picking this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)
[PROOF STEP]
have "\<Gamma>\<turnstile>\<langle>strip_guards F c,Normal r\<rangle> =n\<Rightarrow> u"
[PROOF STATE]
proof (prove)
using this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F c,Normal r\<rangle> =n\<Rightarrow> u
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal r\<rangle> =n\<Rightarrow> u

goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
with While.hyps
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal r\<rangle> =n\<Rightarrow> u
[PROOF STEP]
obtain u' where
            exec_c: "\<Gamma>\<turnstile>\<langle>c,Normal r\<rangle> =n\<Rightarrow> u'" and
            u_Fault: "isFault u \<longrightarrow> isFault u'" and
            u'_Fault: "u' \<in> Fault ` (-F) \<longrightarrow> u'=u" and
            u'_noFault: "\<not> isFault u' \<longrightarrow> u'=u"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal r\<rangle> =n\<Rightarrow> u

goal (1 subgoal):
 1. (\<And>u'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal r\<rangle> =n\<Rightarrow> u'; isFault u \<longrightarrow> isFault u'; u' \<in> Fault ` (- F) \<longrightarrow> u' = u; \<not> isFault u' \<longrightarrow> u' = u\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c,Normal r\<rangle> =n\<Rightarrow> u'
isFault u \<longrightarrow> isFault u'
u' \<in> Fault ` (- F) \<longrightarrow> u' = u
\<not> isFault u' \<longrightarrow> u' = u

goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
proof (cases "isFault u'")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
 2. \<not> isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> isFault u'

goal (2 subgoals):
 1. isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
 2. \<not> isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
with u'_noFault
[PROOF STATE]
proof (chain)
picking this:
\<not> isFault u' \<longrightarrow> u' = u
\<not> isFault u'
[PROOF STEP]
have u': "u'=u"
[PROOF STATE]
proof (prove)
using this:
\<not> isFault u' \<longrightarrow> u' = u
\<not> isFault u'

goal (1 subgoal):
 1. u' = u
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
u' = u

goal (2 subgoals):
 1. isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
 2. \<not> isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
from WhileTrue.hyps eqs
[PROOF STATE]
proof (chain)
picking this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)
[PROOF STEP]
obtain w' where
              "\<Gamma>\<turnstile>\<langle>While b c,u\<rangle> =n\<Rightarrow> w'"
              "isFault w  \<longrightarrow> isFault w'"
              "w' \<in> Fault ` (-F) \<longrightarrow> w'=w"
              "\<not> isFault w' \<longrightarrow> w' = w"
[PROOF STATE]
proof (prove)
using this:
r \<in> b'
\<Gamma>\<turnstile> \<langle>c'',Normal r\<rangle> =n\<Rightarrow> u
c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault u \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = u) \<and> (\<not> isFault w' \<longrightarrow> w' = u)
\<Gamma>\<turnstile> \<langle>While b' c'',u\<rangle> =n\<Rightarrow> w
While b' c'' = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
While b' c'' = While b (strip_guards F c)

goal (1 subgoal):
 1. (\<And>w'. \<lbrakk>\<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w'; isFault w \<longrightarrow> isFault w'; w' \<in> Fault ` (- F) \<longrightarrow> w' = w; \<not> isFault w' \<longrightarrow> w' = w\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w'
isFault w \<longrightarrow> isFault w'
w' \<in> Fault ` (- F) \<longrightarrow> w' = w
\<not> isFault w' \<longrightarrow> w' = w

goal (2 subgoals):
 1. isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
 2. \<not> isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
with u' exec_c r_in_b
[PROOF STATE]
proof (chain)
picking this:
u' = u
\<Gamma>\<turnstile> \<langle>c,Normal r\<rangle> =n\<Rightarrow> u'
r \<in> b
\<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w'
isFault w \<longrightarrow> isFault w'
w' \<in> Fault ` (- F) \<longrightarrow> w' = w
\<not> isFault w' \<longrightarrow> w' = w
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
u' = u
\<Gamma>\<turnstile> \<langle>c,Normal r\<rangle> =n\<Rightarrow> u'
r \<in> b
\<Gamma>\<turnstile> \<langle>While b c,u\<rangle> =n\<Rightarrow> w'
isFault w \<longrightarrow> isFault w'
w' \<in> Fault ` (- F) \<longrightarrow> w' = w
\<not> isFault w' \<longrightarrow> w' = w

goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
by (blast intro: execn.WhileTrue)
[PROOF STATE]
proof (state)
this:
\<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)

goal (1 subgoal):
 1. isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
isFault u'

goal (1 subgoal):
 1. isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
isFault u'
[PROOF STEP]
obtain f' where u': "u'=Fault f'"
[PROOF STATE]
proof (prove)
using this:
isFault u'

goal (1 subgoal):
 1. (\<And>f'. u' = Fault f' \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
u' = Fault f'

goal (1 subgoal):
 1. isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
with exec_c r_in_b
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>c,Normal r\<rangle> =n\<Rightarrow> u'
r \<in> b
u' = Fault f'
[PROOF STEP]
have exec: "\<Gamma>\<turnstile>\<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Fault f'"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>c,Normal r\<rangle> =n\<Rightarrow> u'
r \<in> b
u' = Fault f'

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Fault f'
[PROOF STEP]
by (blast intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Fault f'

goal (1 subgoal):
 1. isFault u' \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
proof (cases "isFault u")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
 2. \<not> isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
isFault u

goal (2 subgoals):
 1. isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
 2. \<not> isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
isFault u
[PROOF STEP]
obtain f where u: "u=Fault f"
[PROOF STATE]
proof (prove)
using this:
isFault u

goal (1 subgoal):
 1. (\<And>f. u = Fault f \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
u = Fault f

goal (2 subgoals):
 1. isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
 2. \<not> isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
with exec_strip_w
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>While b (strip_guards F c),u\<rangle> =n\<Rightarrow> w
u = Fault f
[PROOF STEP]
have "w=Fault f"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>While b (strip_guards F c),u\<rangle> =n\<Rightarrow> w
u = Fault f

goal (1 subgoal):
 1. w = Fault f
[PROOF STEP]
by (auto dest: execn_Fault_end)
[PROOF STATE]
proof (state)
this:
w = Fault f

goal (2 subgoals):
 1. isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
 2. \<not> isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
with exec u' u u'_Fault
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Fault f'
u' = Fault f'
u = Fault f
u' \<in> Fault ` (- F) \<longrightarrow> u' = u
w = Fault f
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Fault f'
u' = Fault f'
u = Fault f
u' \<in> Fault ` (- F) \<longrightarrow> u' = u
w = Fault f

goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)

goal (1 subgoal):
 1. \<not> isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> isFault u

goal (1 subgoal):
 1. \<not> isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
with u'_Fault u'
[PROOF STATE]
proof (chain)
picking this:
u' \<in> Fault ` (- F) \<longrightarrow> u' = u
u' = Fault f'
\<not> isFault u
[PROOF STEP]
have "f' \<in> F"
[PROOF STATE]
proof (prove)
using this:
u' \<in> Fault ` (- F) \<longrightarrow> u' = u
u' = Fault f'
\<not> isFault u

goal (1 subgoal):
 1. f' \<in> F
[PROOF STEP]
by (cases u) auto
[PROOF STATE]
proof (state)
this:
f' \<in> F

goal (1 subgoal):
 1. \<not> isFault u \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
with exec
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Fault f'
f' \<in> F
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Fault f'
f' \<in> F

goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)

goal (19 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 19 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (19 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 19 subgoals...
[PROOF STEP]
case (WhileFalse r b' c'' n)
[PROOF STATE]
proof (state)
this:
r \<notin> b'
While b' c'' = While b (strip_guards F c)

goal (19 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 19 subgoals...
[PROOF STEP]
have eqs: "While b'  c'' = While b (strip_guards F c)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. While b' c'' = While b (strip_guards F c)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
While b' c'' = While b (strip_guards F c)

goal (19 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 19 subgoals...
[PROOF STEP]
from WhileFalse.hyps eqs
[PROOF STATE]
proof (chain)
picking this:
r \<notin> b'
While b' c'' = While b (strip_guards F c)
[PROOF STEP]
have r_not_in_b: "r\<notin>b"
[PROOF STATE]
proof (prove)
using this:
r \<notin> b'
While b' c'' = While b (strip_guards F c)

goal (1 subgoal):
 1. r \<notin> b
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
r \<notin> b

goal (19 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 19 subgoals...
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal r) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal r) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal r)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal r) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal r) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal r)
[PROOF STEP]
from r_not_in_b
[PROOF STATE]
proof (chain)
picking this:
r \<notin> b
[PROOF STEP]
have "\<Gamma>\<turnstile>\<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Normal r"
[PROOF STATE]
proof (prove)
using this:
r \<notin> b

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Normal r
[PROOF STEP]
by (rule execn.WhileFalse)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Normal r

goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal r) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal r) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal r)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> Normal r

goal (1 subgoal):
 1. \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal r) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal r) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal r)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal r) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal r) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal r)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal r\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal r) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal r) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal r)

goal (18 subgoals):
 1. \<And>s n. Skip = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal s) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal s) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal s)
 2. \<And>s g c n t f. \<lbrakk>s \<in> g; \<Gamma>\<turnstile> \<langle>c,Normal s\<rangle> =n\<Rightarrow> t; c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 3. \<And>s g f c n. \<lbrakk>s \<notin> g; Guard f g c = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 4. \<And>c f n. c = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Fault f\<rangle> =n\<Rightarrow> w' \<and> (isFault (Fault f) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Fault f) \<and> (\<not> isFault w' \<longrightarrow> w' = Fault f)
 5. \<And>f s n. Basic f = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal (f s)) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal (f s)) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal (f s))
 6. \<And>s t r n. \<lbrakk>(s, t) \<in> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault (Normal t) \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Normal t) \<and> (\<not> isFault w' \<longrightarrow> w' = Normal t)
 7. \<And>s r n. \<lbrakk>\<forall>t. (s, t) \<notin> r; Spec r = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault Stuck \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = Stuck) \<and> (\<not> isFault w' \<longrightarrow> w' = Stuck)
 8. \<And>c\<^sub>1 s n s' c\<^sub>2 t. \<lbrakk>\<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> s'; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault s' \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = s') \<and> (\<not> isFault w' \<longrightarrow> w' = s'); \<Gamma>\<turnstile> \<langle>c\<^sub>2,s'\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,s'\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Seq c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 9. \<And>s ba c\<^sub>1 n t c\<^sub>2. \<lbrakk>s \<in> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>1,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>1 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
 10. \<And>s ba c\<^sub>2 n t c\<^sub>1. \<lbrakk>s \<notin> ba; \<Gamma>\<turnstile> \<langle>c\<^sub>2,Normal s\<rangle> =n\<Rightarrow> t; c\<^sub>2 = While b (strip_guards F c) \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t); Cond ba c\<^sub>1 c\<^sub>2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,Normal s\<rangle> =n\<Rightarrow> w' \<and> (isFault t \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = t) \<and> (\<not> isFault w' \<longrightarrow> w' = t)
A total of 18 subgoals...
[PROOF STEP]
qed auto
[PROOF STATE]
proof (state)
this:
\<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,r\<rangle> =n\<Rightarrow> w' \<and> (isFault w \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = w) \<and> (\<not> isFault w' \<longrightarrow> w' = w)

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<lbrakk>\<Gamma>\<turnstile> \<langle>?c'2,?r2\<rangle> =n\<Rightarrow> ?w2; ?c'2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,?r2\<rangle> =n\<Rightarrow> w' \<and> (isFault ?w2 \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = ?w2) \<and> (\<not> isFault w' \<longrightarrow> w' = ?w2)

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
note hyp_while = this
[PROOF STATE]
proof (state)
this:
\<lbrakk>\<Gamma>\<turnstile> \<langle>?c'2,?r2\<rangle> =n\<Rightarrow> ?w2; ?c'2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,?r2\<rangle> =n\<Rightarrow> w' \<and> (isFault ?w2 \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = ?w2) \<and> (\<not> isFault w' \<longrightarrow> w' = ?w2)

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "s'\<in>b")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
s' \<notin> b

goal (2 subgoals):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal exec_strip
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
s' \<notin> b
[PROOF STEP]
have "t=s"
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
s' \<notin> b

goal (1 subgoal):
 1. t = s
[PROOF STEP]
by (auto elim: execn_Normal_elim_cases)
[PROOF STATE]
proof (state)
this:
t = s

goal (2 subgoals):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal False
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
s' \<notin> b
t = s
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
s' \<notin> b
t = s

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (auto intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
s' \<in> b

goal (1 subgoal):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
note s'_in_b = this
[PROOF STATE]
proof (state)
this:
s' \<in> b

goal (1 subgoal):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal exec_strip
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
s' \<in> b
[PROOF STEP]
obtain r where
        exec_strip_c: "\<Gamma>\<turnstile>\<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> r" and
        exec_strip_w: "\<Gamma>\<turnstile>\<langle>While b (strip_guards F c),r\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>strip_guards F (While b c),s\<rangle> =n\<Rightarrow> t
s' \<in> b

goal (1 subgoal):
 1. (\<And>r. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> r; \<Gamma>\<turnstile> \<langle>While b (strip_guards F c),r\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (auto elim: execn_Normal_elim_cases)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> r
\<Gamma>\<turnstile> \<langle>While b (strip_guards F c),r\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
from While.hyps exec_strip_c
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> r
[PROOF STEP]
obtain r' where
        exec_c: "\<Gamma>\<turnstile>\<langle>c,Normal s'\<rangle> =n\<Rightarrow> r'" and
        r_Fault: "isFault r \<longrightarrow> isFault r'" and
        r'_Fault: "r' \<in> Fault ` (-F) \<longrightarrow> r'=r" and
        r'_noFault: "\<not> isFault r' \<longrightarrow> r'=r"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> r

goal (1 subgoal):
 1. (\<And>r'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> r'; isFault r \<longrightarrow> isFault r'; r' \<in> Fault ` (- F) \<longrightarrow> r' = r; \<not> isFault r' \<longrightarrow> r' = r\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> r'
isFault r \<longrightarrow> isFault r'
r' \<in> Fault ` (- F) \<longrightarrow> r' = r
\<not> isFault r' \<longrightarrow> r' = r

goal (1 subgoal):
 1. s' \<in> b \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "isFault r'")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> isFault r'

goal (2 subgoals):
 1. isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with r'_noFault
[PROOF STATE]
proof (chain)
picking this:
\<not> isFault r' \<longrightarrow> r' = r
\<not> isFault r'
[PROOF STEP]
have r': "r'=r"
[PROOF STATE]
proof (prove)
using this:
\<not> isFault r' \<longrightarrow> r' = r
\<not> isFault r'

goal (1 subgoal):
 1. r' = r
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
r' = r

goal (2 subgoals):
 1. isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
from hyp_while exec_strip_w
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>\<Gamma>\<turnstile> \<langle>?c'2,?r2\<rangle> =n\<Rightarrow> ?w2; ?c'2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,?r2\<rangle> =n\<Rightarrow> w' \<and> (isFault ?w2 \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = ?w2) \<and> (\<not> isFault w' \<longrightarrow> w' = ?w2)
\<Gamma>\<turnstile> \<langle>While b (strip_guards F c),r\<rangle> =n\<Rightarrow> t
[PROOF STEP]
obtain t' where
          "\<Gamma>\<turnstile>\<langle>While b c,r\<rangle> =n\<Rightarrow> t'"
          "isFault t \<longrightarrow> isFault t'"
          "t' \<in> Fault ` (-F) \<longrightarrow> t'=t"
          "\<not> isFault t' \<longrightarrow> t'=t"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>\<Gamma>\<turnstile> \<langle>?c'2,?r2\<rangle> =n\<Rightarrow> ?w2; ?c'2 = While b (strip_guards F c)\<rbrakk> \<Longrightarrow> \<exists>w'. \<Gamma>\<turnstile> \<langle>While b c,?r2\<rangle> =n\<Rightarrow> w' \<and> (isFault ?w2 \<longrightarrow> isFault w') \<and> (w' \<in> Fault ` (- F) \<longrightarrow> w' = ?w2) \<and> (\<not> isFault w' \<longrightarrow> w' = ?w2)
\<Gamma>\<turnstile> \<langle>While b (strip_guards F c),r\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. (\<And>t'. \<lbrakk>\<Gamma>\<turnstile> \<langle>While b c,r\<rangle> =n\<Rightarrow> t'; isFault t \<longrightarrow> isFault t'; t' \<in> Fault ` (- F) \<longrightarrow> t' = t; \<not> isFault t' \<longrightarrow> t' = t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>While b c,r\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (2 subgoals):
 1. isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with r' exec_c Normal s'_in_b
[PROOF STATE]
proof (chain)
picking this:
r' = r
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> r'
s = Normal s'
s' \<in> b
\<Gamma>\<turnstile> \<langle>While b c,r\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
r' = r
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> r'
s = Normal s'
s' \<in> b
\<Gamma>\<turnstile> \<langle>While b c,r\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (blast intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
isFault r'

goal (1 subgoal):
 1. isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
isFault r'
[PROOF STEP]
obtain f' where r': "r'=Fault f'"
[PROOF STATE]
proof (prove)
using this:
isFault r'

goal (1 subgoal):
 1. (\<And>f'. r' = Fault f' \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
r' = Fault f'

goal (1 subgoal):
 1. isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
hence "\<Gamma>\<turnstile>\<langle>While b c,r'\<rangle> =n\<Rightarrow> Fault f'"
[PROOF STATE]
proof (prove)
using this:
r' = Fault f'

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>While b c,r'\<rangle> =n\<Rightarrow> Fault f'
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>While b c,r'\<rangle> =n\<Rightarrow> Fault f'

goal (1 subgoal):
 1. isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal s'_in_b exec_c
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
s' \<in> b
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> r'
\<Gamma>\<turnstile> \<langle>While b c,r'\<rangle> =n\<Rightarrow> Fault f'
[PROOF STEP]
have exec: "\<Gamma>\<turnstile>\<langle>While b c,Normal s'\<rangle> =n\<Rightarrow> Fault f'"
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
s' \<in> b
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> r'
\<Gamma>\<turnstile> \<langle>While b c,r'\<rangle> =n\<Rightarrow> Fault f'

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>While b c,Normal s'\<rangle> =n\<Rightarrow> Fault f'
[PROOF STEP]
by (auto intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>While b c,Normal s'\<rangle> =n\<Rightarrow> Fault f'

goal (1 subgoal):
 1. isFault r' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "isFault r")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
isFault r

goal (2 subgoals):
 1. isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
isFault r
[PROOF STEP]
obtain f where r: "r=Fault f"
[PROOF STATE]
proof (prove)
using this:
isFault r

goal (1 subgoal):
 1. (\<And>f. r = Fault f \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
r = Fault f

goal (2 subgoals):
 1. isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip_w
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>While b (strip_guards F c),r\<rangle> =n\<Rightarrow> t
r = Fault f
[PROOF STEP]
have "t=Fault f"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>While b (strip_guards F c),r\<rangle> =n\<Rightarrow> t
r = Fault f

goal (1 subgoal):
 1. t = Fault f
[PROOF STEP]
by (auto dest: execn_Fault_end)
[PROOF STATE]
proof (state)
this:
t = Fault f

goal (2 subgoals):
 1. isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal exec r' r r'_Fault
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>While b c,Normal s'\<rangle> =n\<Rightarrow> Fault f'
r' = Fault f'
r = Fault f
r' \<in> Fault ` (- F) \<longrightarrow> r' = r
t = Fault f
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>While b c,Normal s'\<rangle> =n\<Rightarrow> Fault f'
r' = Fault f'
r = Fault f
r' \<in> Fault ` (- F) \<longrightarrow> r' = r
t = Fault f

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<not> isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> isFault r

goal (1 subgoal):
 1. \<not> isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with r'_Fault r'
[PROOF STATE]
proof (chain)
picking this:
r' \<in> Fault ` (- F) \<longrightarrow> r' = r
r' = Fault f'
\<not> isFault r
[PROOF STEP]
have "f' \<in> F"
[PROOF STATE]
proof (prove)
using this:
r' \<in> Fault ` (- F) \<longrightarrow> r' = r
r' = Fault f'
\<not> isFault r

goal (1 subgoal):
 1. f' \<in> F
[PROOF STEP]
by (cases r) auto
[PROOF STATE]
proof (state)
this:
f' \<in> F

goal (1 subgoal):
 1. \<not> isFault r \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal exec
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>While b c,Normal s'\<rangle> =n\<Rightarrow> Fault f'
f' \<in> F
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>While b c,Normal s'\<rangle> =n\<Rightarrow> Fault f'
f' \<in> F

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>While b c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (5 subgoals):
 1. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case Call
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Call x_),s\<rangle> =n\<Rightarrow> t

goal (5 subgoals):
 1. \<And>x s n t. \<Gamma>\<turnstile> \<langle>strip_guards F (Call x),s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 5. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Call x_),s\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Call x_,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Call x_,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (4 subgoals):
 1. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case DynCom
[PROOF STATE]
proof (state)
this:
\<lbrakk>?xa \<in> range x_; \<Gamma>\<turnstile> \<langle>strip_guards F ?xa,?s\<rangle> =?n\<Rightarrow> ?t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>?xa,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x_),s\<rangle> =n\<Rightarrow> t

goal (4 subgoals):
 1. \<And>x s n t. \<lbrakk>\<And>xa s n t. \<lbrakk>xa \<in> range x; \<Gamma>\<turnstile> \<langle>strip_guards F xa,s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>xa,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?xa \<in> range x_; \<Gamma>\<turnstile> \<langle>strip_guards F ?xa,?s\<rangle> =?n\<Rightarrow> ?t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>?xa,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F (DynCom x_),s\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x_,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (fastforce elim!: execn_elim_cases intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>DynCom x_,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (3 subgoals):
 1. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Guard f g c s n t)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t

goal (3 subgoals):
 1. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
have exec_strip: "\<Gamma>\<turnstile>\<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t

goal (3 subgoals):
 1. \<And>x1 x2a c s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Guard x1 x2a c),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard x1 x2a c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases s)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Fault f)
[PROOF STATE]
proof (state)
this:
s = Fault f

goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f__ g c),s\<rangle> =n\<Rightarrow> t
s = Fault f
[PROOF STEP]
have "t=Fault f"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f__ g c),s\<rangle> =n\<Rightarrow> t
s = Fault f

goal (1 subgoal):
 1. t = Fault f
[PROOF STEP]
by (auto dest: execn_Fault_end)
[PROOF STATE]
proof (state)
this:
t = Fault f

goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Fault
[PROOF STATE]
proof (chain)
picking this:
s = Fault f
t = Fault f
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Fault f
t = Fault f

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f__ g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case Stuck
[PROOF STATE]
proof (state)
this:
s = Stuck

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
s = Stuck
[PROOF STEP]
have "t=Stuck"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
s = Stuck

goal (1 subgoal):
 1. t = Stuck
[PROOF STEP]
by (auto dest: execn_Stuck_end)
[PROOF STATE]
proof (state)
this:
t = Stuck

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Stuck
[PROOF STATE]
proof (chain)
picking this:
s = Stuck
t = Stuck
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Stuck
t = Stuck

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Abrupt s')
[PROOF STATE]
proof (state)
this:
s = Abrupt s'

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
s = Abrupt s'
[PROOF STEP]
have "t=Abrupt s'"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
s = Abrupt s'

goal (1 subgoal):
 1. t = Abrupt s'
[PROOF STEP]
by (auto dest: execn_Abrupt_end)
[PROOF STATE]
proof (state)
this:
t = Abrupt s'

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Abrupt
[PROOF STATE]
proof (chain)
picking this:
s = Abrupt s'
t = Abrupt s'
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Abrupt s'
t = Abrupt s'

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Normal s')
[PROOF STATE]
proof (state)
this:
s = Normal s'

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "f\<in>F")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. f \<in> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. f \<notin> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
f \<in> F

goal (2 subgoals):
 1. f \<in> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. f \<notin> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip Normal
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
s = Normal s'
f \<in> F
[PROOF STEP]
have exec_strip_c: "\<Gamma>\<turnstile>\<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
s = Normal s'
f \<in> F

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> t
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> t

goal (2 subgoals):
 1. f \<in> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. f \<notin> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Guard.hyps
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> t
[PROOF STEP]
obtain t' where
        "\<Gamma>\<turnstile>\<langle>c,Normal s'\<rangle> =n\<Rightarrow> t'" and
        "isFault t \<longrightarrow> isFault t'" and
        "t' \<in> Fault ` (-F) \<longrightarrow> t'=t" and
        "\<not> isFault t' \<longrightarrow> t'=t"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. (\<And>t'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> t'; isFault t \<longrightarrow> isFault t'; t' \<in> Fault ` (- F) \<longrightarrow> t' = t; \<not> isFault t' \<longrightarrow> t' = t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (2 subgoals):
 1. f \<in> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. f \<notin> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal True
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
f \<in> F
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
f \<in> F
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (cases "s'\<in> g") (fastforce intro: execn.intros)+
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. f \<notin> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. f \<notin> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
f \<notin> F

goal (1 subgoal):
 1. f \<notin> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
note f_notin_F = this
[PROOF STATE]
proof (state)
this:
f \<notin> F

goal (1 subgoal):
 1. f \<notin> F \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "s'\<in>g")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. s' \<in> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
s' \<notin> g

goal (2 subgoals):
 1. s' \<in> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal exec_strip f_notin_F
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
f \<notin> F
s' \<notin> g
[PROOF STEP]
have t: "t=Fault f"
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
f \<notin> F
s' \<notin> g

goal (1 subgoal):
 1. t = Fault f
[PROOF STEP]
by (auto elim: execn_Normal_elim_cases)
[PROOF STATE]
proof (state)
this:
t = Fault f

goal (2 subgoals):
 1. s' \<in> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
from False
[PROOF STATE]
proof (chain)
picking this:
s' \<notin> g
[PROOF STEP]
have "\<Gamma>\<turnstile>\<langle>Guard f g c,Normal s'\<rangle> =n\<Rightarrow> Fault f"
[PROOF STATE]
proof (prove)
using this:
s' \<notin> g

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>Guard f g c,Normal s'\<rangle> =n\<Rightarrow> Fault f
[PROOF STEP]
by (blast intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>Guard f g c,Normal s'\<rangle> =n\<Rightarrow> Fault f

goal (2 subgoals):
 1. s' \<in> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. s' \<notin> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with False Normal t
[PROOF STATE]
proof (chain)
picking this:
s' \<notin> g
s = Normal s'
t = Fault f
\<Gamma>\<turnstile> \<langle>Guard f g c,Normal s'\<rangle> =n\<Rightarrow> Fault f
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s' \<notin> g
s = Normal s'
t = Fault f
\<Gamma>\<turnstile> \<langle>Guard f g c,Normal s'\<rangle> =n\<Rightarrow> Fault f

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. s' \<in> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. s' \<in> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
s' \<in> g

goal (1 subgoal):
 1. s' \<in> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip Normal f_notin_F
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
s = Normal s'
f \<notin> F
s' \<in> g
[PROOF STEP]
have "\<Gamma>\<turnstile>\<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Guard f g c),s\<rangle> =n\<Rightarrow> t
s = Normal s'
f \<notin> F
s' \<in> g

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> t
[PROOF STEP]
by (auto elim: execn_Normal_elim_cases)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. s' \<in> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Guard.hyps
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> t
[PROOF STEP]
obtain t' where
          "\<Gamma>\<turnstile>\<langle>c,Normal s'\<rangle> =n\<Rightarrow> t'" and
          "isFault t \<longrightarrow> isFault t'" and
          "t' \<in> Fault ` (-F) \<longrightarrow> t'=t" and
          "\<not> isFault t' \<longrightarrow> t'=t"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F c,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c,Normal s'\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. (\<And>t'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> t'; isFault t \<longrightarrow> isFault t'; t' \<in> Fault ` (- F) \<longrightarrow> t' = t; \<not> isFault t' \<longrightarrow> t' = t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. s' \<in> g \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal True
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
s' \<in> g
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
s' \<in> g
\<Gamma>\<turnstile> \<langle>c,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (blast intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Guard f g c,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (2 subgoals):
 1. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case Throw
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t

goal (2 subgoals):
 1. \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F Throw,s\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Throw,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Catch c1 c2 s n t)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
have exec_strip: "\<Gamma>\<turnstile>\<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<And>c1 c2 s n t. \<lbrakk>\<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c1,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<And>s n t. \<Gamma>\<turnstile> \<langle>strip_guards F c2,s\<rangle> =n\<Rightarrow> t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t); \<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "s")
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Fault f)
[PROOF STATE]
proof (state)
this:
s = Fault f

goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t
s = Fault f
[PROOF STEP]
have "t=Fault f"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t
s = Fault f

goal (1 subgoal):
 1. t = Fault f
[PROOF STEP]
by (auto dest: execn_Fault_end)
[PROOF STATE]
proof (state)
this:
t = Fault f

goal (4 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. s = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Fault
[PROOF STATE]
proof (chain)
picking this:
s = Fault f
t = Fault f
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Fault f
t = Fault f

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case Stuck
[PROOF STATE]
proof (state)
this:
s = Stuck

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t
s = Stuck
[PROOF STEP]
have "t=Stuck"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t
s = Stuck

goal (1 subgoal):
 1. t = Stuck
[PROOF STEP]
by (auto dest: execn_Stuck_end)
[PROOF STATE]
proof (state)
this:
t = Stuck

goal (3 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. s = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Stuck
[PROOF STATE]
proof (chain)
picking this:
s = Stuck
t = Stuck
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Stuck
t = Stuck

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Abrupt s')
[PROOF STATE]
proof (state)
this:
s = Abrupt s'

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t
s = Abrupt s'
[PROOF STEP]
have "t=Abrupt s'"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t
s = Abrupt s'

goal (1 subgoal):
 1. t = Abrupt s'
[PROOF STEP]
by (auto dest: execn_Abrupt_end)
[PROOF STATE]
proof (state)
this:
t = Abrupt s'

goal (2 subgoals):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. s = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Abrupt
[PROOF STATE]
proof (chain)
picking this:
s = Abrupt s'
t = Abrupt s'
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
s = Abrupt s'
t = Abrupt s'

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Normal s')
[PROOF STATE]
proof (state)
this:
s = Normal s'

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
note s=this
[PROOF STATE]
proof (state)
this:
s = Normal s'

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_strip
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t
s = Normal s'
[PROOF STEP]
have
      "\<Gamma>\<turnstile>\<langle>Catch (strip_guards F c1) (strip_guards F c2),Normal s'\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F (Catch c1 c2),s\<rangle> =n\<Rightarrow> t
s = Normal s'

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>Catch (strip_guards F c1) (strip_guards F c2),Normal s'\<rangle> =n\<Rightarrow> t
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>Catch (strip_guards F c1) (strip_guards F c2),Normal s'\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<And>x1. s = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>Catch (strip_guards F c1) (strip_guards F c2),Normal s'\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>s'a. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> Abrupt s'a; \<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal s'a\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t; \<not> isAbr t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
fix w
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>s'a. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> Abrupt s'a; \<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal s'a\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t; \<not> isAbr t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
assume exec_strip_c1: "\<Gamma>\<turnstile>\<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> Abrupt w"
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> Abrupt w

goal (2 subgoals):
 1. \<And>s'a. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> Abrupt s'a; \<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal s'a\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t; \<not> isAbr t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
assume exec_strip_c2: "\<Gamma>\<turnstile>\<langle>strip_guards F c2,Normal w\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal w\<rangle> =n\<Rightarrow> t

goal (2 subgoals):
 1. \<And>s'a. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> Abrupt s'a; \<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal s'a\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t; \<not> isAbr t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
from exec_strip_c1 Catch.hyps
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> Abrupt w
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
[PROOF STEP]
obtain w' where
        exec_c1: "\<Gamma>\<turnstile>\<langle>c1,Normal s'\<rangle> =n\<Rightarrow> w'" and
        w'_Fault: "w' \<in> Fault ` (-F) \<longrightarrow> w'=Abrupt w" and
        w'_noFault: "\<not> isFault w' \<longrightarrow> w'=Abrupt w"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> Abrupt w
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)

goal (1 subgoal):
 1. (\<And>w'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> w'; w' \<in> Fault ` (- F) \<longrightarrow> w' = Abrupt w; \<not> isFault w' \<longrightarrow> w' = Abrupt w\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> w'
w' \<in> Fault ` (- F) \<longrightarrow> w' = Abrupt w
\<not> isFault w' \<longrightarrow> w' = Abrupt w

goal (2 subgoals):
 1. \<And>s'a. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> Abrupt s'a; \<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal s'a\<rangle> =n\<Rightarrow> t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t; \<not> isAbr t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "w'")
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. w' = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. w' = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Fault f')
[PROOF STATE]
proof (state)
this:
w' = Fault f'

goal (4 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. w' = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. w' = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Normal exec_c1
[PROOF STATE]
proof (chain)
picking this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> w'
w' = Fault f'
[PROOF STEP]
have "\<Gamma>\<turnstile>\<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> Fault f'"
[PROOF STATE]
proof (prove)
using this:
s = Normal s'
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> w'
w' = Fault f'

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> Fault f'
[PROOF STEP]
by (auto intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> Fault f'

goal (4 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. \<And>x3. w' = Fault x3 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 4. w' = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with w'_Fault Fault
[PROOF STATE]
proof (chain)
picking this:
w' \<in> Fault ` (- F) \<longrightarrow> w' = Abrupt w
w' = Fault f'
\<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> Fault f'
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
w' \<in> Fault ` (- F) \<longrightarrow> w' = Abrupt w
w' = Fault f'
\<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> Fault f'

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (3 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. w' = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. w' = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case Stuck
[PROOF STATE]
proof (state)
this:
w' = Stuck

goal (3 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. w' = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with w'_noFault
[PROOF STATE]
proof (chain)
picking this:
\<not> isFault w' \<longrightarrow> w' = Abrupt w
w' = Stuck
[PROOF STEP]
have False
[PROOF STATE]
proof (prove)
using this:
\<not> isFault w' \<longrightarrow> w' = Abrupt w
w' = Stuck

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

goal (3 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 3. w' = Stuck \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (2 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Normal w'')
[PROOF STATE]
proof (state)
this:
w' = Normal w''

goal (2 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with w'_noFault
[PROOF STATE]
proof (chain)
picking this:
\<not> isFault w' \<longrightarrow> w' = Abrupt w
w' = Normal w''
[PROOF STEP]
have False
[PROOF STATE]
proof (prove)
using this:
\<not> isFault w' \<longrightarrow> w' = Abrupt w
w' = Normal w''

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

goal (2 subgoals):
 1. \<And>x1. w' = Normal x1 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case (Abrupt w'')
[PROOF STATE]
proof (state)
this:
w' = Abrupt w''

goal (1 subgoal):
 1. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with w'_noFault
[PROOF STATE]
proof (chain)
picking this:
\<not> isFault w' \<longrightarrow> w' = Abrupt w
w' = Abrupt w''
[PROOF STEP]
have w'': "w''=w"
[PROOF STATE]
proof (prove)
using this:
\<not> isFault w' \<longrightarrow> w' = Abrupt w
w' = Abrupt w''

goal (1 subgoal):
 1. w'' = w
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
w'' = w

goal (1 subgoal):
 1. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
from  exec_strip_c2 Catch.hyps
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal w\<rangle> =n\<Rightarrow> t
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
[PROOF STEP]
obtain t' where
          "\<Gamma>\<turnstile>\<langle>c2,Normal w\<rangle> =n\<Rightarrow> t'"
          "isFault t \<longrightarrow> isFault t'"
          "t' \<in> Fault ` (-F) \<longrightarrow> t'=t"
          "\<not> isFault t' \<longrightarrow> t'=t"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F c2,Normal w\<rangle> =n\<Rightarrow> t
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)

goal (1 subgoal):
 1. (\<And>t'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c2,Normal w\<rangle> =n\<Rightarrow> t'; isFault t \<longrightarrow> isFault t'; t' \<in> Fault ` (- F) \<longrightarrow> t' = t; \<not> isFault t' \<longrightarrow> t' = t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c2,Normal w\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. \<And>x2. w' = Abrupt x2 \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with w'' Abrupt s exec_c1
[PROOF STATE]
proof (chain)
picking this:
w'' = w
w' = Abrupt w''
s = Normal s'
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> w'
\<Gamma>\<turnstile> \<langle>c2,Normal w\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
w'' = w
w' = Abrupt w''
s = Normal s'
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> w'
\<Gamma>\<turnstile> \<langle>c2,Normal w\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (blast intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t; \<not> isAbr t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t; \<not> isAbr t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
assume t: "\<not> isAbr t"
[PROOF STATE]
proof (state)
this:
\<not> isAbr t

goal (1 subgoal):
 1. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t; \<not> isAbr t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
assume "\<Gamma>\<turnstile>\<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t"
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t; \<not> isAbr t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with Catch.hyps
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t
[PROOF STEP]
obtain t' where
        exec_c1: "\<Gamma>\<turnstile>\<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'"  and
        t_Fault: "isFault t \<longrightarrow> isFault t'" and
        t'_Fault: "t' \<in> Fault ` (-F) \<longrightarrow> t'=t" and
        t'_noFault: "\<not> isFault t' \<longrightarrow> t'=t"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>strip_guards F c1,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c1,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c2,?s\<rangle> =?n\<Rightarrow> ?t \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>c2,?s\<rangle> =?n\<Rightarrow> t' \<and> (isFault ?t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = ?t) \<and> (\<not> isFault t' \<longrightarrow> t' = ?t)
\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t

goal (1 subgoal):
 1. (\<And>t'. \<lbrakk>\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'; isFault t \<longrightarrow> isFault t'; t' \<in> Fault ` (- F) \<longrightarrow> t' = t; \<not> isFault t' \<longrightarrow> t' = t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'
isFault t \<longrightarrow> isFault t'
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
\<not> isFault t' \<longrightarrow> t' = t

goal (1 subgoal):
 1. \<lbrakk>\<Gamma>\<turnstile> \<langle>strip_guards F c1,Normal s'\<rangle> =n\<Rightarrow> t; \<not> isAbr t\<rbrakk> \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
proof (cases "isFault t'")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
isFault t'

goal (2 subgoals):
 1. isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
isFault t'
[PROOF STEP]
obtain f' where t': "t'=Fault f'"
[PROOF STATE]
proof (prove)
using this:
isFault t'

goal (1 subgoal):
 1. (\<And>f'. t' = Fault f' \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
t' = Fault f'

goal (2 subgoals):
 1. isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with exec_c1
[PROOF STATE]
proof (chain)
picking this:
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'
t' = Fault f'
[PROOF STEP]
have "\<Gamma>\<turnstile>\<langle>Catch c1 c2,Normal s'\<rangle> =n\<Rightarrow> Fault f'"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'
t' = Fault f'

goal (1 subgoal):
 1. \<Gamma>\<turnstile> \<langle>Catch c1 c2,Normal s'\<rangle> =n\<Rightarrow> Fault f'
[PROOF STEP]
by (auto intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<Gamma>\<turnstile> \<langle>Catch c1 c2,Normal s'\<rangle> =n\<Rightarrow> Fault f'

goal (2 subgoals):
 1. isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
 2. \<not> isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with t'_Fault t' s
[PROOF STATE]
proof (chain)
picking this:
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
t' = Fault f'
s = Normal s'
\<Gamma>\<turnstile> \<langle>Catch c1 c2,Normal s'\<rangle> =n\<Rightarrow> Fault f'
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
t' \<in> Fault ` (- F) \<longrightarrow> t' = t
t' = Fault f'
s = Normal s'
\<Gamma>\<turnstile> \<langle>Catch c1 c2,Normal s'\<rangle> =n\<Rightarrow> Fault f'

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal (1 subgoal):
 1. \<not> isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> isFault t'

goal (1 subgoal):
 1. \<not> isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with t'_noFault
[PROOF STATE]
proof (chain)
picking this:
\<not> isFault t' \<longrightarrow> t' = t
\<not> isFault t'
[PROOF STEP]
have "t'=t"
[PROOF STATE]
proof (prove)
using this:
\<not> isFault t' \<longrightarrow> t' = t
\<not> isFault t'

goal (1 subgoal):
 1. t' = t
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
t' = t

goal (1 subgoal):
 1. \<not> isFault t' \<Longrightarrow> \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
with t exec_c1 s
[PROOF STATE]
proof (chain)
picking this:
\<not> isAbr t
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'
s = Normal s'
t' = t
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<not> isAbr t
\<Gamma>\<turnstile> \<langle>c1,Normal s'\<rangle> =n\<Rightarrow> t'
s = Normal s'
t' = t

goal (1 subgoal):
 1. \<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)
[PROOF STEP]
by (blast intro: execn.intros)
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>t'. \<Gamma>\<turnstile> \<langle>Catch c1 c2,s\<rangle> =n\<Rightarrow> t' \<and> (isFault t \<longrightarrow> isFault t') \<and> (t' \<in> Fault ` (- F) \<longrightarrow> t' = t) \<and> (\<not> isFault t' \<longrightarrow> t' = t)

goal:
No subgoals!
[PROOF STEP]
qed