[STATEMENT]
lemma SeqStTermP_Eats:
  assumes sk: "atom s \<sharp> (k,s1,s2,k1,k2,t1,t2,u1,u2,v,i)"
              "atom k \<sharp> (t1,t2,u1,u2,v,i)"
    shows "{SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}
           \<turnstile> Ex s (Ex k (SeqStTermP v i (Q_Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqStTermP v i (Q_Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
(*<*)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqStTermP v i (Q_Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. {SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqStTermP v i (Q_Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
obtain km::name and kn::name and j::name and k'::name and l::name and sl::name and sl'::name
     and m::name and n::name and sm::name and sm'::name and sn::name and sn'::name
    where atoms2: "atom km \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,kn,j,k',l,sl,sl',m,n,sm,sm',sn,sn')"
         "atom kn \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,j,k',l,sl,sl',m,n,sm,sm',sn,sn')"
         "atom j  \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,k',l,sl,sl',m,n,sm,sm',sn,sn')"
      and atoms: "atom k' \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,l,sl,sl',m,n,sm,sm',sn,sn')"
         "atom l  \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,sl,sl',m,n,sm,sm',sn,sn')"
         "atom sl \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,sl',m,n,sm,sm',sn,sn')"
         "atom sl'\<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,m,n,sm,sm',sn,sn')"
         "atom m  \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,n,sm,sm',sn,sn')"
         "atom n  \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,sm,sm',sn,sn')"
         "atom sm \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,sm',sn,sn')"
         "atom sm'\<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,sn,sn')"
         "atom sn \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i,sn')"
         "atom sn'\<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,v,i)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>km kn j k' l sl sl' m n sm sm' sn sn'. \<lbrakk>atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (metis obtain_fresh)
[PROOF STATE]
proof (state)
this:
atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn')
atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn')
atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')
atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn')
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn')
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn')
atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn')
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn')
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn')
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn')
atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn')
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn')
atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)

goal (1 subgoal):
 1. {SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqStTermP v i (Q_Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
let ?hyp = "{HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. {SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqStTermP v i (Q_Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqStTermP v i (Q_Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
using sk atoms
[PROOF STATE]
proof (prove)
using this:
atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i)
atom k \<sharp> (t1, t2, u1, u2, v, i)
atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn')
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn')
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn')
atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn')
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn')
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn')
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn')
atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn')
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn')
atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)

goal (1 subgoal):
 1. {SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqStTermP v i (Q_Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
apply (auto simp: SeqStTermP.simps [of l "Var s" _ _ _ sl sl' m n sm sm' sn sn'])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
[PROOF STEP]
apply (rule cut_same [where A="OrdP k1 AND OrdP k2"])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> OrdP k1 AND OrdP k2
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {OrdP k1 AND OrdP k2, SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
[PROOF STEP]
apply (metis Conj_I SeqStTermP_imp_OrdP thin1 thin2)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {OrdP k1 AND OrdP k2, SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
[PROOF STEP]
apply (rule cut_same [OF exists_SeqAppendP [of s s1 "SUCC k1" s2 "SUCC k2"]])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> atom s \<sharp> (s1, SUCC k1, s2, SUCC k2)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex s (SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s)), OrdP k1 AND OrdP k2, SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
[PROOF STEP]
apply (rule AssumeH Ex_EH Conj_EH | simp)+
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom s \<sharp> C
[PROOF STEP]
apply (rule cut_same [OF exists_HaddP [where j=k' and x=k1 and y=k2]])
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> OrdP k2
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> atom k' \<sharp> (k1, k2)
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex k' (HaddP k1 k2 (Var k')), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom s \<sharp> C
[PROOF STEP]
apply (rule AssumeH Ex_EH Conj_EH | simp)+
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> atom k' \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom k' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom s \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)))"])
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))(s::=Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> atom k' \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom k' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (VarP v AND LstSeqP (Var s) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Var s AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom s \<sharp> C
[PROOF STEP]
apply (simp_all (no_asm_simp))
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex k (VarP v AND LstSeqP (Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)))) (Var k) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))))
[PROOF STEP]
apply (rule Ex_I [where x="SUCC (SUCC (Var k'))"], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> VarP v AND LstSeqP (Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)))) (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) AND All2 l (SUCC (SUCC (SUCC (Var k')))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule Conj_I [OF _ Conj_I])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> VarP v
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> LstSeqP (Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)))) (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> All2 l (SUCC (SUCC (SUCC (Var k')))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (metis SeqStTermP_imp_VarP thin1)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> LstSeqP (Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)))) (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> All2 l (SUCC (SUCC (SUCC (Var k')))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (blast intro: LstSeqP_SeqAppendP_Eats SeqStTermP_imp_LstSeqP [THEN cut1])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> All2 l (SUCC (SUCC (SUCC (Var k')))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
proof (rule All2_SUCC_I, simp_all)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (SUCC (SUCC (Var k'))) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
show "?hyp \<turnstile> Ex sl (Ex sl'
              (HPair (SUCC (SUCC (Var k'))) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND
               ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR
                Ex m (Ex n (Ex sm (Ex sm' (Ex sn (Ex sn'
                 (Var m IN SUCC (SUCC (Var k')) AND
                  Var n IN SUCC (SUCC (Var k')) AND
                  HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND
                  HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND
                  Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))"
       \<comment> \<open>verifying the final values\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (SUCC (SUCC (Var k'))) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
apply (rule Ex_I [where x="Q_Eats t1 t2"])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> (SyntaxN.Ex sl' (HPair (SUCC (SUCC (Var k'))) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))(sl::=Q_Eats t1 t2)
[PROOF STEP]
using sk atoms
[PROOF STATE]
proof (prove)
using this:
atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i)
atom k \<sharp> (t1, t2, u1, u2, v, i)
atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn')
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn')
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn')
atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn')
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn')
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn')
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn')
atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn')
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn')
atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)

goal (1 subgoal):
 1. {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> (SyntaxN.Ex sl' (HPair (SUCC (SUCC (Var k'))) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))(sl::=Q_Eats t1 t2)
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl' (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Q_Eats t1 t2 EQ v AND Var sl' EQ i OR (IndP (Q_Eats t1 t2) OR Q_Eats t1 t2 NEQ v) AND Var sl' EQ Q_Eats t1 t2) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))
[PROOF STEP]
apply (rule Ex_I [where x="Q_Eats u1 u2"], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Q_Eats t1 t2 EQ v AND Q_Eats u1 u2 EQ i OR (IndP (Q_Eats t1 t2) OR Q_Eats t1 t2 NEQ v) AND Q_Eats u1 u2 EQ Q_Eats t1 t2) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats (Var sm) (Var sn) AND Q_Eats u1 u2 EQ Q_Eats (Var sm') (Var sn'))))))))
[PROOF STEP]
apply (rule Conj_I, metis Mem_Eats_I2 Refl)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> (Q_Eats t1 t2 EQ v AND Q_Eats u1 u2 EQ i OR (IndP (Q_Eats t1 t2) OR Q_Eats t1 t2 NEQ v) AND Q_Eats u1 u2 EQ Q_Eats t1 t2) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats (Var sm) (Var sn) AND Q_Eats u1 u2 EQ Q_Eats (Var sm') (Var sn')))))))
[PROOF STEP]
apply (rule Disj_I2)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats (Var sm) (Var sn) AND Q_Eats u1 u2 EQ Q_Eats (Var sm') (Var sn')))))))
[PROOF STEP]
apply (rule Ex_I [where x=k1], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (k1 IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair k1 (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats (Var sm) (Var sn) AND Q_Eats u1 u2 EQ Q_Eats (Var sm') (Var sn'))))))
[PROOF STEP]
apply (rule Ex_I [where x="SUCC (Var k')"], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (k1 IN SUCC (SUCC (Var k')) AND SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (SUCC (Var k')) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats (Var sm) (Var sn) AND Q_Eats u1 u2 EQ Q_Eats (Var sm') (Var sn')))))
[PROOF STEP]
apply (rule Ex_I [where x=t1], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (k1 IN SUCC (SUCC (Var k')) AND SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 (HPair t1 (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (SUCC (Var k')) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats t1 (Var sn) AND Q_Eats u1 u2 EQ Q_Eats (Var sm') (Var sn'))))
[PROOF STEP]
apply (rule Ex_I [where x=u1], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sn (SyntaxN.Ex sn' (k1 IN SUCC (SUCC (Var k')) AND SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 (HPair t1 u1) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (SUCC (Var k')) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats t1 (Var sn) AND Q_Eats u1 u2 EQ Q_Eats u1 (Var sn')))
[PROOF STEP]
apply (rule Ex_I [where x=t2], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sn' (k1 IN SUCC (SUCC (Var k')) AND SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 (HPair t1 u1) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (SUCC (Var k')) (HPair t2 (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats t1 t2 AND Q_Eats u1 u2 EQ Q_Eats u1 (Var sn'))
[PROOF STEP]
apply (rule Ex_I [where x=u2], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> k1 IN SUCC (SUCC (Var k')) AND SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 (HPair t1 u1) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (SUCC (Var k')) (HPair t2 u2) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats t1 t2 AND Q_Eats u1 u2 EQ Q_Eats u1 u2
[PROOF STEP]
apply (rule Conj_I)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> k1 IN SUCC (SUCC (Var k'))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 (HPair t1 u1) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (SUCC (Var k')) (HPair t2 u2) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats t1 t2 AND Q_Eats u1 u2 EQ Q_Eats u1 u2
[PROOF STEP]
apply (blast intro: HaddP_Mem_I LstSeqP_OrdP Mem_SUCC_I1)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 (HPair t1 u1) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (SUCC (Var k')) (HPair t2 u2) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats t1 t2 AND Q_Eats u1 u2 EQ Q_Eats u1 u2
[PROOF STEP]
apply (rule Conj_I [OF Mem_SUCC_Refl Conj_I])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> HPair k1 (HPair t1 u1) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> HPair (SUCC (Var k')) (HPair t2 u2) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats t1 t2 AND Q_Eats u1 u2 EQ Q_Eats u1 u2
[PROOF STEP]
apply (blast intro: Mem_Eats_I1 SeqAppendP_Mem1 [THEN cut3] Mem_SUCC_Refl SeqStTermP_imp_LstSeqP [THEN cut1]
                           LstSeqP_imp_Mem)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> HPair (SUCC (Var k')) (HPair t2 u2) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Q_Eats t1 t2 EQ Q_Eats t1 t2 AND Q_Eats u1 u2 EQ Q_Eats u1 u2
[PROOF STEP]
apply (blast intro: Mem_Eats_I1 SeqAppendP_Mem2 [THEN cut4] Mem_SUCC_Refl SeqStTermP_imp_LstSeqP [THEN cut1]
                           HaddP_SUCC1 [THEN cut1] LstSeqP_imp_Mem)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
{HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (SUCC (SUCC (Var k'))) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))

goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
show "?hyp \<turnstile> All2 l (SUCC (SUCC (Var k')))
                (Ex sl (Ex sl'
                  (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND
                   ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR
                    Ex m (Ex n (Ex sm (Ex sm' (Ex sn (Ex sn'
                       (Var m IN Var l AND
                        Var n IN Var l AND
                        HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND
                        HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND
                        Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))"
     \<comment> \<open>verifying the sequence buildup\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule cut_same [where A="HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k')))"])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k')))
 2. {HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (blast intro: HaddP_SUCC1 [THEN cut1] HaddP_SUCC2 [THEN cut1])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule All_I Imp_I)+
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. {Var l IN SUCC (SUCC (Var k')), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 2. \<forall>C\<in>{HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom l \<sharp> C
[PROOF STEP]
apply (rule HaddP_Mem_cases [where i=j])
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. {HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> HaddP ?k1.20 ?k2.20 (SUCC (SUCC (Var k')))
 2. {HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> OrdP ?k1.20
 3. {Var l IN ?k1.20, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 4. {Var j IN ?k2.20, HaddP ?k1.20 (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. atom j \<sharp> (?k1.20, ?k2.20, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
 6. \<forall>C\<in>{HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom j \<sharp> C
 7. \<forall>C\<in>{HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom l \<sharp> C
[PROOF STEP]
using sk atoms atoms2
[PROOF STATE]
proof (prove)
using this:
atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i)
atom k \<sharp> (t1, t2, u1, u2, v, i)
atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn')
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn')
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn')
atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn')
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn')
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn')
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn')
atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn')
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn')
atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i)
atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn')
atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn')
atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')

goal (7 subgoals):
 1. {HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> HaddP ?k1.20 ?k2.20 (SUCC (SUCC (Var k')))
 2. {HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> OrdP ?k1.20
 3. {Var l IN ?k1.20, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 4. {Var j IN ?k2.20, HaddP ?k1.20 (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. atom j \<sharp> (?k1.20, ?k2.20, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
 6. \<forall>C\<in>{HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom j \<sharp> C
 7. \<forall>C\<in>{HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2}. atom l \<sharp> C
[PROOF STEP]
apply simp_all
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> HaddP ?k1.20 ?k2.20 (SUCC (SUCC (Var k')))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> OrdP ?k1.20
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var l IN ?k1.20, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN ?k2.20, HaddP ?k1.20 (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (?k1.20, ?k2.20, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule AssumeH)
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> OrdP (SUCC k1)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (blast intro: OrdP_SUCC_I LstSeqP_OrdP)
     \<comment> \<open>... the sequence buildup via s1\<close>
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (simp add: SeqStTermP.simps [of l s1 _ _ _ sl sl' m n sm sm' sn sn'])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), VarP v AND LstSeqP s1 k1 (HPair t1 u1) AND All2 l (SUCC k1) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN s1 AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s1 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule AssumeH Ex_EH Conj_EH)+
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {LstSeqP s1 k1 (HPair t1 u1), All2 l (SUCC k1) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN s1 AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s1 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule All2_E [THEN rotate2])
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom l \<sharp> SUCC k1
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> ?x145 IN SUCC k1
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {(SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN s1 AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s1 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))(l::=?x145), LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (simp | rule AssumeH Ex_EH Conj_EH)+
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s1 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sl \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule Ex_I [where x="Var sl"], simp)
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s1 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sl \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule Ex_I [where x="Var sl'"], simp)
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s1 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sl \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule Conj_I)
[PROOF STATE]
proof (prove)
goal (8 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s1 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s1 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sl' \<sharp> C
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sl \<sharp> C
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (metis Mem_Eats_I1 SeqAppendP_Mem1 rotate3 thin2 thin4)
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s1 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sl \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule AssumeH Disj_IE1H Ex_EH Conj_EH)+
[PROOF STATE]
proof (prove)
goal (19 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s1, HPair (Var m) (HPair (Var sm) (Var sm')) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 19 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var m"], simp)
[PROOF STATE]
proof (prove)
goal (19 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s1, HPair (Var m) (HPair (Var sm) (Var sm')) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 19 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var n"], simp)
[PROOF STATE]
proof (prove)
goal (19 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s1, HPair (Var m) (HPair (Var sm) (Var sm')) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 19 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var sm"], simp)
[PROOF STATE]
proof (prove)
goal (19 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s1, HPair (Var m) (HPair (Var sm) (Var sm')) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 19 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var sm'"], simp)
[PROOF STATE]
proof (prove)
goal (19 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s1, HPair (Var m) (HPair (Var sm) (Var sm')) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 19 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var sn"], simp)
[PROOF STATE]
proof (prove)
goal (19 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s1, HPair (Var m) (HPair (Var sm) (Var sm')) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 19 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var sn'"], simp_all)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s1, HPair (Var m) (HPair (Var sm) (Var sm')) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
apply (rule Conj_I, rule AssumeH)+
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s1, HPair (Var m) (HPair (Var sm) (Var sm')) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, LstSeqP s1 k1 (HPair t1 u1), VarP v, Var l IN SUCC k1, HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t2 u2 s2 k2} \<turnstile> HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
apply (blast del: Disj_EH intro: OrdP_Trans [OF OrdP_SUCC_I] Mem_Eats_I1 [OF SeqAppendP_Mem1 [THEN cut3]] Hyp)
     \<comment> \<open>... the sequence buildup via s2\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
apply (simp add: SeqStTermP.simps [of l s2 _ _ _ sl sl' m n sm sm' sn sn'])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, VarP v AND LstSeqP s2 k2 (HPair t2 u2) AND All2 l (SUCC k2) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN s2 AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
apply (rule AssumeH Ex_EH Conj_EH)+
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {LstSeqP s2 k2 (HPair t2 u2), All2 l (SUCC k2) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN s2 AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
apply (rule All2_E [THEN rotate2])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom l \<sharp> SUCC k2
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> ?x441 IN SUCC k2
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {(SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN s2 AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))(l::=?x441), LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
apply (simp | rule AssumeH Ex_EH Conj_EH)+
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="Var sl"], simp)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="Var sl'"], simp)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl \<sharp> C
[PROOF STEP]
apply (rule cut_same [where A="OrdP (Var j)"])
[PROOF STATE]
proof (prove)
goal (6 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> OrdP (Var j)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl' \<sharp> C
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl \<sharp> C
[PROOF STEP]
apply (metis HaddP_imp_OrdP rotate2 thin2)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl \<sharp> C
[PROOF STEP]
apply (rule Conj_I)
[PROOF STATE]
proof (prove)
goal (6 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2)))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl' \<sharp> C
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl \<sharp> C
[PROOF STEP]
apply (blast intro: Mem_Eats_I1 SeqAppendP_Mem2 [THEN cut4] del: Disj_EH)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (HPair (Var sm) (Var sm')) IN s2 AND HPair (Var n) (HPair (Var sn) (Var sn')) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> (Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl' \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sl \<sharp> SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sl \<sharp> C
[PROOF STEP]
apply (rule AssumeH Disj_IE1H Ex_EH Conj_EH)+
[PROOF STATE]
proof (prove)
goal (17 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm' \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 17 subgoals...
[PROOF STEP]
apply simp_all
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
[PROOF STEP]
apply (rule cut_same [OF exists_HaddP [where j=km and x="SUCC k1" and y="Var m"]])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> OrdP (Var m)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom km \<sharp> (SUCC k1, Var m)
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
[PROOF STEP]
apply (blast intro!: Ord_IN_Ord, simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
[PROOF STEP]
apply (rule cut_same [OF exists_HaddP [where j=kn and x="SUCC k1" and y="Var n"]])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> OrdP (Var n)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom kn \<sharp> (SUCC k1, Var n)
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {SyntaxN.Ex kn (HaddP (SUCC k1) (Var n) (Var kn)), SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
[PROOF STEP]
apply (blast intro!: Ord_IN_Ord, simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {SyntaxN.Ex kn (HaddP (SUCC k1) (Var n) (Var kn)), SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
[PROOF STEP]
apply (rule AssumeH Ex_EH Conj_EH | simp)+
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom km \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom kn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom kn \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="Var km"], simp)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var km IN Var l AND Var n IN Var l AND HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom km \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom kn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom kn \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="Var kn"], simp)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var km IN Var l AND Var kn IN Var l AND HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var kn) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom km \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom kn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom kn \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="Var sm"], simp)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var km IN Var l AND Var kn IN Var l AND HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var kn) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom km \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom kn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom kn \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="Var sm'"], simp)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex sn (SyntaxN.Ex sn' (Var km IN Var l AND Var kn IN Var l AND HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var kn) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom km \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom kn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom kn \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="Var sn"], simp)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> SyntaxN.Ex sn' (Var km IN Var l AND Var kn IN Var l AND HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var kn) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom km \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> atom kn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1}. atom kn \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="Var sn'"], simp_all)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> Var km IN Var l AND Var kn IN Var l AND HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var kn) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')
[PROOF STEP]
apply (rule Conj_I [OF _ Conj_I])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> Var km IN Var l
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> Var kn IN Var l
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var kn) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')
[PROOF STEP]
apply (blast intro!: HaddP_Mem_cancel_left [THEN Iff_MP2_same] OrdP_SUCC_I intro: LstSeqP_OrdP Hyp)+
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2, v, i); atom k \<sharp> (t1, t2, u1, u2, v, i); atom k' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, l, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i); atom km \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, kn, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, j, k', l, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, v, i, k', l, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ Q_Eats (Var sm) (Var sn), Var sl' EQ Q_Eats (Var sm') (Var sn'), HPair (Var n) (HPair (Var sn) (Var sn')) IN s2, HPair (Var m) (HPair (Var sm) (Var sm')) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, LstSeqP s2 k2 (HPair t2 u2), VarP v, Var j IN SUCC k2, HaddP (SUCC k1) (Var j) (Var l), HaddP (SUCC k1) (SUCC k2) (SUCC (SUCC (Var k'))), HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1} \<turnstile> HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var kn) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')
[PROOF STEP]
apply (blast intro: OrdP_Trans Hyp Mem_Eats_I1 SeqAppendP_Mem2 [THEN cut4] HaddP_imp_OrdP [THEN cut1])
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
{HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (SyntaxN.Ex sl' (HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND ((Var sl EQ v AND Var sl' EQ i OR (IndP (Var sl) OR Var sl NEQ v) AND Var sl' EQ Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND HPair (Var n) (HPair (Var sn) (Var sn')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Q_Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Q_Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
{SeqStTermP v i t1 u1 s1 k1, SeqStTermP v i t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqStTermP v i (Q_Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))

goal:
No subgoals!
[PROOF STEP]
qed