[STATEMENT]
lemma SeqTermP_Eats:
  assumes "atom s \<sharp> (k,s1,s2,k1,k2,t1,t2)" "atom k \<sharp> (s1,s2,k1,k2,t1,t2)"
    shows "{SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}
           \<turnstile> Ex s (Ex k (SeqTermP (Var s) (Var k) (Q_Eats t1 t2)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqTermP (Var s) (Var k) (Q_Eats t1 t2)))
[PROOF STEP]
(*<*)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqTermP (Var s) (Var k) (Q_Eats t1 t2)))
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. {SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqTermP (Var s) (Var k) (Q_Eats t1 t2)))
[PROOF STEP]
obtain km::name and kn::name and j::name and k'::name
     and l::name and sl::name and m::name and n::name and sm::name and sn::name
    where atoms:
         "atom km \<sharp> (kn,j,k',l,s1,s2,s,k1,k2,k,t1,t2,sl,m,n,sm,sn)"
         "atom kn \<sharp> (j,k',l,s1,s2,s,k1,k2,k,t1,t2,sl,m,n,sm,sn)"
         "atom j \<sharp> (k',l,s1,s2,s,k1,k2,k,t1,t2,sl,m,n,sm,sn)"
         "atom k' \<sharp> (l,s1,s2,s,k1,k2,k,t1,t2,sl,m,n,sm,sn)"
         "atom l \<sharp> (s1,s2,s,k1,k2,k,t1,t2,sl,m,n,sm,sn)"
         "atom sl \<sharp> (s1,s2,s,k1,k2,k,t1,t2,m,n,sm,sn)"
         "atom m \<sharp> (s1,s2,s,k1,k2,k,t1,t2,n,sm,sn)"
         "atom n \<sharp> (s1,s2,s,k1,k2,k,t1,t2,sm,sn)"
         "atom sm \<sharp> (s1,s2,s,k1,k2,k,t1,t2,sn)"
         "atom sn \<sharp> (s1,s2,s,k1,k2,k,t1,t2)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>km kn j k' l sl m n sm sn. \<lbrakk>atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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, sl, m, n, sm, sn)
atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn)
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn)
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn)
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn)
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)

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

goal (1 subgoal):
 1. {SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (SeqTermP (Var s) (Var k) (Q_Eats t1 t2)))
[PROOF STEP]
apply (auto simp: SeqCTermP.simps [of l "Var s" _ sl m n sm sn])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> OrdP k1 AND OrdP k2
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {OrdP k1 AND OrdP k2, SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
[PROOF STEP]
apply (metis Conj_I SeqCTermP_imp_OrdP thin1 thin2)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {OrdP k1 AND OrdP k2, SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom s \<sharp> (s1, SUCC k1, s2, SUCC k2)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex s (SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s)), OrdP k1 AND OrdP k2, SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> OrdP k2
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom k' \<sharp> (k1, k2)
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex k' (HaddP k1 k2 (Var k')), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom k' \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom k' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom s \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2))"], simp)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex k (LstSeqP (Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2))) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom k' \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom k' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom s \<sharp> C
[PROOF STEP]
apply (rule Ex_I [where x="SUCC (SUCC (Var k'))"], simp)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> LstSeqP (Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2))) (SUCC (SUCC (Var k'))) (Q_Eats t1 t2) AND All2 l (SUCC (SUCC (SUCC (Var k')))) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom k' \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom k' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom s \<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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> LstSeqP (Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2))) (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> All2 l (SUCC (SUCC (SUCC (Var k')))) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom k' \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom k' \<sharp> C
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom s \<sharp> C
[PROOF STEP]
apply (blast intro: LstSeqP_SeqAppendP_Eats SeqCTermP_imp_LstSeqP [THEN cut1])
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> All2 l (SUCC (SUCC (SUCC (Var k')))) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom k' \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom k' \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom s \<sharp> SyntaxN.Ex s (SyntaxN.Ex k (LstSeqP (Var s) (Var k) (Q_Eats t1 t2) AND All2 l (SUCC (Var k)) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Var s AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Var s AND HPair (Var n) (Var sn) IN Var s AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP k1 AND OrdP k2, SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom s \<sharp> C
[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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (SUCC (SUCC (Var k'))) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
show "?hyp \<turnstile> Ex sl (HPair (SUCC (SUCC (Var k'))) (Var sl) IN Eats (Var s)
                          (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2))   AND
                (Var sl EQ Zero OR VarP (Var sl) OR
                 Ex m (Ex n(Ex sm (Ex sn
                      (Var m IN SUCC (SUCC (Var k')) AND
                       Var n IN SUCC (SUCC (Var k')) AND
                       HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND
                       HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (SUCC (SUCC (Var k'))) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (rule Ex_I [where x="Q_Eats t1 t2"])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> (HPair (SUCC (SUCC (Var k'))) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))(sl::=Q_Eats t1 t2)
[PROOF STEP]
using assms atoms
[PROOF STATE]
proof (prove)
using this:
atom s \<sharp> (k, s1, s2, k1, k2, t1, t2)
atom k \<sharp> (s1, s2, k1, k2, t1, t2)
atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn)
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn)
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn)
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn)
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)

goal (1 subgoal):
 1. {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> (HPair (SUCC (SUCC (Var k'))) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))(sl::=Q_Eats t1 t2)
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Q_Eats t1 t2 EQ Zero OR VarP (Q_Eats t1 t2) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Q_Eats t1 t2 EQ Q_Eats (Var sm) (Var sn))))))
[PROOF STEP]
apply (rule Conj_I, metis Mem_Eats_I2 Refl)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> Q_Eats t1 t2 EQ Zero OR VarP (Q_Eats t1 t2) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Q_Eats t1 t2 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Q_Eats t1 t2 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (k1 IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair k1 (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Q_Eats t1 t2 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sm (SyntaxN.Ex sn (k1 IN SUCC (SUCC (Var k')) AND SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (SUCC (Var k')) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Q_Eats t1 t2 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sn (k1 IN SUCC (SUCC (Var k')) AND SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 t1 IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (SUCC (Var k')) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Q_Eats t1 t2 EQ Q_Eats t1 (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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> k1 IN SUCC (SUCC (Var k')) AND SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 t1 IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (SUCC (Var k')) t2 IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Q_Eats t1 t2 EQ Q_Eats t1 t2
[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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> k1 IN SUCC (SUCC (Var k'))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 t1 IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (SUCC (Var k')) t2 IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Q_Eats t1 t2 EQ Q_Eats t1 t2
[PROOF STEP]
apply (blast intro: HaddP_Mem_I LstSeqP_OrdP Mem_SUCC_I1)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SUCC (Var k') IN SUCC (SUCC (Var k')) AND HPair k1 t1 IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (SUCC (Var k')) t2 IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Q_Eats t1 t2 EQ Q_Eats t1 t2
[PROOF STEP]
apply (blast intro: Mem_Eats_I1 SeqAppendP_Mem1 [THEN cut3] SeqAppendP_Mem2 [THEN cut4]
                 Mem_SUCC_Refl SeqCTermP_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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (SUCC (SUCC (Var k'))) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN SUCC (SUCC (Var k')) AND Var n IN SUCC (SUCC (Var k')) AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))
[PROOF STEP]
show "?hyp \<turnstile> All2 l (SUCC (SUCC (Var k')))
                 (Ex sl
                   (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND
                    (Var sl EQ Zero OR VarP (Var sl) OR
                     Ex m (Ex n (Ex sm (Ex sn
                          (Var m IN Var l AND
                           Var n IN Var l AND
                           HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND
                           HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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 (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. atom l \<sharp> C
[PROOF STEP]
using assms atoms
[PROOF STATE]
proof (prove)
using this:
atom s \<sharp> (k, s1, s2, k1, k2, t1, t2)
atom k \<sharp> (s1, s2, k1, k2, t1, t2)
atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn)
atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn)
atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn)
atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn)
atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn)
atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)

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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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 (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. 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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2}. 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> HaddP ?k1.20 ?k2.20 (SUCC (SUCC (Var k')))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> OrdP ?k1.20
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom j \<sharp> (?k1.20, ?k2.20, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> OrdP (SUCC k1)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))
[PROOF STEP]
apply (blast intro: OrdP_SUCC_I LstSeqP_OrdP)
     \<comment> \<open>... the sequence buildup via s1\<close>
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))
[PROOF STEP]
apply (simp add: SeqCTermP.simps [of l s1 _ sl m n sm sn])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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 t1 AND All2 l (SUCC k1) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN s1 AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s1 AND HPair (Var n) (Var sn) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))), SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {LstSeqP s1 k1 t1, All2 l (SUCC k1) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN s1 AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s1 AND HPair (Var n) (Var sn) IN s1 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), SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom j \<sharp> (SUCC k1, SUCC k2, SUCC (SUCC (Var k')), Var l, SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))
[PROOF STEP]
apply (rule All2_E [THEN rotate2], auto del: Disj_EH)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var l) (Var sl) IN s1, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s1 AND HPair (Var n) (Var sn) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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 (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var l) (Var sl) IN s1, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s1 AND HPair (Var n) (Var sn) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (rule Conj_I)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var l) (Var sl) IN s1, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s1 AND HPair (Var n) (Var sn) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var l) (Var sl) IN s1, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s1 AND HPair (Var n) (Var sn) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (rule Mem_Eats_I1)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var l) (Var sl) IN s1, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s1 AND HPair (Var n) (Var sn) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> HPair (Var l) (Var sl) IN Var s
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var l) (Var sl) IN s1, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s1 AND HPair (Var n) (Var sn) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (metis SeqAppendP_Mem1 rotate3 thin2 thin4)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var l) (Var sl) IN s1, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s1 AND HPair (Var n) (Var sn) IN s1 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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 (10 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var n) (Var sn) IN s1, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2}. atom sn \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2}. atom sm \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2}. atom n \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom m \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2}. atom m \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply simp_all
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var n) (Var sn) IN s1, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (rule Ex_I [where x="Var m"], simp)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var n) (Var sn) IN s1, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (rule Ex_I [where x="Var n"], simp)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var n) (Var sn) IN s1, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (rule Ex_I [where x="Var sm"], simp)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var n) (Var sn) IN s1, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (rule Ex_I [where x="Var sn"], simp)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var n) (Var sn) IN s1, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var n) (Var sn) IN s1, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s1, Var n IN Var l, Var m IN Var l, HPair (Var l) (Var sl) IN s1, LstSeqP s1 k1 t1, 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), SeqTermP s2 k2 t2} \<turnstile> HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (blast del: Disj_EH intro: OrdP_Trans [OF OrdP_SUCC_I] Mem_Eats_I1 [OF SeqAppendP_Mem1 [THEN cut3]] Hyp)
     \<comment> \<open>... the sequence buildup via s2\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (simp add: SeqCTermP.simps [of l s2 _ sl m n sm sn])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<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), SeqTermP s1 k1 t1, LstSeqP s2 k2 t2 AND All2 l (SUCC k2) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN s2 AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s2 AND HPair (Var n) (Var sn) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {LstSeqP s2 k2 t2, All2 l (SUCC k2) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN s2 AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN s2 AND HPair (Var n) (Var sn) IN s2 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))))
[PROOF STEP]
apply (rule All2_E [THEN rotate2], auto del: Disj_EH)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var j) (Var sl) IN s2, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (Var sm) IN s2 AND HPair (Var n) (Var sn) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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 (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var j) (Var sl) IN s2, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (Var sm) IN s2 AND HPair (Var n) (Var sn) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))
[PROOF STEP]
apply (rule cut_same [where A="OrdP (Var j)"])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var j) (Var sl) IN s2, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (Var sm) IN s2 AND HPair (Var n) (Var sn) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> OrdP (Var j)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {OrdP (Var j), HPair (Var j) (Var sl) IN s2, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (Var sm) IN s2 AND HPair (Var n) (Var sn) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))
[PROOF STEP]
apply (metis HaddP_imp_OrdP rotate2 thin2)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {OrdP (Var j), HPair (Var j) (Var sl) IN s2, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (Var sm) IN s2 AND HPair (Var n) (Var sn) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))
[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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {OrdP (Var j), HPair (Var j) (Var sl) IN s2, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (Var sm) IN s2 AND HPair (Var n) (Var sn) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {OrdP (Var j), HPair (Var j) (Var sl) IN s2, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (Var sm) IN s2 AND HPair (Var n) (Var sn) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
[PROOF STEP]
apply (blast intro: Mem_Eats_I1 SeqAppendP_Mem2 [THEN cut4] del: Disj_EH)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {OrdP (Var j), HPair (Var j) (Var sl) IN s2, Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var j AND Var n IN Var j AND HPair (Var m) (Var sm) IN s2 AND HPair (Var n) (Var sn) IN s2 AND Var sl EQ Q_Eats (Var sm) (Var sn))))), LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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 (9 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sn \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sm \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom n \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom m \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom m \<sharp> C
[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 (11 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> OrdP (Var m)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom km \<sharp> (SUCC k1, Var m)
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sm \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom n \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom m \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
A total of 11 subgoals...
[PROOF STEP]
apply (blast intro: Ord_IN_Ord, simp)
[PROOF STATE]
proof (prove)
goal (9 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sn \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sm \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom n \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom m \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom m \<sharp> C
[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 (11 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> OrdP (Var n)
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom kn \<sharp> (SUCC k1, Var n)
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex kn (HaddP (SUCC k1) (Var n) (Var kn)), SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sm \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom n \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom m \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
A total of 11 subgoals...
[PROOF STEP]
apply (metis AssumeH(6) Ord_IN_Ord0 rotate8, simp)
[PROOF STATE]
proof (prove)
goal (9 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {SyntaxN.Ex kn (HaddP (SUCC k1) (Var n) (Var kn)), SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sn \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sm \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom n \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom m \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom m \<sharp> C
[PROOF STEP]
apply (rule AssumeH Ex_EH Conj_EH | simp)+
[PROOF STATE]
proof (prove)
goal (13 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom km \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom kn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom kn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sn \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
A total of 13 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var km"], simp)
[PROOF STATE]
proof (prove)
goal (13 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var km IN Var l AND Var n IN Var l AND HPair (Var km) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom km \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom kn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom kn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sn \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
A total of 13 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var kn"], simp)
[PROOF STATE]
proof (prove)
goal (13 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex sm (SyntaxN.Ex sn (Var km IN Var l AND Var kn IN Var l AND HPair (Var km) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var kn) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom km \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom kn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom kn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sn \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
A total of 13 subgoals...
[PROOF STEP]
apply (rule Ex_I [where x="Var sm"], simp)
[PROOF STATE]
proof (prove)
goal (13 subgoals):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> SyntaxN.Ex sn (Var km IN Var l AND Var kn IN Var l AND HPair (Var km) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var kn) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom km \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom km \<sharp> C
 4. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom kn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 5. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{SyntaxN.Ex km (HaddP (SUCC k1) (Var m) (Var km)), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom kn \<sharp> C
 6. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sn \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 7. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sn \<sharp> C
 8. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom sm \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
 9. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> \<forall>C\<in>{OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1}. atom sm \<sharp> C
 10. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> atom n \<sharp> SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)))))
A total of 13 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> Var km IN Var l AND Var kn IN Var l AND HPair (Var km) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var kn) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) 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); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> Var km IN Var l
 2. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> Var kn IN Var l
 3. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> HPair (Var km) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var kn) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)
[PROOF STEP]
apply (blast intro!: HaddP_Mem_cancel_left [THEN Iff_MP2_same] OrdP_SUCC_I intro: LstSeqP_OrdP Hyp)+
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom s \<sharp> (k, s1, s2, k1, k2, t1, t2); atom k \<sharp> (s1, s2, k1, k2, t1, t2); atom km \<sharp> (kn, j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom kn \<sharp> (j, k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom j \<sharp> (k', l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom k' \<sharp> (l, s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom l \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sl, m, n, sm, sn); atom sl \<sharp> (s1, s2, s, k1, k2, k, t1, t2, m, n, sm, sn); atom m \<sharp> (s1, s2, s, k1, k2, k, t1, t2, n, sm, sn); atom n \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sm, sn); atom sm \<sharp> (s1, s2, s, k1, k2, k, t1, t2, sn); atom sn \<sharp> (s1, s2, s, k1, k2, k, t1, t2)\<rbrakk> \<Longrightarrow> {HaddP (SUCC k1) (Var m) (Var km), HaddP (SUCC k1) (Var n) (Var kn), HPair (Var n) (Var sn) IN s2, Var sl EQ Q_Eats (Var sm) (Var sn), HPair (Var m) (Var sm) IN s2, Var n IN Var j, Var m IN Var j, OrdP (Var j), HPair (Var j) (Var sl) IN s2, LstSeqP s2 k2 t2, 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), SeqTermP s1 k1 t1} \<turnstile> HPair (Var km) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var kn) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn)
[PROOF STEP]
apply (blast del: Disj_EH  intro: OrdP_Trans Hyp
                  intro!: Mem_Eats_I1 SeqAppendP_Mem2 [THEN cut4] HaddP_imp_OrdP [THEN cut1])
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
{HaddP k1 k2 (Var k'), OrdP k1, OrdP k2, SeqAppendP s1 (SUCC k1) s2 (SUCC k2) (Var s), SeqTermP s1 k1 t1, SeqTermP s2 k2 t2} \<turnstile> All2 l (SUCC (SUCC (Var k'))) (SyntaxN.Ex sl (HPair (Var l) (Var sl) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND (Var sl EQ Zero OR VarP (Var sl) OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sn (Var m IN Var l AND Var n IN Var l AND HPair (Var m) (Var sm) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND HPair (Var n) (Var sn) IN Eats (Var s) (HPair (SUCC (SUCC (Var k'))) (Q_Eats t1 t2)) AND Var sl EQ Q_Eats (Var sm) (Var sn))))))))

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

goal:
No subgoals!
[PROOF STEP]
qed