[STATEMENT]
lemma reachable_constraints_covered_step:
  fixes \::"('fun,'atom,'sets,'lbl) prot_constr"
  assumes \_reach: "\ \<in> reachable_constraints P"
    and T: "T \<in> set P"
    and \: "welltyped_constraint_model \ (\@dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>))"
    and \<xi>: "transaction_decl_subst \<xi> T"
    and \<sigma>: "transaction_fresh_subst \<sigma> T \"
    and \<alpha>: "transaction_renaming_subst \<alpha> P \"
    and FP:
      "analyzed (timpl_closure_set (set FP) (set TI))"
      "wf\<^sub>t\<^sub>r\<^sub>m\<^sub>s (set FP)"
      "\<forall>t \<in> \<alpha>\<^sub>i\<^sub>k \ \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t"
      "ground (set FP)"
    and OCC:
      "\<forall>t \<in> timpl_closure_set (set FP) (set TI). \<forall>f \<in> funs_term t. is_Abs f \<longrightarrow> f \<in> Abs ` set OCC"
      "timpl_closure_set (absc ` set OCC) (set TI) \<subseteq> absc ` set OCC"
      "\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \ \<subseteq> absc ` set OCC"
    and TI:
      "set TI = {(a,b) \<in> (set TI)\<^sup>+. a \<noteq> b}"
    and P:
      "\<forall>T \<in> set P. admissible_transaction T"
    and transactions_covered: "list_all (transaction_check (FP, OCC, TI)) P"
  shows "\<forall>t \<in> \<alpha>\<^sub>i\<^sub>k (\@dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \.
          timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t" (is ?A)
    and "\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\@dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> absc ` set OCC" (is ?B)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t &&& \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
note step_props = transaction_prop6[OF \_reach T \ \<xi> \<sigma> \<alpha> FP(1,2,3) OCC TI P transactions_covered]
[PROOF STATE]
proof (state)
this:
\<forall>t\<in>timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \). timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<subseteq> Fun_Abs_const_term ` set OCC
\<forall>t\<in>trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T). is_Fun (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \)) \<longrightarrow> timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \)
\<forall>x\<in>fv_transaction T. \<Gamma>\<^sub>v x = Var Value \<longrightarrow> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) x \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> Fun_Abs_const_term ` set OCC

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
define T' where "T' \<equiv> dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)"
[PROOF STATE]
proof (state)
this:
T' \<equiv> dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
define a0 where "a0 \<equiv> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)"
[PROOF STATE]
proof (state)
this:
a0 \<equiv> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
define a0' where "a0' \<equiv> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\@T') \)"
[PROOF STATE]
proof (state)
this:
a0' \<equiv> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ T') \)

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
define vals where "vals \<equiv> \<lambda>S::('fun,'atom,'sets,'lbl) prot_constr.
      {t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t S) \<cdot>\<^sub>s\<^sub>e\<^sub>t \. \<exists>n. t = Fun (Val n) []}"
[PROOF STATE]
proof (state)
this:
vals \<equiv> \<lambda>S. {t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t S) \<cdot>\<^sub>s\<^sub>e\<^sub>t \. \<exists>n. t = Fun (Val n) []}

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
define vals_sym where "vals_sym \<equiv> \<lambda>S::('fun,'atom,'sets,'lbl) prot_constr.
      {t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t S). (\<exists>n. t = Fun (Val n) []) \<or> (\<exists>m. t = Var (TAtom Value,m))}"
[PROOF STATE]
proof (state)
this:
vals_sym \<equiv> \<lambda>S. {t. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t S \<and> ((\<exists>n. t = Fun (Val n) []) \<or> (\<exists>m. t = \<langle>m: value\<rangle>\<^sub>v))}

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have \_wt: "wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t \"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t \
[PROOF STEP]
by (metis \ welltyped_constraint_model_def)
[PROOF STATE]
proof (state)
this:
wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t \

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have \_grounds: "fv (t \<cdot> \) = {}" for t
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv (t \<cdot> \) = {}
[PROOF STEP]
using \ interpretation_grounds[of \]
[PROOF STATE]
proof (prove)
using this:
welltyped_constraint_model \ (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>))
interpretation\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t \ \<Longrightarrow> fv (?t \<cdot> \) = {}

goal (1 subgoal):
 1. fv (t \<cdot> \) = {}
[PROOF STEP]
unfolding welltyped_constraint_model_def constraint_model_def
[PROOF STATE]
proof (prove)
using this:
wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t \ \<and> strand_sem_stateful {} {} (unlabel (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>))) \ \<and> interpretation\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t \ \<and> wf\<^sub>t\<^sub>r\<^sub>m\<^sub>s (subst_range \)
interpretation\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t \ \<Longrightarrow> fv (?t \<cdot> \) = {}

goal (1 subgoal):
 1. fv (t \<cdot> \) = {}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
fv (?t50 \<cdot> \) = {}

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have wt_\<sigma>\<alpha>\: "wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \)" and wt_\<sigma>\<alpha>: "wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \) &&& wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)
[PROOF STEP]
using \_wt wt_subst_compose transaction_decl_fresh_renaming_substs_wt[OF \<xi> \<sigma> \<alpha>]
[PROOF STATE]
proof (prove)
using this:
wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t \
\<lbrakk>wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t ?\<theta>; wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t ?\<delta>\<rbrakk> \<Longrightarrow> wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t (?\<theta> \<circ>\<^sub>s ?\<delta>)
wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)

goal (1 subgoal):
 1. wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \) &&& wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)
[PROOF STEP]
by (blast, blast)
[PROOF STATE]
proof (state)
this:
wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \)
wt\<^sub>s\<^sub>u\<^sub>b\<^sub>s\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have "\<forall>T\<in>set P. bvars_transaction T = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>T\<in>set P. bvars_transaction T = {}
[PROOF STEP]
using P admissible_transactionE(4)
[PROOF STATE]
proof (prove)
using this:
Ball (set P) admissible_transaction
admissible_transaction ?T \<Longrightarrow> bvars_transaction ?T = {}

goal (1 subgoal):
 1. \<forall>T\<in>set P. bvars_transaction T = {}
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
\<forall>T\<in>set P. bvars_transaction T = {}

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
hence \_no_bvars: "bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ = {}"
[PROOF STATE]
proof (prove)
using this:
\<forall>T\<in>set P. bvars_transaction T = {}

goal (1 subgoal):
 1. bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ = {}
[PROOF STEP]
using reachable_constraints_no_bvars[OF \_reach]
[PROOF STATE]
proof (prove)
using this:
\<forall>T\<in>set P. bvars_transaction T = {}
\<forall>T\<in>set P. bvars_transaction T = {} \<Longrightarrow> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ = {}

goal (1 subgoal):
 1. bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ = {}
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ = {}

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have \_vals: "\<exists>n. \ (TAtom Value, m) = Fun (Val n) []"
    when "(TAtom Value, m) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \" for m
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>n. \ (Var Value, m) = Fun (Val n) []
[PROOF STEP]
using constraint_model_Value_term_is_Val'[
            OF \_reach welltyped_constraint_model_prefix[OF \] P(1)]
          \_no_bvars vars\<^sub>s\<^sub>s\<^sub>t_is_fv\<^sub>s\<^sub>s\<^sub>t_bvars\<^sub>s\<^sub>s\<^sub>t[of "unlabel \"] that
[PROOF STATE]
proof (prove)
using this:
(Var Value, ?m) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> \<exists>n. \ (Var Value, ?m) = Fun (Val n) []
bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ = {}
vars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ = fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<union> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
(Var Value, m) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. \<exists>n. \ (Var Value, m) = Fun (Val n) []
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
(Var Value, ?m50) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> \<exists>n. \ (Var Value, ?m50) = Fun (Val n) []

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have vals_sym_vals: "t \<cdot> \ \<in> vals \" when t: "t \<in> vals_sym \" for t
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. t \<cdot> \ \<in> vals \
[PROOF STEP]
proof (cases t)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x1. t = Var x1 \<Longrightarrow> t \<cdot> \ \<in> vals \
 2. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
case (Var x)
[PROOF STATE]
proof (state)
this:
t = Var x

goal (2 subgoals):
 1. \<And>x1. t = Var x1 \<Longrightarrow> t \<cdot> \ \<in> vals \
 2. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
t = Var x
[PROOF STEP]
obtain m where *: "x = (TAtom Value,m)"
[PROOF STATE]
proof (prove)
using this:
t = Var x

goal (1 subgoal):
 1. (\<And>m. x = (Var Value, m) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using t
[PROOF STATE]
proof (prove)
using this:
t = Var x
t \<in> vals_sym \

goal (1 subgoal):
 1. (\<And>m. x = (Var Value, m) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
unfolding vals_sym_def
[PROOF STATE]
proof (prove)
using this:
t = Var x
t \<in> {t. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<and> ((\<exists>n. t = Fun (Val n) []) \<or> (\<exists>m. t = \<langle>m: value\<rangle>\<^sub>v))}

goal (1 subgoal):
 1. (\<And>m. x = (Var Value, m) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
x = (Var Value, m)

goal (2 subgoals):
 1. \<And>x1. t = Var x1 \<Longrightarrow> t \<cdot> \ \<in> vals \
 2. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
x = (Var Value, m)

goal (2 subgoals):
 1. \<And>x1. t = Var x1 \<Longrightarrow> t \<cdot> \ \<in> vals \
 2. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
have "t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
[PROOF STEP]
using t
[PROOF STATE]
proof (prove)
using this:
t \<in> vals_sym \

goal (1 subgoal):
 1. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
[PROOF STEP]
unfolding vals_sym_def
[PROOF STATE]
proof (prove)
using this:
t \<in> {t. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<and> ((\<exists>n. t = Fun (Val n) []) \<or> (\<exists>m. t = \<langle>m: value\<rangle>\<^sub>v))}

goal (1 subgoal):
 1. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (2 subgoals):
 1. \<And>x1. t = Var x1 \<Longrightarrow> t \<cdot> \ \<in> vals \
 2. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
hence "t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \" "\<exists>n. \ (Var Value, m) = Fun (Val n) []"
[PROOF STATE]
proof (prove)
using this:
t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \ &&& \<exists>n. \ (Var Value, m) = Fun (Val n) []
[PROOF STEP]
using Var * \_vals[of m] var_subterm_trms\<^sub>s\<^sub>s\<^sub>t_is_vars\<^sub>s\<^sub>s\<^sub>t[of x "unlabel \"]
            \<Gamma>\<^sub>v_TAtom[of Value m] reachable_constraints_Value_vars_are_fv[OF \_reach P(1), of x]
[PROOF STATE]
proof (prove)
using this:
t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
t = Var x
x = (Var Value, m)
(Var Value, m) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> \<exists>n. \ (Var Value, m) = Fun (Val n) []
Var x \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> x \<in> vars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
\<Gamma>\<^sub>v (Var Value, m) = Var Value
\<lbrakk>x \<in> vars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \; \<Gamma>\<^sub>v x = Var Value\<rbrakk> \<Longrightarrow> x \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \ &&& \<exists>n. \ (Var Value, m) = Fun (Val n) []
[PROOF STEP]
by blast+
[PROOF STATE]
proof (state)
this:
t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \
\<exists>n. \ (Var Value, m) = Fun (Val n) []

goal (2 subgoals):
 1. \<And>x1. t = Var x1 \<Longrightarrow> t \<cdot> \ \<in> vals \
 2. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
x = (Var Value, m)
t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \
\<exists>n. \ (Var Value, m) = Fun (Val n) []
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
x = (Var Value, m)
t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \
\<exists>n. \ (Var Value, m) = Fun (Val n) []

goal (1 subgoal):
 1. t \<cdot> \ \<in> vals \
[PROOF STEP]
using Var
[PROOF STATE]
proof (prove)
using this:
x = (Var Value, m)
t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \
\<exists>n. \ (Var Value, m) = Fun (Val n) []
t = Var x

goal (1 subgoal):
 1. t \<cdot> \ \<in> vals \
[PROOF STEP]
unfolding vals_def
[PROOF STATE]
proof (prove)
using this:
x = (Var Value, m)
t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \
\<exists>n. \ (Var Value, m) = Fun (Val n) []
t = Var x

goal (1 subgoal):
 1. t \<cdot> \ \<in> {t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \. \<exists>n. t = Fun (Val n) []}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
t \<cdot> \ \<in> vals \

goal (1 subgoal):
 1. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
case (Fun f T)
[PROOF STATE]
proof (state)
this:
t = Fun f T

goal (1 subgoal):
 1. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
t = Fun f T
[PROOF STEP]
obtain n where "f = Val n" "T = []"
[PROOF STATE]
proof (prove)
using this:
t = Fun f T

goal (1 subgoal):
 1. (\<And>n. \<lbrakk>f = Val n; T = []\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using t
[PROOF STATE]
proof (prove)
using this:
t = Fun f T
t \<in> vals_sym \

goal (1 subgoal):
 1. (\<And>n. \<lbrakk>f = Val n; T = []\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
unfolding vals_sym_def
[PROOF STATE]
proof (prove)
using this:
t = Fun f T
t \<in> {t. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<and> ((\<exists>n. t = Fun (Val n) []) \<or> (\<exists>m. t = \<langle>m: value\<rangle>\<^sub>v))}

goal (1 subgoal):
 1. (\<And>n. \<lbrakk>f = Val n; T = []\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
f = Val n
T = []

goal (1 subgoal):
 1. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
f = Val n
T = []

goal (1 subgoal):
 1. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
have "t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
[PROOF STEP]
using t
[PROOF STATE]
proof (prove)
using this:
t \<in> vals_sym \

goal (1 subgoal):
 1. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
[PROOF STEP]
unfolding vals_sym_def
[PROOF STATE]
proof (prove)
using this:
t \<in> {t. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<and> ((\<exists>n. t = Fun (Val n) []) \<or> (\<exists>m. t = \<langle>m: value\<rangle>\<^sub>v))}

goal (1 subgoal):
 1. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
hence "t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \"
[PROOF STATE]
proof (prove)
using this:
t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
using Fun
[PROOF STATE]
proof (prove)
using this:
t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
t = Fun f T

goal (1 subgoal):
 1. t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \

goal (1 subgoal):
 1. \<And>x21 x22. t = Fun x21 x22 \<Longrightarrow> t \<cdot> \ \<in> vals \
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
f = Val n
T = []
t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
f = Val n
T = []
t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \

goal (1 subgoal):
 1. t \<cdot> \ \<in> vals \
[PROOF STEP]
using Fun
[PROOF STATE]
proof (prove)
using this:
f = Val n
T = []
t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \
t = Fun f T

goal (1 subgoal):
 1. t \<cdot> \ \<in> vals \
[PROOF STEP]
unfolding vals_def
[PROOF STATE]
proof (prove)
using this:
f = Val n
T = []
t \<cdot> \ \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \
t = Fun f T

goal (1 subgoal):
 1. t \<cdot> \ \<in> {t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \. \<exists>n. t = Fun (Val n) []}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
t \<cdot> \ \<in> vals \

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<in> vals \

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have vals_vals_sym: "\<exists>s. s \<in> vals_sym \ \<and> t = s \<cdot> \" when "t \<in> vals \" for t
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>s. s \<in> vals_sym \ \<and> t = s \<cdot> \
[PROOF STEP]
using that constraint_model_Val_is_Value_term[OF \]
[PROOF STATE]
proof (prove)
using this:
t \<in> vals \
?t \<cdot> \ = Fun (Val ?n) [] \<Longrightarrow> ?t = Fun (Val ?n) [] \<or> (\<exists>m. ?t = \<langle>m: value\<rangle>\<^sub>v)

goal (1 subgoal):
 1. \<exists>s. s \<in> vals_sym \ \<and> t = s \<cdot> \
[PROOF STEP]
unfolding vals_def vals_sym_def
[PROOF STATE]
proof (prove)
using this:
t \<in> {t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \. \<exists>n. t = Fun (Val n) []}
?t \<cdot> \ = Fun (Val ?n) [] \<Longrightarrow> ?t = Fun (Val ?n) [] \<or> (\<exists>m. ?t = \<langle>m: value\<rangle>\<^sub>v)

goal (1 subgoal):
 1. \<exists>s. s \<in> {t. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<and> ((\<exists>n. t = Fun (Val n) []) \<or> (\<exists>m. t = \<langle>m: value\<rangle>\<^sub>v))} \<and> t = s \<cdot> \
[PROOF STEP]
by fast
[PROOF STATE]
proof (state)
this:
?t50 \<in> vals \ \<Longrightarrow> \<exists>s. s \<in> vals_sym \ \<and> ?t50 = s \<cdot> \

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have T_adm: "admissible_transaction T"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. admissible_transaction T
[PROOF STEP]
by (metis P(1) T)
[PROOF STATE]
proof (state)
this:
admissible_transaction T

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
note T_wf = admissible_transaction_is_wellformed_transaction(1)[OF T_adm]
[PROOF STATE]
proof (state)
this:
wellformed_transaction T

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have 0:
      "\<alpha>\<^sub>i\<^sub>k (\@T') \ = (ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<union> (ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t T' \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'"
      "\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\@T') \ = vals \ \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<union> vals T' \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<alpha>\<^sub>i\<^sub>k (\ @ T') \ = (ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<union> (ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t T' \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' &&& \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ T') \ = vals \ \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<union> vals T' \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
[PROOF STEP]
by (metis abs_intruder_knowledge_append a0'_def,
        metis abs_value_constants_append[of \ T' \] a0'_def vals_def)
[PROOF STATE]
proof (state)
this:
\<alpha>\<^sub>i\<^sub>k (\ @ T') \ = (ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<union> (ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t T' \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ T') \ = vals \ \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<union> vals T' \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have 1: "(ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t T' \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' =
           (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T) \<cdot>\<^sub>s\<^sub>e\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t T' \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' = (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T) \<cdot>\<^sub>s\<^sub>e\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
[PROOF STEP]
by (metis T'_def dual_transaction_ik_is_transaction_send''[OF T_wf])
[PROOF STATE]
proof (state)
this:
(ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t T' \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' = (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T) \<cdot>\<^sub>s\<^sub>e\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have 2: "bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T) \<inter> subst_domain \<xi> = {}"
          "bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T) \<inter> subst_domain \<sigma> = {}"
          "bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T) \<inter> subst_domain \<alpha> = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. bvars_transaction T \<inter> subst_domain \<xi> = {} &&& bvars_transaction T \<inter> subst_domain \<sigma> = {} &&& bvars_transaction T \<inter> subst_domain \<alpha> = {}
[PROOF STEP]
using admissible_transactionE(4)[OF T_adm]
[PROOF STATE]
proof (prove)
using this:
bvars_transaction T = {}

goal (1 subgoal):
 1. bvars_transaction T \<inter> subst_domain \<xi> = {} &&& bvars_transaction T \<inter> subst_domain \<sigma> = {} &&& bvars_transaction T \<inter> subst_domain \<alpha> = {}
[PROOF STEP]
by blast+
[PROOF STATE]
proof (state)
this:
bvars_transaction T \<inter> subst_domain \<xi> = {}
bvars_transaction T \<inter> subst_domain \<sigma> = {}
bvars_transaction T \<inter> subst_domain \<alpha> = {}

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have "vals T' \<subseteq> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vals T' \<subseteq> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> vals T' \<Longrightarrow> x \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
fix t
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> vals T' \<Longrightarrow> x \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
assume "t \<in> vals T'"
[PROOF STATE]
proof (state)
this:
t \<in> vals T'

goal (1 subgoal):
 1. \<And>x. x \<in> vals T' \<Longrightarrow> x \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
t \<in> vals T'
[PROOF STEP]
obtain s n where s:
        "s \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t T')" "t = s \<cdot> \" "t = Fun (Val n) []"
[PROOF STATE]
proof (prove)
using this:
t \<in> vals T'

goal (1 subgoal):
 1. (\<And>s n. \<lbrakk>s \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t T'; t = s \<cdot> \; t = Fun (Val n) []\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
unfolding vals_def
[PROOF STATE]
proof (prove)
using this:
t \<in> {t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t T') \<cdot>\<^sub>s\<^sub>e\<^sub>t \. \<exists>n. t = Fun (Val n) []}

goal (1 subgoal):
 1. (\<And>s n. \<lbrakk>s \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t T'; t = s \<cdot> \; t = Fun (Val n) []\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by fast
[PROOF STATE]
proof (state)
this:
s \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t T'
t = s \<cdot> \
t = Fun (Val n) []

goal (1 subgoal):
 1. \<And>x. x \<in> vals T' \<Longrightarrow> x \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
s \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t T'
t = s \<cdot> \
t = Fun (Val n) []
[PROOF STEP]
obtain u where u:
        "u \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T))"
        "s = u \<cdot> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)"
[PROOF STATE]
proof (prove)
using this:
s \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t T'
t = s \<cdot> \
t = Fun (Val n) []

goal (1 subgoal):
 1. (\<And>u. \<lbrakk>u \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms_transaction T; s = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using transaction_decl_fresh_renaming_substs_trms[OF \<xi> \<sigma> \<alpha> 2]
            trms\<^sub>s\<^sub>s\<^sub>t_unlabel_dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t_eq[of "transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>"]
[PROOF STATE]
proof (prove)
using this:
s \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t T'
t = s \<cdot> \
t = Fun (Val n) []
subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) = subterms\<^sub>s\<^sub>e\<^sub>t (trms_transaction T) \<cdot>\<^sub>s\<^sub>e\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>
trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) = trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)

goal (1 subgoal):
 1. (\<And>u. \<lbrakk>u \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms_transaction T; s = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
unfolding T'_def
[PROOF STATE]
proof (prove)
using this:
s \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>))
t = s \<cdot> \
t = Fun (Val n) []
subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) = subterms\<^sub>s\<^sub>e\<^sub>t (trms_transaction T) \<cdot>\<^sub>s\<^sub>e\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>
trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) = trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)

goal (1 subgoal):
 1. (\<And>u. \<lbrakk>u \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms_transaction T; s = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
u \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms_transaction T
s = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>

goal (1 subgoal):
 1. \<And>x. x \<in> vals T' \<Longrightarrow> x \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
have *: "t = u \<cdot> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. t = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \
[PROOF STEP]
by (metis subst_subst_compose s(2) u(2))
[PROOF STATE]
proof (state)
this:
t = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \

goal (1 subgoal):
 1. \<And>x. x \<in> vals T' \<Longrightarrow> x \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
t = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \
[PROOF STEP]
obtain x where x: "u = Var x"
[PROOF STATE]
proof (prove)
using this:
t = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \

goal (1 subgoal):
 1. (\<And>x. u = Var x \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using s(3) admissible_transactions_no_Value_consts(1)[OF T_adm u(1)]
[PROOF STATE]
proof (prove)
using this:
t = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \
t = Fun (Val n) []
\<nexists>a T. u = Fun (Val a) T

goal (1 subgoal):
 1. (\<And>x. u = Var x \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (cases u) force+
[PROOF STATE]
proof (state)
this:
u = Var x

goal (1 subgoal):
 1. \<And>x. x \<in> vals T' \<Longrightarrow> x \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
hence **: "x \<in> vars_transaction T"
[PROOF STATE]
proof (prove)
using this:
u = Var x

goal (1 subgoal):
 1. x \<in> vars_transaction T
[PROOF STEP]
by (metis u(1) var_subterm_trms\<^sub>s\<^sub>s\<^sub>t_is_vars\<^sub>s\<^sub>s\<^sub>t)
[PROOF STATE]
proof (state)
this:
x \<in> vars_transaction T

goal (1 subgoal):
 1. \<And>x. x \<in> vals T' \<Longrightarrow> x \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
have "\<Gamma>\<^sub>v x = TAtom Value"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Gamma>\<^sub>v x = Var Value
[PROOF STEP]
using * x s(3) wt_subst_trm''[OF wt_\<sigma>\<alpha>\, of u]
[PROOF STATE]
proof (prove)
using this:
t = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \
u = Var x
t = Fun (Val n) []
\<Gamma> u = \<Gamma> (u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \)

goal (1 subgoal):
 1. \<Gamma>\<^sub>v x = Var Value
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<Gamma>\<^sub>v x = Var Value

goal (1 subgoal):
 1. \<And>x. x \<in> vals T' \<Longrightarrow> x \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
thus "t \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \"
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<^sub>v x = Var Value

goal (1 subgoal):
 1. t \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
using admissible_transaction_Value_vars_are_fv[OF T_adm **] x *
[PROOF STATE]
proof (prove)
using this:
\<Gamma>\<^sub>v x = Var Value
\<Gamma>\<^sub>v x = Var Value \<Longrightarrow> x \<in> fv_transaction T
u = Var x
t = u \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<circ>\<^sub>s \

goal (1 subgoal):
 1. t \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \
[PROOF STEP]
by (metis subst_comp_set_image rev_image_eqI subst_apply_term.simps(1))
[PROOF STATE]
proof (state)
this:
t \<in> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
vals T' \<subseteq> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
hence 3: "vals T' \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<subseteq> ((\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'"
[PROOF STATE]
proof (prove)
using this:
vals T' \<subseteq> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \

goal (1 subgoal):
 1. vals T' \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<subseteq> ((\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
[PROOF STEP]
by (simp add: abs_apply_terms_def image_mono)
[PROOF STATE]
proof (state)
this:
vals T' \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<subseteq> ((\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have "t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)"
    when "t \<in> ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \" for t
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
using that abs_in[OF imageI[OF that]]
          \<alpha>\<^sub>t\<^sub>i_covers_\<alpha>\<^sub>0_ik[OF \_reach T \ \<xi> \<sigma> \<alpha> P(1)]
          timpl_closure_set_mono[of "{t \<cdot> \ \<cdot>\<^sub>\<alpha> a0}" "\<alpha>\<^sub>i\<^sub>k \ \" "\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \"
                                    "\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \"]
[PROOF STATE]
proof (prove)
using this:
t \<in> ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
?f1 t \<cdot>\<^sub>\<alpha> ?\<alpha> \<in> ?f1 ` ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t ?\<alpha>
?t \<in> ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> ?t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> timpl_closure_set {?t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
\<lbrakk>{t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} \<subseteq> \<alpha>\<^sub>i\<^sub>k \ \; \<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \ \<subseteq> \<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \\<rbrakk> \<Longrightarrow> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<subseteq> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
unfolding a0_def a0'_def T'_def abs_intruder_knowledge_def
[PROOF STATE]
proof (prove)
using this:
t \<in> ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
?f1 t \<cdot>\<^sub>\<alpha> ?\<alpha> \<in> ?f1 ` ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t ?\<alpha>
?t \<in> ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> ?t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> timpl_closure_set {?t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
\<lbrakk>{t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)} \<subseteq> (ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \); \<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \ \<subseteq> \<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \\<rbrakk> \<Longrightarrow> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<subseteq> timpl_closure_set ((ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> timpl_closure_set ((ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
by fast
[PROOF STATE]
proof (state)
this:
?t50 \<in> ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
hence A: "\<alpha>\<^sub>i\<^sub>k (\@T') \ \<subseteq>
              timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union>
              (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T) \<cdot>\<^sub>s\<^sub>e\<^sub>t (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'"
[PROOF STATE]
proof (prove)
using this:
?t50 \<in> ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. \<alpha>\<^sub>i\<^sub>k (\ @ T') \ \<subseteq> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union> (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T) \<cdot>\<^sub>s\<^sub>e\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
[PROOF STEP]
using 0(1) 1
[PROOF STATE]
proof (prove)
using this:
?t50 \<in> ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
\<alpha>\<^sub>i\<^sub>k (\ @ T') \ = (ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<union> (ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t T' \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
(ik\<^sub>l\<^sub>s\<^sub>s\<^sub>t T' \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' = (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T) \<cdot>\<^sub>s\<^sub>e\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'

goal (1 subgoal):
 1. \<alpha>\<^sub>i\<^sub>k (\ @ T') \ \<subseteq> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union> (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T) \<cdot>\<^sub>s\<^sub>e\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
[PROOF STEP]
by (auto simp add: abs_apply_terms_def)
[PROOF STATE]
proof (state)
this:
\<alpha>\<^sub>i\<^sub>k (\ @ T') \ \<subseteq> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union> (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T) \<cdot>\<^sub>s\<^sub>e\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have "t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)"
    when t: "t \<in> vals_sym \" for t
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
have "(\<exists>n. t = Fun (Val n) [] \<and> t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \)) \<or>
          (\<exists>n. t = Var (TAtom Value,n) \<and> (TAtom Value,n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \)"
      (is "?P \<or> ?Q")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<or> (\<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \)
[PROOF STEP]
using t var_subterm_trms\<^sub>s\<^sub>s\<^sub>t_is_vars\<^sub>s\<^sub>s\<^sub>t[of _ "unlabel \"]
            \<Gamma>\<^sub>v_TAtom[of Value] reachable_constraints_Value_vars_are_fv[OF \_reach P(1)]
[PROOF STATE]
proof (prove)
using this:
t \<in> vals_sym \
Var ?x \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> ?x \<in> vars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
\<Gamma>\<^sub>v (Var Value, ?n) = Var Value
\<lbrakk>?x \<in> vars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \; \<Gamma>\<^sub>v ?x = Var Value\<rbrakk> \<Longrightarrow> ?x \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. (\<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<or> (\<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \)
[PROOF STEP]
unfolding vals_sym_def
[PROOF STATE]
proof (prove)
using this:
t \<in> {t. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<and> ((\<exists>n. t = Fun (Val n) []) \<or> (\<exists>m. t = \<langle>m: value\<rangle>\<^sub>v))}
Var ?x \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> ?x \<in> vars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
\<Gamma>\<^sub>v (Var Value, ?n) = Var Value
\<lbrakk>?x \<in> vars\<^sub>l\<^sub>s\<^sub>s\<^sub>t \; \<Gamma>\<^sub>v ?x = Var Value\<rbrakk> \<Longrightarrow> ?x \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. (\<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<or> (\<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \)
[PROOF STEP]
by fast
[PROOF STATE]
proof (state)
this:
(\<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<or> (\<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \)

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
(\<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<or> (\<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \)

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
 2. \<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
assume ?P
[PROOF STATE]
proof (state)
this:
\<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (2 subgoals):
 1. \<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
 2. \<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
[PROOF STEP]
obtain n where n: "t = Fun (Val n) []" "t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \)"
[PROOF STATE]
proof (prove)
using this:
\<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. (\<And>n. \<lbrakk>t = Fun (Val n) []; t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
t = Fun (Val n) []
t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (2 subgoals):
 1. \<exists>n. t = Fun (Val n) [] \<and> t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
 2. \<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
t = Fun (Val n) []
t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
using \<alpha>\<^sub>t\<^sub>i_covers_\<alpha>\<^sub>0_Val[OF \_reach T \ \<xi> \<sigma> \<alpha> P(1), of n]
[PROOF STATE]
proof (prove)
using this:
t = Fun (Val n) []
t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
Fun (Val n) [] \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> Fun (Val n) [] \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> timpl_closure_set {Fun (Val n) [] \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
unfolding a0_def a0'_def T'_def
[PROOF STATE]
proof (prove)
using this:
t = Fun (Val n) []
t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
Fun (Val n) [] \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> Fun (Val n) [] \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> timpl_closure_set {Fun (Val n) [] \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. \<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
assume ?Q
[PROOF STATE]
proof (state)
this:
\<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. \<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
using \<alpha>\<^sub>t\<^sub>i_covers_\<alpha>\<^sub>0_Var[OF \_reach T \ \<xi> \<sigma> \<alpha> P(1)]
[PROOF STATE]
proof (prove)
using this:
\<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
?x \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> \ ?x \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> timpl_closure_set {\ ?x \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
unfolding a0_def a0'_def T'_def
[PROOF STATE]
proof (prove)
using this:
\<exists>n. t = \<langle>n: value\<rangle>\<^sub>v \<and> (Var Value, n) \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \
?x \<in> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<Longrightarrow> \ ?x \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> timpl_closure_set {\ ?x \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have "t \<cdot> \ \<cdot>\<^sub>\<alpha> a0 \<in> \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \"
    when "t \<in> vals_sym \" for t
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0 \<in> \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \
[PROOF STEP]
using that abs_in vals_sym_vals
[PROOF STATE]
proof (prove)
using this:
t \<in> vals_sym \
?t \<in> ?M \<Longrightarrow> ?t \<cdot>\<^sub>\<alpha> ?\<alpha> \<in> ?M \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t ?\<alpha>
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<in> vals \

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0 \<in> \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \
[PROOF STEP]
unfolding a0_def abs_value_constants_def vals_sym_def vals_def
[PROOF STATE]
proof (prove)
using this:
t \<in> {t. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<and> ((\<exists>n. t = Fun (Val n) []) \<or> (\<exists>m. t = \<langle>m: value\<rangle>\<^sub>v))}
?t \<in> ?M \<Longrightarrow> ?t \<cdot>\<^sub>\<alpha> ?\<alpha> \<in> ?M \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t ?\<alpha>
?t50 \<in> {t. t \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \<and> ((\<exists>n. t = Fun (Val n) []) \<or> (\<exists>m. t = \<langle>m: value\<rangle>\<^sub>v))} \<Longrightarrow> ?t50 \<cdot> \ \<in> {t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \. \<exists>n. t = Fun (Val n) []}

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \) \<in> {t \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t \) \<cdot>\<^sub>s\<^sub>e\<^sub>t \. \<exists>n. t = Fun (Val n) []} \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t \ \)
[PROOF STEP]
by (metis (mono_tags, lifting))
[PROOF STATE]
proof (state)
this:
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0 \<in> \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0 \<in> \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \
[PROOF STEP]
have "t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)"
    when t: "t \<in> vals_sym \" for t
[PROOF STATE]
proof (prove)
using this:
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0 \<in> \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
using t timpl_closure_set_mono[of "{t \<cdot> \ \<cdot>\<^sub>\<alpha> a0}" "\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \" "\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \"
                                      "\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \"]
[PROOF STATE]
proof (prove)
using this:
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set {?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0 \<in> \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \
t \<in> vals_sym \
\<lbrakk>{t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} \<subseteq> \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \; \<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \ \<subseteq> \<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \\<rbrakk> \<Longrightarrow> timpl_closure_set {t \<cdot> \ \<cdot>\<^sub>\<alpha> a0} (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<subseteq> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. t \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
hence "t \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)"
    when t: "t \<in> vals \" for t
[PROOF STATE]
proof (prove)
using this:
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. t \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
using vals_vals_sym[OF t]
[PROOF STATE]
proof (prove)
using this:
?t50 \<in> vals_sym \ \<Longrightarrow> ?t50 \<cdot> \ \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
\<exists>s. s \<in> vals_sym \ \<and> t = s \<cdot> \

goal (1 subgoal):
 1. t \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
?t50 \<in> vals \ \<Longrightarrow> ?t50 \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
hence B: "\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\@T') \ \<subseteq>
              timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union>
              ((\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'"
[PROOF STATE]
proof (prove)
using this:
?t50 \<in> vals \ \<Longrightarrow> ?t50 \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)

goal (1 subgoal):
 1. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ T') \ \<subseteq> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union> ((\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
[PROOF STEP]
using 0(2) 3
[PROOF STATE]
proof (prove)
using this:
?t50 \<in> vals \ \<Longrightarrow> ?t50 \<cdot>\<^sub>\<alpha> a0' \<in> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \)
\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ T') \ = vals \ \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<union> vals T' \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
vals T' \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0' \<subseteq> ((\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'

goal (1 subgoal):
 1. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ T') \ \<subseteq> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union> ((\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
[PROOF STEP]
by (simp add: abs_apply_terms_def image_subset_iff)
[PROOF STATE]
proof (state)
this:
\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ T') \ \<subseteq> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union> ((\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have 4: "fv (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a) = {}" for t a
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a) = {}
[PROOF STEP]
using \_grounds[of "t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>"] abs_fv[of "t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \" a]
[PROOF STATE]
proof (prove)
using this:
fv (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \) = {}
fv (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a) = fv (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \)

goal (1 subgoal):
 1. fv (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a) = {}
[PROOF STEP]
by argo
[PROOF STATE]
proof (state)
this:
fv (?t50 \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> ?a50) = {}

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
have "is_Fun (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a0')" for t
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. is_Fun (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a0')
[PROOF STEP]
using 4[of t a0']
[PROOF STATE]
proof (prove)
using this:
fv (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a0') = {}

goal (1 subgoal):
 1. is_Fun (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a0')
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
is_Fun (?t50 \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a0')

goal (2 subgoals):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
 2. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
thus ?A
[PROOF STATE]
proof (prove)
using this:
is_Fun (?t50 \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a0')

goal (1 subgoal):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
[PROOF STEP]
using A step_props(1,3)
[PROOF STATE]
proof (prove)
using this:
is_Fun (?t50 \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> a0')
\<alpha>\<^sub>i\<^sub>k (\ @ T') \ \<subseteq> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union> (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T) \<cdot>\<^sub>s\<^sub>e\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
\<forall>t\<in>timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \). timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
\<forall>t\<in>trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T). is_Fun (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \)) \<longrightarrow> timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \)

goal (1 subgoal):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
[PROOF STEP]
unfolding T'_def a0_def a0'_def abs_apply_terms_def
[PROOF STATE]
proof (prove)
using this:
is_Fun (?t50 \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \))
\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union> (\<lambda>t. t \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \)) ` (trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T) \<cdot>\<^sub>s\<^sub>e\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot>\<^sub>s\<^sub>e\<^sub>t \)
\<forall>t\<in>timpl_closure_set (\<alpha>\<^sub>i\<^sub>k \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \). timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
\<forall>t\<in>trms\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_send T). is_Fun (t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \)) \<longrightarrow> timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t \<cdot> \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha> \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \)

goal (1 subgoal):
 1. \<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<forall>t\<in>\<alpha>\<^sub>i\<^sub>k (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \. timpl_closure_set (set FP) (set TI) \<turnstile>\<^sub>c t

goal (1 subgoal):
 1. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
show ?B
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
using B step_props(2,4) admissible_transaction_Value_vars[OF bspec[OF P T]]
[PROOF STATE]
proof (prove)
using this:
\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ T') \ \<subseteq> timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<union> ((\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) ` fv_transaction T \<cdot>\<^sub>s\<^sub>e\<^sub>t \) \<cdot>\<^sub>\<alpha>\<^sub>s\<^sub>e\<^sub>t a0'
timpl_closure_set (\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s \ \) (\<alpha>\<^sub>t\<^sub>i \ T (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) \) \<subseteq> Fun_Abs_const_term ` set OCC
\<forall>x\<in>fv_transaction T. \<Gamma>\<^sub>v x = Var Value \<longrightarrow> (\<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>) x \<cdot> \ \<cdot>\<^sub>\<alpha> \<alpha>\<^sub>0 (db\<^sub>l\<^sub>s\<^sub>s\<^sub>t (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \) \<in> Fun_Abs_const_term ` set OCC
?x \<in> fv_transaction T \<Longrightarrow> \<Gamma>\<^sub>v ?x = Var Value

goal (1 subgoal):
 1. \<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC
[PROOF STEP]
by (auto simp add: T'_def a0_def a0'_def abs_apply_terms_def)
[PROOF STATE]
proof (state)
this:
\<alpha>\<^sub>v\<^sub>a\<^sub>l\<^sub>s (\ @ dual\<^sub>l\<^sub>s\<^sub>s\<^sub>t (transaction_strand T \<cdot>\<^sub>l\<^sub>s\<^sub>s\<^sub>t \<xi> \<circ>\<^sub>s \<sigma> \<circ>\<^sub>s \<alpha>)) \ \<subseteq> Fun_Abs_const_term ` set OCC

goal:
No subgoals!
[PROOF STEP]
qed