[STATEMENT]
lemma (in intruder_model) wf_strand_first_Send_var_split:
  assumes "wf\<^sub>s\<^sub>t {} S" "\<exists>v \<in> wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v"
  shows "\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not>(\<exists>w \<in> wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
            \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e@Send t'#S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>)
               \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e@Equality Assign t' t''#S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))"
    (is "\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. ?P S\<^sub>p\<^sub>r\<^sub>e \<and> ?Q S S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
wf\<^sub>s\<^sub>t {} S
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
proof (induction S rule: wf\<^sub>s\<^sub>t_induct')
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ts S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [send\<langle>ts\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 3. \<And>ts S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv\<^sub>s\<^sub>e\<^sub>t (set ts) \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 4. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 5. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 6. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
case (ConsSnd ts' S)
[PROOF STATE]
proof (state)
this:
wf\<^sub>s\<^sub>t {} S
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (6 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ts S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [send\<langle>ts\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 3. \<And>ts S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv\<^sub>s\<^sub>e\<^sub>t (set ts) \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 4. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 5. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 6. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
proof (cases "\<exists>w \<in> wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w

goal (2 subgoals):
 1. \<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w
[PROOF STEP]
obtain S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f where "?P S\<^sub>p\<^sub>r\<^sub>e" "?Q S S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f"
[PROOF STATE]
proof (prove)
using this:
\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w

goal (1 subgoal):
 1. (\<And>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<lbrakk>\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w); (\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using ConsSnd.IH
[PROOF STATE]
proof (prove)
using this:
\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (1 subgoal):
 1. (\<And>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<lbrakk>\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w); (\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
(\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)

goal (2 subgoals):
 1. \<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
(\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)

goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (1 subgoal):
 1. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w)

goal (1 subgoal):
 1. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w)
[PROOF STEP]
obtain v where v: "v \<in> fv\<^sub>s\<^sub>e\<^sub>t (set ts')" "t \<cdot> \<I> \<sqsubseteq> \<I> v"
[PROOF STATE]
proof (prove)
using this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w)

goal (1 subgoal):
 1. (\<And>v. \<lbrakk>v \<in> fv\<^sub>s\<^sub>e\<^sub>t (set ts'); t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using ConsSnd.prems
[PROOF STATE]
proof (prove)
using this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w)
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. (\<And>v. \<lbrakk>v \<in> fv\<^sub>s\<^sub>e\<^sub>t (set ts'); t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
v \<in> fv\<^sub>s\<^sub>e\<^sub>t (set ts')
t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
v \<in> fv\<^sub>s\<^sub>e\<^sub>t (set ts')
t \<cdot> \<I> \<sqsubseteq> \<I> v
[PROOF STEP]
obtain t' where t': "t' \<in> set ts'" "v \<in> fv t'"
[PROOF STATE]
proof (prove)
using this:
v \<in> fv\<^sub>s\<^sub>e\<^sub>t (set ts')
t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. (\<And>t'. \<lbrakk>t' \<in> set ts'; v \<in> fv t'\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
t' \<in> set ts'
v \<in> fv t'

goal (1 subgoal):
 1. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
have "t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>
[PROOF STEP]
using v(2) t'(2) subst_mono[of "Var v" t' \<I>] vars_iff_subtermeq[of v] term.order_trans
[PROOF STATE]
proof (prove)
using this:
t \<cdot> \<I> \<sqsubseteq> \<I> v
v \<in> fv t'
Var v \<sqsubseteq> t' \<Longrightarrow> Var v \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>
(v \<in> fv ?t) = (Var v \<sqsubseteq> ?t)
\<lbrakk>?x \<sqsubseteq> ?y; ?y \<sqsubseteq> ?z\<rbrakk> \<Longrightarrow> ?x \<sqsubseteq> ?z

goal (1 subgoal):
 1. t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>

goal (1 subgoal):
 1. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
hence "t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set ts' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>"
[PROOF STATE]
proof (prove)
using this:
t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>

goal (1 subgoal):
 1. t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set ts' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>
[PROOF STEP]
using v(1) t'(1)
[PROOF STATE]
proof (prove)
using this:
t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>
v \<in> fv\<^sub>s\<^sub>e\<^sub>t (set ts')
t' \<in> set ts'

goal (1 subgoal):
 1. t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set ts' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set ts' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>

goal (1 subgoal):
 1. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set ts' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>

goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
using False v
[PROOF STATE]
proof (prove)
using this:
t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set ts' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> w)
v \<in> fv\<^sub>s\<^sub>e\<^sub>t (set ts')
t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [send\<langle>ts'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (5 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ts S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv\<^sub>s\<^sub>e\<^sub>t (set ts) \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 3. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 4. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 5. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ts S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv\<^sub>s\<^sub>e\<^sub>t (set ts) \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 3. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 4. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 5. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
case (ConsRcv t' S)
[PROOF STATE]
proof (state)
this:
wf\<^sub>s\<^sub>t {} S
fv\<^sub>s\<^sub>e\<^sub>t (set t') \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [receive\<langle>t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (5 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ts S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv\<^sub>s\<^sub>e\<^sub>t (set ts) \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 3. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 4. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 5. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
have "fv\<^sub>s\<^sub>e\<^sub>t (set t') \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv\<^sub>s\<^sub>e\<^sub>t (set t') \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S
[PROOF STEP]
using ConsRcv.hyps vars_snd_rcv_strand_subset2(4)[of S]
[PROOF STATE]
proof (prove)
using this:
wf\<^sub>s\<^sub>t {} S
fv\<^sub>s\<^sub>e\<^sub>t (set t') \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S
wfvarsoccs\<^sub>s\<^sub>t S \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S

goal (1 subgoal):
 1. fv\<^sub>s\<^sub>e\<^sub>t (set t') \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
fv\<^sub>s\<^sub>e\<^sub>t (set t') \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S

goal (5 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ts S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv\<^sub>s\<^sub>e\<^sub>t (set ts) \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 3. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 4. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 5. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
hence "\<exists>v \<in> wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v"
[PROOF STATE]
proof (prove)
using this:
fv\<^sub>s\<^sub>e\<^sub>t (set t') \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S

goal (1 subgoal):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
[PROOF STEP]
using ConsRcv.prems
[PROOF STATE]
proof (prove)
using this:
fv\<^sub>s\<^sub>e\<^sub>t (set t') \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [receive\<langle>t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (5 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ts S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv\<^sub>s\<^sub>e\<^sub>t (set ts) \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 3. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 4. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 5. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
[PROOF STEP]
obtain S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f where "?P S\<^sub>p\<^sub>r\<^sub>e" "?Q S S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f"
[PROOF STATE]
proof (prove)
using this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. (\<And>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<lbrakk>\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w); (\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using ConsRcv.IH
[PROOF STATE]
proof (prove)
using this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (1 subgoal):
 1. (\<And>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<lbrakk>\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w); (\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
(\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)

goal (5 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ts S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv\<^sub>s\<^sub>e\<^sub>t (set ts) \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [receive\<langle>ts\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 3. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 4. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 5. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
(\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)

goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [receive\<langle>t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [receive\<langle>t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [receive\<langle>t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [receive\<langle>t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))

goal (4 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 3. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 4. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 3. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 4. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
case (ConsEq s s' S)
[PROOF STATE]
proof (state)
this:
wf\<^sub>s\<^sub>t {} S
fv s' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (4 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 3. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 4. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
have *: "fv s' \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv s' \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S
[PROOF STEP]
using ConsEq.hyps vars_snd_rcv_strand_subset2(4)[of S]
[PROOF STATE]
proof (prove)
using this:
wf\<^sub>s\<^sub>t {} S
fv s' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S
wfvarsoccs\<^sub>s\<^sub>t S \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S

goal (1 subgoal):
 1. fv s' \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
fv s' \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S

goal (4 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); fv t' \<subseteq> {} \<union> wfvarsoccs\<^sub>s\<^sub>t S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>assign: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 3. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 4. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
proof (cases "\<exists>v \<in> wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (2 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
[PROOF STEP]
obtain S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f where "?P S\<^sub>p\<^sub>r\<^sub>e" "?Q S S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f"
[PROOF STATE]
proof (prove)
using this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. (\<And>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<lbrakk>\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w); (\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using ConsEq.IH
[PROOF STATE]
proof (prove)
using this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (1 subgoal):
 1. (\<And>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<lbrakk>\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w); (\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
(\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)

goal (2 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
(\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)

goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (1 subgoal):
 1. \<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v)

goal (1 subgoal):
 1. \<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v)
[PROOF STEP]
obtain v where "v \<in> fv s" "t \<cdot> \<I> \<sqsubseteq> \<I> v"
[PROOF STATE]
proof (prove)
using this:
\<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v)

goal (1 subgoal):
 1. (\<And>v. \<lbrakk>v \<in> fv s; t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using ConsEq.prems *
[PROOF STATE]
proof (prove)
using this:
\<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v)
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v
fv s' \<subseteq> wfrestrictedvars\<^sub>s\<^sub>t S

goal (1 subgoal):
 1. (\<And>v. \<lbrakk>v \<in> fv s; t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
v \<in> fv s
t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. \<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
hence "t \<cdot> \<I> \<sqsubseteq> s \<cdot> \<I>"
[PROOF STATE]
proof (prove)
using this:
v \<in> fv s
t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. t \<cdot> \<I> \<sqsubseteq> s \<cdot> \<I>
[PROOF STEP]
using vars_iff_subtermeq[of v s] subst_mono[of "Var v" s \<I>] term.order_trans
[PROOF STATE]
proof (prove)
using this:
v \<in> fv s
t \<cdot> \<I> \<sqsubseteq> \<I> v
(v \<in> fv s) = (Var v \<sqsubseteq> s)
Var v \<sqsubseteq> s \<Longrightarrow> Var v \<cdot> \<I> \<sqsubseteq> s \<cdot> \<I>
\<lbrakk>?x \<sqsubseteq> ?y; ?y \<sqsubseteq> ?z\<rbrakk> \<Longrightarrow> ?x \<sqsubseteq> ?z

goal (1 subgoal):
 1. t \<cdot> \<I> \<sqsubseteq> s \<cdot> \<I>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
t \<cdot> \<I> \<sqsubseteq> s \<cdot> \<I>

goal (1 subgoal):
 1. \<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v) \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
t \<cdot> \<I> \<sqsubseteq> s \<cdot> \<I>

goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
t \<cdot> \<I> \<sqsubseteq> s \<cdot> \<I>
\<not> (\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v)

goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>assign: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (3 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 3. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 3. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
case (ConsEq2 s s' S)
[PROOF STATE]
proof (state)
this:
wf\<^sub>s\<^sub>t {} S
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (3 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 3. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
have "wfrestrictedvars\<^sub>s\<^sub>t (S@[Equality Check s s']) = wfrestrictedvars\<^sub>s\<^sub>t S"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t]) = wfrestrictedvars\<^sub>s\<^sub>t S
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t]) = wfrestrictedvars\<^sub>s\<^sub>t S

goal (3 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 3. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
hence "\<exists>v \<in> wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v"
[PROOF STATE]
proof (prove)
using this:
wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t]) = wfrestrictedvars\<^sub>s\<^sub>t S

goal (1 subgoal):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
[PROOF STEP]
using ConsEq2.prems
[PROOF STATE]
proof (prove)
using this:
wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t]) = wfrestrictedvars\<^sub>s\<^sub>t S
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (3 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 3. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
[PROOF STEP]
obtain S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f where "?P S\<^sub>p\<^sub>r\<^sub>e" "?Q S S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f"
[PROOF STATE]
proof (prove)
using this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. (\<And>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<lbrakk>\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w); (\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using ConsEq2.IH
[PROOF STATE]
proof (prove)
using this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (1 subgoal):
 1. (\<And>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<lbrakk>\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w); (\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
(\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)

goal (3 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>ta t' S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'a. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'a\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t'a \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t'a t''. S @ [\<langle>check: ta \<doteq> t'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t'a \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t'a \<cdot> \<I>))
 3. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
(\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)

goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>check: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>check: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<langle>check: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<langle>check: s \<doteq> s'\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (2 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
case (ConsIneq X F S)
[PROOF STATE]
proof (state)
this:
wf\<^sub>s\<^sub>t {} S
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (2 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
hence "\<exists>v \<in> wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v"
[PROOF STATE]
proof (prove)
using this:
wf\<^sub>s\<^sub>t {} S
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (2 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
[PROOF STEP]
obtain S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f where "?P S\<^sub>p\<^sub>r\<^sub>e" "?Q S S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f"
[PROOF STATE]
proof (prove)
using this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v

goal (1 subgoal):
 1. (\<And>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<lbrakk>\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w); (\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using ConsIneq.IH
[PROOF STATE]
proof (prove)
using this:
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v
\<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (1 subgoal):
 1. (\<And>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<lbrakk>\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w); (\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
(\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)

goal (2 subgoals):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
 2. \<And>X F S. \<lbrakk>wf\<^sub>s\<^sub>t {} S; \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t S. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)); \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t (S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t]). t \<cdot> \<I> \<sqsubseteq> \<I> v\<rbrakk> \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
\<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w)
(\<exists>t'. S = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>)

goal (1 subgoal):
 1. \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
\<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. S @ [\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))

goal (1 subgoal):
 1. \<exists>v\<in>wfrestrictedvars\<^sub>s\<^sub>t []. t \<cdot> \<I> \<sqsubseteq> \<I> v \<Longrightarrow> \<exists>S\<^sub>p\<^sub>r\<^sub>e S\<^sub>s\<^sub>u\<^sub>f. \<not> (\<exists>w\<in>wfrestrictedvars\<^sub>s\<^sub>t S\<^sub>p\<^sub>r\<^sub>e. t \<cdot> \<I> \<sqsubseteq> \<I> w) \<and> ((\<exists>t'. [] = S\<^sub>p\<^sub>r\<^sub>e @ send\<langle>t'\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t set t' \<cdot>\<^sub>s\<^sub>e\<^sub>t \<I>) \<or> (\<exists>t' t''. [] = S\<^sub>p\<^sub>r\<^sub>e @ \<langle>assign: t' \<doteq> t''\<rangle>\<^sub>s\<^sub>t # S\<^sub>s\<^sub>u\<^sub>f \<and> t \<cdot> \<I> \<sqsubseteq> t' \<cdot> \<I>))
[PROOF STEP]
qed simp