[STATEMENT]
lemma (in encoding_wrt_barbs) enc_and_TRel_impl_indRelRTPO_weakly_respects_success:
  fixes success :: "'barbs"
    and TRel    :: "('procT \<times> 'procT) set"
  assumes encRS:  "enc_weakly_respects_barb_set {success}"
      and trelPS: "rel_weakly_preserves_barb_set TRel TWB {success}"
      and trelRS: "rel_weakly_reflects_barb_set TRel TWB {success}"
  shows "rel_weakly_respects_barb_set (indRelRTPO TRel) (STCalWB SWB TWB) {success}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. rel_weakly_respects_barb_set (indRelRTPO TRel) (STCalWB SWB TWB) {success}
[PROOF STEP]
proof auto
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>a b P'. a \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> b \<and> a \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> b\<Down><STCalWB SWB TWB>success
 2. \<And>a b P'. a \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> b \<and> b \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> a\<Down><STCalWB SWB TWB>success
[PROOF STEP]
fix P Q P'
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>a b P'. a \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> b \<and> a \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> b\<Down><STCalWB SWB TWB>success
 2. \<And>a b P'. a \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> b \<and> b \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> a\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q" and "P \<longmapsto>(Calculus (STCalWB SWB TWB))* P'"
     and "P'\<down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q
P \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (2 subgoals):
 1. \<And>a b P'. a \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> b \<and> a \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> b\<Down><STCalWB SWB TWB>success
 2. \<And>a b P'. a \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> b \<and> b \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> a\<Down><STCalWB SWB TWB>success
[PROOF STEP]
thus "Q\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q
P \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. Q\<Down><STCalWB SWB TWB>success
[PROOF STEP]
proof (induct arbitrary: P')
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm (\<lbrakk>S\<rbrakk>)\<Down><STCalWB SWB TWB>success
 2. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 3. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 4. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
case (encR S)
[PROOF STATE]
proof (state)
this:
SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (4 subgoals):
 1. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm (\<lbrakk>S\<rbrakk>)\<Down><STCalWB SWB TWB>success
 2. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 3. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 4. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "SourceTerm S \<longmapsto>(Calculus (STCalWB SWB TWB))* P'" and "P'\<down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (4 subgoals):
 1. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm (\<lbrakk>S\<rbrakk>)\<Down><STCalWB SWB TWB>success
 2. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 3. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 4. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
hence "S\<Down><SWB>success"
[PROOF STATE]
proof (prove)
using this:
SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. S\<Down><SWB>success
[PROOF STEP]
using STCalWB_reachesBarbST
[PROOF STATE]
proof (prove)
using this:
SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success
?P\<Down><STCalWB SWB TWB>?a = ((\<exists>S. S \<in>S ?P \<and> S\<Down><SWB>?a) \<or> (\<exists>T. T \<in>T ?P \<and> T\<Down><TWB>?a))

goal (1 subgoal):
 1. S\<Down><SWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
S\<Down><SWB>success

goal (4 subgoals):
 1. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm (\<lbrakk>S\<rbrakk>)\<Down><STCalWB SWB TWB>success
 2. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 3. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 4. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
with encRS
[PROOF STATE]
proof (chain)
picking this:
(\<forall>S x. x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S SourceTerm S \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T SourceTerm S \<and> T\<Down><TWB>x)) \<longrightarrow> x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S TargetTerm (\<lbrakk>S\<rbrakk>) \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T TargetTerm (\<lbrakk>S\<rbrakk>) \<and> T\<Down><TWB>x))) \<and> (\<forall>S x. x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S TargetTerm (\<lbrakk>S\<rbrakk>) \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T TargetTerm (\<lbrakk>S\<rbrakk>) \<and> T\<Down><TWB>x)) \<longrightarrow> x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S SourceTerm S \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T SourceTerm S \<and> T\<Down><TWB>x)))
S\<Down><SWB>success
[PROOF STEP]
have "\<lbrakk>S\<rbrakk>\<Down><TWB>success"
[PROOF STATE]
proof (prove)
using this:
(\<forall>S x. x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S SourceTerm S \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T SourceTerm S \<and> T\<Down><TWB>x)) \<longrightarrow> x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S TargetTerm (\<lbrakk>S\<rbrakk>) \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T TargetTerm (\<lbrakk>S\<rbrakk>) \<and> T\<Down><TWB>x))) \<and> (\<forall>S x. x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S TargetTerm (\<lbrakk>S\<rbrakk>) \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T TargetTerm (\<lbrakk>S\<rbrakk>) \<and> T\<Down><TWB>x)) \<longrightarrow> x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S SourceTerm S \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T SourceTerm S \<and> T\<Down><TWB>x)))
S\<Down><SWB>success

goal (1 subgoal):
 1. \<lbrakk>S\<rbrakk>\<Down><TWB>success
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<lbrakk>S\<rbrakk>\<Down><TWB>success

goal (4 subgoals):
 1. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm (\<lbrakk>S\<rbrakk>)\<Down><STCalWB SWB TWB>success
 2. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 3. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 4. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
thus "TargetTerm (\<lbrakk>S\<rbrakk>)\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>S\<rbrakk>\<Down><TWB>success

goal (1 subgoal):
 1. TargetTerm (\<lbrakk>S\<rbrakk>)\<Down><STCalWB SWB TWB>success
[PROOF STEP]
using STCalWB_reachesBarbST
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>S\<rbrakk>\<Down><TWB>success
?P\<Down><STCalWB SWB TWB>?a = ((\<exists>S. S \<in>S ?P \<and> S\<Down><SWB>?a) \<or> (\<exists>T. T \<in>T ?P \<and> T\<Down><TWB>?a))

goal (1 subgoal):
 1. TargetTerm (\<lbrakk>S\<rbrakk>)\<Down><STCalWB SWB TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
TargetTerm (\<lbrakk>S\<rbrakk>)\<Down><STCalWB SWB TWB>success

goal (3 subgoals):
 1. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 3. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 3. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
case (source S)
[PROOF STATE]
proof (state)
this:
SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (3 subgoals):
 1. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 3. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "SourceTerm S \<longmapsto>(Calculus (STCalWB SWB TWB))* P'" and "P'\<down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (3 subgoals):
 1. \<And>S P'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 3. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
thus "SourceTerm S\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. SourceTerm S\<Down><STCalWB SWB TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
SourceTerm S\<Down><STCalWB SWB TWB>success

goal (2 subgoals):
 1. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
case (target T1 T2)
[PROOF STATE]
proof (state)
this:
(T1, T2) \<in> TRel
TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (2 subgoals):
 1. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "(T1, T2) \<in> TRel"
[PROOF STATE]
proof (state)
this:
(T1, T2) \<in> TRel

goal (2 subgoals):
 1. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(T1, T2) \<in> TRel

goal (2 subgoals):
 1. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "TargetTerm T1 \<longmapsto>(Calculus (STCalWB SWB TWB))* P'"
                and "P'\<down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (2 subgoals):
 1. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
hence "T1\<Down><TWB>success"
[PROOF STATE]
proof (prove)
using this:
TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. T1\<Down><TWB>success
[PROOF STEP]
using STCalWB_reachesBarbST
[PROOF STATE]
proof (prove)
using this:
TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success
?P\<Down><STCalWB SWB TWB>?a = ((\<exists>S. S \<in>S ?P \<and> S\<Down><SWB>?a) \<or> (\<exists>T. T \<in>T ?P \<and> T\<Down><TWB>?a))

goal (1 subgoal):
 1. T1\<Down><TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
T1\<Down><TWB>success

goal (2 subgoals):
 1. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
(T1, T2) \<in> TRel
T1\<Down><TWB>success
[PROOF STEP]
have "T2\<Down><TWB>success"
[PROOF STATE]
proof (prove)
using this:
(T1, T2) \<in> TRel
T1\<Down><TWB>success

goal (1 subgoal):
 1. T2\<Down><TWB>success
[PROOF STEP]
using trelPS
[PROOF STATE]
proof (prove)
using this:
(T1, T2) \<in> TRel
T1\<Down><TWB>success
rel_weakly_preserves_barb_set TRel TWB {success}

goal (1 subgoal):
 1. T2\<Down><TWB>success
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
T2\<Down><TWB>success

goal (2 subgoals):
 1. \<And>T1 T2 P'. (T1, T2) \<in> TRel \<and> TargetTerm T1 \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T2\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
thus "TargetTerm T2\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
T2\<Down><TWB>success

goal (1 subgoal):
 1. TargetTerm T2\<Down><STCalWB SWB TWB>success
[PROOF STEP]
using STCalWB_reachesBarbST
[PROOF STATE]
proof (prove)
using this:
T2\<Down><TWB>success
?P\<Down><STCalWB SWB TWB>?a = ((\<exists>S. S \<in>S ?P \<and> S\<Down><SWB>?a) \<or> (\<exists>T. T \<in>T ?P \<and> T\<Down><TWB>?a))

goal (1 subgoal):
 1. TargetTerm T2\<Down><STCalWB SWB TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
TargetTerm T2\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
case (trans P Q R)
[PROOF STATE]
proof (state)
this:
P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q
P \<longmapsto>Calculus (STCalWB SWB TWB)* ?P'3 \<and> ?P'3\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success
Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R
Q \<longmapsto>Calculus (STCalWB SWB TWB)* ?P'3 \<and> ?P'3\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
P \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "P \<longmapsto>(Calculus (STCalWB SWB TWB))* P'" and "P'\<down><STCalWB SWB TWB>success"
       and "\<And>P'. P \<longmapsto>(Calculus (STCalWB SWB TWB))* P' \<Longrightarrow> P'\<down><STCalWB SWB TWB>success
            \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
P \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success
P \<longmapsto>Calculus (STCalWB SWB TWB)* ?P'3 \<and> ?P'3\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
hence "Q\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
P \<longmapsto>Calculus (STCalWB SWB TWB)* P'
P'\<down><STCalWB SWB TWB>success
P \<longmapsto>Calculus (STCalWB SWB TWB)* ?P'3 \<and> ?P'3\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. Q\<Down><STCalWB SWB TWB>success
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Q\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Q\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "\<And>Q'. Q \<longmapsto>(Calculus (STCalWB SWB TWB))* Q' \<Longrightarrow> Q'\<down><STCalWB SWB TWB>success
                     \<Longrightarrow> R\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
Q \<longmapsto>Calculus (STCalWB SWB TWB)* ?Q'3 \<and> ?Q'3\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R P'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>P'. P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>P'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success; P \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Q\<Down><STCalWB SWB TWB>success
Q \<longmapsto>Calculus (STCalWB SWB TWB)* ?Q'3 \<and> ?Q'3\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
show "R\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
Q\<Down><STCalWB SWB TWB>success
Q \<longmapsto>Calculus (STCalWB SWB TWB)* ?Q'3 \<and> ?Q'3\<down><STCalWB SWB TWB>success \<Longrightarrow> R\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. R\<Down><STCalWB SWB TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
R\<Down><STCalWB SWB TWB>success

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Q\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>a b P'. a \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> b \<and> b \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> a\<Down><STCalWB SWB TWB>success
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b P'. a \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> b \<and> b \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> a\<Down><STCalWB SWB TWB>success
[PROOF STEP]
fix P Q Q'
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b P'. a \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> b \<and> b \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> a\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q" and "Q \<longmapsto>(Calculus (STCalWB SWB TWB))* Q'"
     and "Q'\<down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q
Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>a b P'. a \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> b \<and> b \<longmapsto>Calculus (STCalWB SWB TWB)* P' \<and> P'\<down><STCalWB SWB TWB>success \<Longrightarrow> a\<Down><STCalWB SWB TWB>success
[PROOF STEP]
thus "P\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q
Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
proof (induct arbitrary: Q')
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>S Q'. TargetTerm (\<lbrakk>S\<rbrakk>) \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>S Q'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 3. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 4. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
case (encR S)
[PROOF STATE]
proof (state)
this:
TargetTerm (\<lbrakk>S\<rbrakk>) \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (4 subgoals):
 1. \<And>S Q'. TargetTerm (\<lbrakk>S\<rbrakk>) \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>S Q'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 3. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 4. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "TargetTerm (\<lbrakk>S\<rbrakk>) \<longmapsto>(Calculus (STCalWB SWB TWB))* Q'"
       and "Q'\<down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
TargetTerm (\<lbrakk>S\<rbrakk>) \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (4 subgoals):
 1. \<And>S Q'. TargetTerm (\<lbrakk>S\<rbrakk>) \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>S Q'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 3. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 4. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
hence "\<lbrakk>S\<rbrakk>\<Down><TWB>success"
[PROOF STATE]
proof (prove)
using this:
TargetTerm (\<lbrakk>S\<rbrakk>) \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<lbrakk>S\<rbrakk>\<Down><TWB>success
[PROOF STEP]
using STCalWB_reachesBarbST
[PROOF STATE]
proof (prove)
using this:
TargetTerm (\<lbrakk>S\<rbrakk>) \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success
?P\<Down><STCalWB SWB TWB>?a = ((\<exists>S. S \<in>S ?P \<and> S\<Down><SWB>?a) \<or> (\<exists>T. T \<in>T ?P \<and> T\<Down><TWB>?a))

goal (1 subgoal):
 1. \<lbrakk>S\<rbrakk>\<Down><TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<lbrakk>S\<rbrakk>\<Down><TWB>success

goal (4 subgoals):
 1. \<And>S Q'. TargetTerm (\<lbrakk>S\<rbrakk>) \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>S Q'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 3. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 4. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
with encRS
[PROOF STATE]
proof (chain)
picking this:
(\<forall>S x. x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S SourceTerm S \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T SourceTerm S \<and> T\<Down><TWB>x)) \<longrightarrow> x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S TargetTerm (\<lbrakk>S\<rbrakk>) \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T TargetTerm (\<lbrakk>S\<rbrakk>) \<and> T\<Down><TWB>x))) \<and> (\<forall>S x. x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S TargetTerm (\<lbrakk>S\<rbrakk>) \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T TargetTerm (\<lbrakk>S\<rbrakk>) \<and> T\<Down><TWB>x)) \<longrightarrow> x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S SourceTerm S \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T SourceTerm S \<and> T\<Down><TWB>x)))
\<lbrakk>S\<rbrakk>\<Down><TWB>success
[PROOF STEP]
have "S\<Down><SWB>success"
[PROOF STATE]
proof (prove)
using this:
(\<forall>S x. x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S SourceTerm S \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T SourceTerm S \<and> T\<Down><TWB>x)) \<longrightarrow> x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S TargetTerm (\<lbrakk>S\<rbrakk>) \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T TargetTerm (\<lbrakk>S\<rbrakk>) \<and> T\<Down><TWB>x))) \<and> (\<forall>S x. x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S TargetTerm (\<lbrakk>S\<rbrakk>) \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T TargetTerm (\<lbrakk>S\<rbrakk>) \<and> T\<Down><TWB>x)) \<longrightarrow> x \<in> {success} \<and> ((\<exists>Sa. Sa \<in>S SourceTerm S \<and> Sa\<Down><SWB>x) \<or> (\<exists>T. T \<in>T SourceTerm S \<and> T\<Down><TWB>x)))
\<lbrakk>S\<rbrakk>\<Down><TWB>success

goal (1 subgoal):
 1. S\<Down><SWB>success
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
S\<Down><SWB>success

goal (4 subgoals):
 1. \<And>S Q'. TargetTerm (\<lbrakk>S\<rbrakk>) \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>S Q'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 3. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 4. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
thus "SourceTerm S\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
S\<Down><SWB>success

goal (1 subgoal):
 1. SourceTerm S\<Down><STCalWB SWB TWB>success
[PROOF STEP]
using STCalWB_reachesBarbST
[PROOF STATE]
proof (prove)
using this:
S\<Down><SWB>success
?P\<Down><STCalWB SWB TWB>?a = ((\<exists>S. S \<in>S ?P \<and> S\<Down><SWB>?a) \<or> (\<exists>T. T \<in>T ?P \<and> T\<Down><TWB>?a))

goal (1 subgoal):
 1. SourceTerm S\<Down><STCalWB SWB TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
SourceTerm S\<Down><STCalWB SWB TWB>success

goal (3 subgoals):
 1. \<And>S Q'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 3. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>S Q'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 3. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
case (source S)
[PROOF STATE]
proof (state)
this:
SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (3 subgoals):
 1. \<And>S Q'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 3. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "SourceTerm S \<longmapsto>(Calculus (STCalWB SWB TWB))* Q'" and "Q'\<down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (3 subgoals):
 1. \<And>S Q'. SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> SourceTerm S\<Down><STCalWB SWB TWB>success
 2. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 3. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
thus "SourceTerm S\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
SourceTerm S \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. SourceTerm S\<Down><STCalWB SWB TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
SourceTerm S\<Down><STCalWB SWB TWB>success

goal (2 subgoals):
 1. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
case (target T1 T2)
[PROOF STATE]
proof (state)
this:
(T1, T2) \<in> TRel
TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (2 subgoals):
 1. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "(T1, T2) \<in> TRel"
[PROOF STATE]
proof (state)
this:
(T1, T2) \<in> TRel

goal (2 subgoals):
 1. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(T1, T2) \<in> TRel

goal (2 subgoals):
 1. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "TargetTerm T2 \<longmapsto>(Calculus (STCalWB SWB TWB))* Q'"
                and "Q'\<down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (2 subgoals):
 1. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
hence "T2\<Down><TWB>success"
[PROOF STATE]
proof (prove)
using this:
TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. T2\<Down><TWB>success
[PROOF STEP]
using STCalWB_reachesBarbST
[PROOF STATE]
proof (prove)
using this:
TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q'
Q'\<down><STCalWB SWB TWB>success
?P\<Down><STCalWB SWB TWB>?a = ((\<exists>S. S \<in>S ?P \<and> S\<Down><SWB>?a) \<or> (\<exists>T. T \<in>T ?P \<and> T\<Down><TWB>?a))

goal (1 subgoal):
 1. T2\<Down><TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
T2\<Down><TWB>success

goal (2 subgoals):
 1. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
(T1, T2) \<in> TRel
T2\<Down><TWB>success
[PROOF STEP]
have "T1\<Down><TWB>success"
[PROOF STATE]
proof (prove)
using this:
(T1, T2) \<in> TRel
T2\<Down><TWB>success

goal (1 subgoal):
 1. T1\<Down><TWB>success
[PROOF STEP]
using trelRS
[PROOF STATE]
proof (prove)
using this:
(T1, T2) \<in> TRel
T2\<Down><TWB>success
rel_weakly_reflects_barb_set TRel TWB {success}

goal (1 subgoal):
 1. T1\<Down><TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
T1\<Down><TWB>success

goal (2 subgoals):
 1. \<And>T1 T2 Q'. (T1, T2) \<in> TRel \<and> TargetTerm T2 \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> TargetTerm T1\<Down><STCalWB SWB TWB>success
 2. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
thus "TargetTerm T1\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
T1\<Down><TWB>success

goal (1 subgoal):
 1. TargetTerm T1\<Down><STCalWB SWB TWB>success
[PROOF STEP]
using STCalWB_reachesBarbST
[PROOF STATE]
proof (prove)
using this:
T1\<Down><TWB>success
?P\<Down><STCalWB SWB TWB>?a = ((\<exists>S. S \<in>S ?P \<and> S\<Down><SWB>?a) \<or> (\<exists>T. T \<in>T ?P \<and> T\<Down><TWB>?a))

goal (1 subgoal):
 1. TargetTerm T1\<Down><STCalWB SWB TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
TargetTerm T1\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
case (trans P Q R R')
[PROOF STATE]
proof (state)
this:
P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q
Q \<longmapsto>Calculus (STCalWB SWB TWB)* ?Q'3 \<and> ?Q'3\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R
R \<longmapsto>Calculus (STCalWB SWB TWB)* ?Q'3 \<and> ?Q'3\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success
R \<longmapsto>Calculus (STCalWB SWB TWB)* R'
R'\<down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "R \<longmapsto>(Calculus (STCalWB SWB TWB))* R'" and "R'\<down><STCalWB SWB TWB>success"
       and "\<And>R'. R \<longmapsto>(Calculus (STCalWB SWB TWB))* R' \<Longrightarrow> R'\<down><STCalWB SWB TWB>success
            \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
R \<longmapsto>Calculus (STCalWB SWB TWB)* R'
R'\<down><STCalWB SWB TWB>success
R \<longmapsto>Calculus (STCalWB SWB TWB)* ?R'3 \<and> ?R'3\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
hence "Q\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
R \<longmapsto>Calculus (STCalWB SWB TWB)* R'
R'\<down><STCalWB SWB TWB>success
R \<longmapsto>Calculus (STCalWB SWB TWB)* ?R'3 \<and> ?R'3\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. Q\<Down><STCalWB SWB TWB>success
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Q\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Q\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
assume "\<And>Q'. Q \<longmapsto>(Calculus (STCalWB SWB TWB))* Q' \<Longrightarrow> Q'\<down><STCalWB SWB TWB>success
                     \<Longrightarrow> P\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (state)
this:
Q \<longmapsto>Calculus (STCalWB SWB TWB)* ?Q'3 \<and> ?Q'3\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. \<And>P Q R Q'. \<lbrakk>P \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> Q; \<And>Q'. Q \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success; Q \<lesssim>\<lbrakk>\<cdot>\<rbrakk>RT<TRel> R; \<And>Q'. R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success \<Longrightarrow> Q\<Down><STCalWB SWB TWB>success; R \<longmapsto>Calculus (STCalWB SWB TWB)* Q' \<and> Q'\<down><STCalWB SWB TWB>success\<rbrakk> \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Q\<Down><STCalWB SWB TWB>success
Q \<longmapsto>Calculus (STCalWB SWB TWB)* ?Q'3 \<and> ?Q'3\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
show "P\<Down><STCalWB SWB TWB>success"
[PROOF STATE]
proof (prove)
using this:
Q\<Down><STCalWB SWB TWB>success
Q \<longmapsto>Calculus (STCalWB SWB TWB)* ?Q'3 \<and> ?Q'3\<down><STCalWB SWB TWB>success \<Longrightarrow> P\<Down><STCalWB SWB TWB>success

goal (1 subgoal):
 1. P\<Down><STCalWB SWB TWB>success
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
P\<Down><STCalWB SWB TWB>success

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P\<Down><STCalWB SWB TWB>success

goal:
No subgoals!
[PROOF STEP]
qed