[STATEMENT]
lemma SeqQuoteP_Eats:
  assumes "atom s \<sharp> (k,s1,s2,k1,k2,t1,t2,u1,u2)" "atom k \<sharp> (s1,s2,k1,k2,t1,t2,u1,u2)"
    shows "{SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile>
           Ex s (Ex k (SeqQuoteP (Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqQuoteP (Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. {SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqQuoteP (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> (kn,j,k',l,s1,s2,s,k1,k2,k,t1,t2,u1,u2,sl,sl',m,n,sm,sm',sn,sn')"
         "atom kn \<sharp> (j,k',l,s1,s2,s,k1,k2,k,t1,t2,u1,u2,sl,sl',m,n,sm,sm',sn,sn')"
         "atom j \<sharp> (k',l,s1,s2,s,k1,k2,k,t1,t2,u1,u2,sl,sl',m,n,sm,sm',sn,sn')"
     and atoms: "atom k' \<sharp> (l,s1,s2,s,k1,k2,k,t1,t2,u1,u2,sl,sl',m,n,sm,sm',sn,sn')"
         "atom l \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,sl,sl',m,n,sm,sm',sn,sn')"
         "atom sl \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,sl',m,n,sm,sm',sn,sn')"
         "atom sl' \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,m,n,sm,sm',sn,sn')"
         "atom m \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,n,sm,sm',sn,sn')"
         "atom n \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,sm,sm',sn,sn')"
         "atom sm \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,sm',sn,sn')"
         "atom sm' \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,sn,sn')"
         "atom sn \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2,sn')"
         "atom sn' \<sharp> (s1,s2,s,k1,k2,k,t1,t2,u1,u2)"
[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> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (metis obtain_fresh)
[PROOF STATE]
proof (state)
this:
atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn')
atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn')
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn')
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn')
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn')
atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn')
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn')
atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)

goal (1 subgoal):
 1. {SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqQuoteP (Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqQuoteP (Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
using assms atoms
[PROOF STATE]
proof (prove)
using this:
atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2)
atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2)
atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn')
atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn')
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn')
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn')
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn')
atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn')
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn')
atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)

goal (1 subgoal):
 1. {SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqQuoteP (Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))
[PROOF STEP]
apply (auto simp: SeqQuoteP.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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> OrdP k1 AND OrdP k2
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {OrdP k1 AND OrdP k2, SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))))
[PROOF STEP]
apply (metis Conj_I SeqQuoteP_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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {OrdP k1 AND OrdP k2, SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex s (SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s)), OrdP k1 AND OrdP k2, SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> OrdP k2
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> atom k' \<sharp> (k1, k2)
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex k' (HaddP k1 k2 (Var k')), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> atom k' \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2}. atom k' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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 (Eats t1 t2) (Q_Eats u1 u2))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> atom k' \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2}. atom k' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (HPair (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 Zero AND Var sl' EQ Zero 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 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex k (LstSeqP (Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2)))) (Var k) (HPair (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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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'))"])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> (LstSeqP (Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2)))) (Var k) (HPair (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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))))(k::=SUCC (SUCC (Var k')))
[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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> LstSeqP (Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2)))) (SUCC (SUCC (Var k'))) (HPair (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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule Conj_I [OF LstSeqP_SeqAppendP_Eats])
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SeqAppendP ?f1.50 (SUCC ?k1.50) ?f2.50 (SUCC ?k2.50) (Var s)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> LstSeqP ?f1.50 ?k1.50 ?y1.50
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> LstSeqP ?f2.50 ?k2.50 ?y2.50
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> HaddP ?k1.50 ?k2.50 (Var k')
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (blast intro: SeqQuoteP_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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
show "{HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s),
              SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2}
             \<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 (Eats t1 t2) (Q_Eats u1 u2))) AND
                  (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND
                     Var sl EQ 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
apply (rule Ex_I [where x="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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))(sl::=Eats t1 t2)
[PROOF STEP]
using assms atoms
[PROOF STATE]
proof (prove)
using this:
atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2)
atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2)
atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn')
atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn')
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn')
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn')
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn')
atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn')
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn')
atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)

goal (1 subgoal):
 1. {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))(sl::=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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex sl' (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2))) AND (Eats t1 t2 EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2)) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2))) AND (Eats t1 t2 EQ Zero AND Q_Eats u1 u2 EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ Eats (Var sm) (Var sn) AND Q_Eats u1 u2 EQ Q_Eats (Var sm') (Var sn'))))))))
[PROOF STEP]
apply (rule Conj_I [OF Mem_Eats_I2 [OF Refl]])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> Eats t1 t2 EQ Zero AND Q_Eats u1 u2 EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ Eats t1 t2 AND Q_Eats u1 u2 EQ Q_Eats u1 u2
[PROOF STEP]
apply (blast intro: HaddP_Mem_I Mem_SUCC_I1)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ Eats t1 t2 AND Q_Eats u1 u2 EQ Q_Eats u1 u2
[PROOF STEP]
apply (rule Conj_I [OF Mem_SUCC_Refl])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> HPair k1 (HPair t1 u1) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> HPair k1 (HPair t1 u1) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2)))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> HPair (SUCC (Var k')) (HPair t2 u2) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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
                SeqQuoteP_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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> HPair (SUCC (Var k')) (HPair t2 u2) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2))) AND Eats t1 t2 EQ 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
                SeqQuoteP_imp_LstSeqP [THEN cut1] LstSeqP_imp_Mem  HaddP_SUCC1 [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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
show "{HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s),
              SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2}
             \<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 (Eats t1 t2) (Q_Eats u1 u2))) AND
                    (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND
                       Var sl EQ 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2}. atom l \<sharp> C
[PROOF STEP]
using assms atoms atoms2
[PROOF STATE]
proof (prove)
using this:
atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2)
atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2)
atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn')
atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn')
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn')
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn')
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn')
atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn')
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn')
atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2)
atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')
atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> OrdP ?k1.20
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> OrdP (SUCC k1)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (blast intro: OrdP_SUCC_I)
     \<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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (simp add: SeqQuoteP.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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))), SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))), 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), SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2} \<turnstile> ?x143 IN SUCC k1
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))(l::=?x143), LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2)))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2} \<turnstile> Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl' \<sharp> C
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl \<sharp> C
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (rule Mem_Eats_I1)
[PROOF STATE]
proof (prove)
goal (8 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Var s
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2} \<turnstile> Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl' \<sharp> C
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl \<sharp> C
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))
[PROOF STEP]
apply (metis 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var l) (HPair (Var sl) (Var sl')) IN s1, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2} \<turnstile> Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s1 k1 (HPair t1 u1), 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), SeqQuoteP t2 u2 s2 k2}. atom sl \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t2 u2 s2 k2}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ 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), 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), SeqQuoteP t2 u2 s2 k2} \<turnstile> HPair (Var m) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
apply (blast 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))
[PROOF STEP]
apply (simp add: SeqQuoteP.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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), SeqQuoteP t1 u1 s1 k1, 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 Zero AND Var sl' EQ Zero 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 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))))))), 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), SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> ?x353 IN SUCC k2
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))))))(l::=?x353), LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {HPair (Var j) (HPair (Var sl) (Var sl')) IN s2, Var sl EQ Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> OrdP (Var j)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1}. atom sl' \<sharp> C
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> HPair (Var l) (HPair (Var sl) (Var sl')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (Eats t1 t2) (Q_Eats u1 u2)))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1}. atom sl' \<sharp> C
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 Zero AND Var sl' EQ Zero 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 Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn'))))))), LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP t1 u1 s1 k1}. atom sl' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{LstSeqP s2 k2 (HPair t2 u2), 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), SeqQuoteP 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 17 subgoals...
[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 (19 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {Var sl EQ 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), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> OrdP (Var m)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sm' \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 19 subgoals...
[PROOF STEP]
apply (blast intro: Ord_IN_Ord, simp)
[PROOF STATE]
proof (prove)
goal (17 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 17 subgoals...
[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 (19 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> {SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), Var sl EQ 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), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> OrdP (Var n)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sm' \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 19 subgoals...
[PROOF STEP]
apply (metis AssumeH(6) Ord_IN_Ord0 rotate8, simp)
[PROOF STATE]
proof (prove)
goal (17 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sm' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 17 subgoals...
[PROOF STEP]
apply (rule AssumeH Ex_EH Conj_EH | simp)+
[PROOF STATE]
proof (prove)
goal (21 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ 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), 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), SeqQuoteP t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1}. atom kn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 21 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var km"], simp)
[PROOF STATE]
proof (prove)
goal (21 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ 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), 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), SeqQuoteP t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1}. atom kn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 21 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var kn"], simp)
[PROOF STATE]
proof (prove)
goal (21 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ 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), 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), SeqQuoteP t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1}. atom kn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 21 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var sm"], simp)
[PROOF STATE]
proof (prove)
goal (21 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ 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), 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), SeqQuoteP t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1}. atom kn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 21 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var sm'"], simp)
[PROOF STATE]
proof (prove)
goal (21 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ 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), 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), SeqQuoteP t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1}. atom kn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 21 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var sn"], simp)
[PROOF STATE]
proof (prove)
goal (21 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn')\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), Var sl EQ 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), 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), SeqQuoteP t1 u1 s1 k1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1}. atom kn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn' \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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), 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), SeqQuoteP t1 u1 s1 k1}. atom sn \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')))))))
A total of 21 subgoals...
[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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> Var km IN Var l
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> Var kn IN Var l
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')
[PROOF STEP]
apply (blast intro: Hyp OrdP_SUCC_I HaddP_Mem_cancel_left [THEN Iff_MP2_same])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> Var kn IN Var l
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')
[PROOF STEP]
apply (blast intro: Hyp OrdP_SUCC_I HaddP_Mem_cancel_left [THEN Iff_MP2_same])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2, u1, u2); atom k \<sharp> (s1, s2, k1, k2, t1, t2, u1, u2); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl', m, n, sm, sm', sn, sn'); atom sl' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, m, n, sm, sm', sn, sn'); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, n, sm, sm', sn, sn'); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm, sm', sn, sn'); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sm', sn, sn'); atom sm' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn, sn'); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2, sn'); atom sn' \<sharp> (s1, s2, s, k1, k2, k, t1, t2, u1, u2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, sl, sl', m, n, sm, sm', sn, sn'); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, u1, u2, 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 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), 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), SeqQuoteP t1 u1 s1 k1} \<turnstile> HPair (Var km) (HPair (Var sm) (Var sm')) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (HPair (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ Eats (Var sm) (Var sn) AND Var sl' EQ Q_Eats (Var sm') (Var sn')
[PROOF STEP]
apply (blast intro: Hyp Mem_Eats_I1 SeqAppendP_Mem2 [THEN cut4] OrdP_Trans 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), SeqQuoteP t1 u1 s1 k1, SeqQuoteP 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 (Eats t1 t2) (Q_Eats u1 u2))) AND (Var sl EQ Zero AND Var sl' EQ Zero 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 (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 (Eats t1 t2) (Q_Eats u1 u2))) AND Var sl EQ 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:
{SeqQuoteP t1 u1 s1 k1, SeqQuoteP t2 u2 s2 k2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqQuoteP (Eats t1 t2) (Q_Eats u1 u2) (Var s) (Var k)))

goal:
No subgoals!
[PROOF STEP]
qed