[STATEMENT]
lemma (in quote_perm) SeqQuoteP_Mem_imp_All2:
  assumes IH: "insert (QuoteP (Var i) (Var i')) (quote_all p Vs)
               \<turnstile> \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)"
      and sp: "supp \<alpha> - {atom i} \<subseteq> atom ` Vs"
      and j: "j \<in> Vs" and j': "p \<bullet> j = j'"
      and pi: "pi = (atom i \<rightleftharpoons> atom i') + p"
      and Fi: "Fi = make_F (insert i Vs) pi"
      and atoms: "atom i \<sharp> (j,j',s,k,p)" "atom i' \<sharp> (i,p,\<alpha>)"
                 "atom j \<sharp> (j',s,k,\<alpha>)" "atom j' \<sharp> (s,k,\<alpha>)"
                 "atom s \<sharp> (k,\<alpha>)" "atom k \<sharp> (\<alpha>,p)"
  shows "insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs-{j}))
         \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have pj' [simp]: "p \<bullet> j' = j"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. p \<bullet> j' = j
[PROOF STEP]
using pinv j'
[PROOF STATE]
proof (prove)
using this:
- p = p
p \<bullet> j = j'

goal (1 subgoal):
 1. p \<bullet> j' = j
[PROOF STEP]
by (metis permute_minus_cancel(2))
[PROOF STATE]
proof (state)
this:
p \<bullet> j' = j

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have [simp]: "F j = Var j'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. F j = Var j'
[PROOF STEP]
using j j'
[PROOF STATE]
proof (prove)
using this:
j \<in> Vs
p \<bullet> j = j'

goal (1 subgoal):
 1. F j = Var j'
[PROOF STEP]
by (auto simp: F_unfold)
[PROOF STATE]
proof (state)
this:
F j = Var j'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence i': "atom i' \<sharp> Vs"
[PROOF STATE]
proof (prove)
using this:
F j = Var j'

goal (1 subgoal):
 1. atom i' \<sharp> Vs
[PROOF STEP]
using atoms
[PROOF STATE]
proof (prove)
using this:
F j = Var j'
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)

goal (1 subgoal):
 1. atom i' \<sharp> Vs
[PROOF STEP]
by (auto simp: Vs)
[PROOF STATE]
proof (state)
this:
atom i' \<sharp> Vs

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have fresh_ss [simp]: "\<And>i A::fm. atom i \<sharp> p \<Longrightarrow> atom i \<sharp> ssubst (\<lfloor>A\<rfloor>Vs) Vs F"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>i A. atom i \<sharp> p \<Longrightarrow> atom i \<sharp> ssubst \<lfloor>A\<rfloor>Vs Vs F
[PROOF STEP]
by (simp add: vquot_fm_def fresh_ssubst_dbfm)
[PROOF STATE]
proof (state)
this:
atom ?i \<sharp> p \<Longrightarrow> atom ?i \<sharp> ssubst \<lfloor>?A\<rfloor>Vs Vs F

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
obtain l::name and m::name and n::name and sm::name and sn::name and sm'::name and sn'::name
    where atoms': "atom l \<sharp> (p,\<alpha>,i,j,j',s,k,m,n,sm,sm',sn,sn')"
       "atom m \<sharp> (p,\<alpha>,i,j,j',s,k,n,sm,sm',sn,sn')" "atom n \<sharp> (p,\<alpha>,i,j,j',s,k,sm,sm',sn,sn')"
       "atom sm \<sharp> (p,\<alpha>,i,j,j',s,k,sm',sn,sn')" "atom sm' \<sharp> (p,\<alpha>,i,j,j',s,k,sn,sn')"
       "atom sn \<sharp> (p,\<alpha>,i,j,j',s,k,sn')" "atom sn' \<sharp> (p,\<alpha>,i,j,j',s,k)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>l m n sm sm' sn sn'. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (metis obtain_fresh)
[PROOF STATE]
proof (state)
this:
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
define V' p'
    where "V' = {sm,sn} \<union> Vs"
      and "p' = (atom sm \<rightleftharpoons> atom sm') + (atom sn \<rightleftharpoons> atom sn') + p"
[PROOF STATE]
proof (state)
this:
V' = {sm, sn} \<union> Vs
p' = (atom sm \<rightleftharpoons> atom sm') + (atom sn \<rightleftharpoons> atom sn') + p

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
define F' where "F' \<equiv> make_F V' p'"
[PROOF STATE]
proof (state)
this:
F' \<equiv> make_F V' p'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
interpret qp': quote_perm p' V' F'
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. quote_perm p' V' &&& F' \<equiv> make_F V' p'
[PROOF STEP]
proof unfold_locales
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. atom ` (p' \<bullet> V') \<sharp>* V'
 2. - p' = p'
 3. finite V'
 4. F' \<equiv> make_F V' p'
[PROOF STEP]
show "finite V'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. finite V'
[PROOF STEP]
by (simp add: V'_def)
[PROOF STATE]
proof (state)
this:
finite V'

goal (3 subgoals):
 1. atom ` (p' \<bullet> V') \<sharp>* V'
 2. - p' = p'
 3. F' \<equiv> make_F V' p'
[PROOF STEP]
show "atom ` (p' \<bullet> V') \<sharp>* V'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. atom ` (p' \<bullet> V') \<sharp>* V'
[PROOF STEP]
using atoms atoms' p
[PROOF STATE]
proof (prove)
using this:
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)
atom ` (p \<bullet> Vs) \<sharp>* Vs

goal (1 subgoal):
 1. atom ` (p' \<bullet> V') \<sharp>* V'
[PROOF STEP]
by (auto simp: p'_def V'_def swap_fresh_fresh fresh_at_base_permI
                fresh_star_finite_insert fresh_finite_insert atom_fresh_star_atom_set_conv)
[PROOF STATE]
proof (state)
this:
atom ` (p' \<bullet> V') \<sharp>* V'

goal (2 subgoals):
 1. - p' = p'
 2. F' \<equiv> make_F V' p'
[PROOF STEP]
show "F' \<equiv> make_F V' p'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. F' \<equiv> make_F V' p'
[PROOF STEP]
by (rule F'_def)
[PROOF STATE]
proof (state)
this:
F' \<equiv> make_F V' p'

goal (1 subgoal):
 1. - p' = p'
[PROOF STEP]
show "- p' = p'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. - p' = p'
[PROOF STEP]
using atoms atoms' pinv
[PROOF STATE]
proof (prove)
using this:
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)
- p = p

goal (1 subgoal):
 1. - p' = p'
[PROOF STEP]
by (simp add: p'_def add.assoc perm_self_inverseI fresh_swap fresh_plus_perm)
[PROOF STATE]
proof (state)
this:
- p' = p'

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have All2_Zero: "{} \<turnstile> All2 i Zero \<alpha>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {} \<turnstile> All2 i Zero \<alpha>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
{} \<turnstile> All2 i Zero \<alpha>

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have Q_All2_Zero:
    "quote_all p Vs \<turnstile> PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) Zero)
                                (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. quote_all p Vs \<turnstile> PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) Zero) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F)))
[PROOF STEP]
using quote_all_PfP_ssubst [OF All2_Zero] assms
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?V \<subseteq> Vs; supp (All2 i Zero \<alpha>) \<subseteq> atom ` Vs\<rbrakk> \<Longrightarrow> quote_all p ?V \<turnstile> PfP (ssubst \<lfloor>All2 i Zero \<alpha>\<rfloor>?V ?V F)
insert (QuoteP (Var i) (Var i')) (quote_all p Vs) \<turnstile> \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)
supp \<alpha> - {atom i} \<subseteq> atom ` Vs
j \<in> Vs
p \<bullet> j = j'
pi = (atom i \<rightleftharpoons> atom i') + p
Fi = make_F (insert i Vs) pi
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) Zero) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F)))
[PROOF STEP]
by (force simp add: vquot_fm_def supp_conv_fresh)
[PROOF STATE]
proof (state)
this:
quote_all p Vs \<turnstile> PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) Zero) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F)))

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have All2_Eats: "{} \<turnstile> All2 i (Var sm) \<alpha> IMP \<alpha>(i::=Var sn) IMP All2 i (Eats (Var sm) (Var sn)) \<alpha>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {} \<turnstile> All2 i (Var sm) \<alpha> IMP \<alpha>(i::=Var sn) IMP All2 i (Eats (Var sm) (Var sn)) \<alpha>
[PROOF STEP]
using atoms'
[PROOF STATE]
proof (prove)
using this:
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)

goal (1 subgoal):
 1. {} \<turnstile> All2 i (Var sm) \<alpha> IMP \<alpha>(i::=Var sn) IMP All2 i (Eats (Var sm) (Var sn)) \<alpha>
[PROOF STEP]
apply auto
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)\<rbrakk> \<Longrightarrow> {Var i IN Var sm, Neg \<alpha>, \<alpha>(i::=Var sn)} \<turnstile> SyntaxN.Ex i (Neg (Var i IN Var sm IMP \<alpha>))
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)\<rbrakk> \<Longrightarrow> {Var i EQ Var sn, Neg \<alpha>, \<alpha>(i::=Var sn)} \<turnstile> SyntaxN.Ex i (Neg (Var i IN Var sm IMP \<alpha>))
[PROOF STEP]
apply (rule Ex_I [where x = "Var i"], auto)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)\<rbrakk> \<Longrightarrow> {Var i EQ Var sn, Neg \<alpha>, \<alpha>(i::=Var sn)} \<turnstile> SyntaxN.Ex i (Neg (Var i IN Var sm IMP \<alpha>))
[PROOF STEP]
apply (rule rotate2)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)\<rbrakk> \<Longrightarrow> {Neg \<alpha>, Var i EQ Var sn, \<alpha>(i::=Var sn)} \<turnstile> SyntaxN.Ex i (Neg (Var i IN Var sm IMP \<alpha>))
[PROOF STEP]
apply (blast intro: ContraProve Var_Eq_imp_subst_Iff [THEN Iff_MP_same])
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
{} \<turnstile> All2 i (Var sm) \<alpha> IMP \<alpha>(i::=Var sn) IMP All2 i (Eats (Var sm) (Var sn)) \<alpha>

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have [simp]: "F' sm = Var sm'" "F' sn = Var sn'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. F' sm = Var sm' &&& F' sn = Var sn'
[PROOF STEP]
using atoms'
[PROOF STATE]
proof (prove)
using this:
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)

goal (1 subgoal):
 1. F' sm = Var sm' &&& F' sn = Var sn'
[PROOF STEP]
by (auto simp: V'_def p'_def qp'.F_unfold swap_fresh_fresh fresh_at_base_permI)
[PROOF STATE]
proof (state)
this:
F' sm = Var sm'
F' sn = Var sn'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have smn' [simp]: "sm \<in> V'" "sn \<in> V'" "sm \<notin> Vs" "sn \<notin> Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (sm \<in> V' &&& sn \<in> V') &&& sm \<notin> Vs &&& sn \<notin> Vs
[PROOF STEP]
using atoms'
[PROOF STATE]
proof (prove)
using this:
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)

goal (1 subgoal):
 1. (sm \<in> V' &&& sn \<in> V') &&& sm \<notin> Vs &&& sn \<notin> Vs
[PROOF STEP]
by (auto simp: V'_def fresh_finite_set_at_base [symmetric])
[PROOF STATE]
proof (state)
this:
sm \<in> V'
sn \<in> V'
sm \<notin> Vs
sn \<notin> Vs

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence Q_All2_Eats: "quote_all p' V'
                      \<turnstile> PfP (ssubst \<lfloor>All2 i (Var sm) \<alpha>\<rfloor>V' V' F') IMP
                        PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') IMP
                        PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')"
[PROOF STATE]
proof (prove)
using this:
sm \<in> V'
sn \<in> V'
sm \<notin> Vs
sn \<notin> Vs

goal (1 subgoal):
 1. quote_all p' V' \<turnstile> PfP (ssubst \<lfloor>All2 i (Var sm) \<alpha>\<rfloor>V' V' F') IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') IMP PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
[PROOF STEP]
using sp  qp'.quote_all_MonPon2_PfP_ssubst [OF All2_Eats subset_refl]
[PROOF STATE]
proof (prove)
using this:
sm \<in> V'
sn \<in> V'
sm \<notin> Vs
sn \<notin> Vs
supp \<alpha> - {atom i} \<subseteq> atom ` Vs
\<lbrakk>supp (All2 i (Var sm) \<alpha>) \<subseteq> atom ` V'; supp (\<alpha>(i::=Var sn)) \<subseteq> atom ` V'; supp (All2 i (Eats (Var sm) (Var sn)) \<alpha>) \<subseteq> atom ` V'\<rbrakk> \<Longrightarrow> quote_all p' V' \<turnstile> PfP (ssubst \<lfloor>All2 i (Var sm) \<alpha>\<rfloor>V' V' F') IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') IMP PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')

goal (1 subgoal):
 1. quote_all p' V' \<turnstile> PfP (ssubst \<lfloor>All2 i (Var sm) \<alpha>\<rfloor>V' V' F') IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') IMP PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
[PROOF STEP]
by (simp add: supp_conv_fresh subset_eq V'_def)
        (metis Diff_iff empty_iff fresh_ineq_at_base insertE mem_Collect_eq)
[PROOF STATE]
proof (state)
this:
quote_all p' V' \<turnstile> PfP (ssubst \<lfloor>All2 i (Var sm) \<alpha>\<rfloor>V' V' F') IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') IMP PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
interpret qpi: quote_perm pi "insert i Vs" Fi
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. quote_perm pi (insert i Vs) &&& Fi \<equiv> make_F (insert i Vs) pi
[PROOF STEP]
unfolding pi
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. quote_perm ((atom i \<rightleftharpoons> atom i') + p) (insert i Vs) &&& Fi \<equiv> make_F (insert i Vs) ((atom i \<rightleftharpoons> atom i') + p)
[PROOF STEP]
apply (rule qp_insert)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. atom i \<sharp> p
 2. atom i' \<sharp> (i, p)
 3. Fi \<equiv> make_F (insert i Vs) ((atom i \<rightleftharpoons> atom i') + p)
[PROOF STEP]
using atoms
[PROOF STATE]
proof (prove)
using this:
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)

goal (3 subgoals):
 1. atom i \<sharp> p
 2. atom i' \<sharp> (i, p)
 3. Fi \<equiv> make_F (insert i Vs) ((atom i \<rightleftharpoons> atom i') + p)
[PROOF STEP]
apply (auto simp: Fi pi)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have F'_eq_F: "\<And>name. name \<in> Vs \<Longrightarrow> F' name = F name"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>name. name \<in> Vs \<Longrightarrow> F' name = F name
[PROOF STEP]
using atoms'
[PROOF STATE]
proof (prove)
using this:
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)

goal (1 subgoal):
 1. \<And>name. name \<in> Vs \<Longrightarrow> F' name = F name
[PROOF STEP]
by (auto simp: F_unfold qp'.F_unfold p'_def swap_fresh_fresh V'_def fresh_pj)
[PROOF STATE]
proof (state)
this:
?name1 \<in> Vs \<Longrightarrow> F' ?name1 = F ?name1

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
?name1 \<in> Vs \<Longrightarrow> F' ?name1 = F ?name1

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
fix t::dbtm
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
assume "supp t \<subseteq> atom ` V'" "supp t \<subseteq> atom ` Vs"
[PROOF STATE]
proof (state)
this:
supp t \<subseteq> atom ` V'
supp t \<subseteq> atom ` Vs

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence "ssubst (vquot_dbtm V' t) V' F' = ssubst (vquot_dbtm Vs t) Vs F"
[PROOF STATE]
proof (prove)
using this:
supp t \<subseteq> atom ` V'
supp t \<subseteq> atom ` Vs

goal (1 subgoal):
 1. ssubst (vquot_dbtm V' t) V' F' = ssubst (vquot_dbtm Vs t) Vs F
[PROOF STEP]
by (induction t rule: dbtm.induct) (auto simp: F'_eq_F)
[PROOF STATE]
proof (state)
this:
ssubst (vquot_dbtm V' t) V' F' = ssubst (vquot_dbtm Vs t) Vs F

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<lbrakk>supp ?t3 \<subseteq> atom ` V'; supp ?t3 \<subseteq> atom ` Vs\<rbrakk> \<Longrightarrow> ssubst (vquot_dbtm V' ?t3) V' F' = ssubst (vquot_dbtm Vs ?t3) Vs F

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
note ssubst_v_tm = this
[PROOF STATE]
proof (state)
this:
\<lbrakk>supp ?t3 \<subseteq> atom ` V'; supp ?t3 \<subseteq> atom ` Vs\<rbrakk> \<Longrightarrow> ssubst (vquot_dbtm V' ?t3) V' F' = ssubst (vquot_dbtm Vs ?t3) Vs F

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
\<lbrakk>supp ?t3 \<subseteq> atom ` V'; supp ?t3 \<subseteq> atom ` Vs\<rbrakk> \<Longrightarrow> ssubst (vquot_dbtm V' ?t3) V' F' = ssubst (vquot_dbtm Vs ?t3) Vs F

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
fix A::dbfm
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
assume "supp A \<subseteq> atom ` V'" "supp A \<subseteq> atom ` Vs"
[PROOF STATE]
proof (state)
this:
supp A \<subseteq> atom ` V'
supp A \<subseteq> atom ` Vs

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence "ssubst (vquot_dbfm V' A) V' F' = ssubst (vquot_dbfm Vs A) Vs F"
[PROOF STATE]
proof (prove)
using this:
supp A \<subseteq> atom ` V'
supp A \<subseteq> atom ` Vs

goal (1 subgoal):
 1. ssubst (vquot_dbfm V' A) V' F' = ssubst (vquot_dbfm Vs A) Vs F
[PROOF STEP]
by (induction A rule: dbfm.induct) (auto simp: ssubst_v_tm F'_eq_F)
[PROOF STATE]
proof (state)
this:
ssubst (vquot_dbfm V' A) V' F' = ssubst (vquot_dbfm Vs A) Vs F

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<lbrakk>supp ?A3 \<subseteq> atom ` V'; supp ?A3 \<subseteq> atom ` Vs\<rbrakk> \<Longrightarrow> ssubst (vquot_dbfm V' ?A3) V' F' = ssubst (vquot_dbfm Vs ?A3) Vs F

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
note ssubst_v_fm = this
[PROOF STATE]
proof (state)
this:
\<lbrakk>supp ?A3 \<subseteq> atom ` V'; supp ?A3 \<subseteq> atom ` Vs\<rbrakk> \<Longrightarrow> ssubst (vquot_dbfm V' ?A3) V' F' = ssubst (vquot_dbfm Vs ?A3) Vs F

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have ss_noprimes: "ssubst (vquot_dbfm V' (trans_fm [i] \<alpha>)) V' F' =
                     ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ssubst (vquot_dbfm V' (trans_fm [i] \<alpha>)) V' F' = ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F
[PROOF STEP]
apply (rule ssubst_v_fm)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. supp (trans_fm [i] \<alpha>) \<subseteq> atom ` V'
 2. supp (trans_fm [i] \<alpha>) \<subseteq> atom ` Vs
[PROOF STEP]
using sp
[PROOF STATE]
proof (prove)
using this:
supp \<alpha> - {atom i} \<subseteq> atom ` Vs

goal (2 subgoals):
 1. supp (trans_fm [i] \<alpha>) \<subseteq> atom ` V'
 2. supp (trans_fm [i] \<alpha>) \<subseteq> atom ` Vs
[PROOF STEP]
apply (auto simp: V'_def supp_conv_fresh)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
ssubst (vquot_dbfm V' (trans_fm [i] \<alpha>)) V' F' = ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
ssubst (vquot_dbfm V' (trans_fm [i] \<alpha>)) V' F' = ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
fix t::dbtm
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
assume "supp t - {atom i} \<subseteq> atom ` Vs"
[PROOF STATE]
proof (state)
this:
supp t - {atom i} \<subseteq> atom ` Vs

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence "subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) t) (insert i Vs) Fi) =
           ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i t)) V' F'"
[PROOF STATE]
proof (prove)
using this:
supp t - {atom i} \<subseteq> atom ` Vs

goal (1 subgoal):
 1. subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) t) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i t)) V' F'
[PROOF STEP]
apply (induction t rule: dbtm.induct)
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. supp DBZero - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) DBZero) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i DBZero)) V' F'
 2. \<And>x. supp (DBVar x) - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) (DBVar x)) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i (DBVar x))) V' F'
 3. \<And>x. supp (DBInd x) - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) (DBInd x)) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i (DBInd x))) V' F'
 4. \<And>x1 x2a. \<lbrakk>supp x1 - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) x1) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i x1)) V' F'; supp x2a - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) x2a) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i x2a)) V' F'; supp (DBEats x1 x2a) - {atom i} \<subseteq> atom ` Vs\<rbrakk> \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) (DBEats x1 x2a)) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i (DBEats x1 x2a))) V' F'
[PROOF STEP]
using atoms atoms'
[PROOF STATE]
proof (prove)
using this:
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)

goal (4 subgoals):
 1. supp DBZero - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) DBZero) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i DBZero)) V' F'
 2. \<And>x. supp (DBVar x) - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) (DBVar x)) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i (DBVar x))) V' F'
 3. \<And>x. supp (DBInd x) - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) (DBInd x)) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i (DBInd x))) V' F'
 4. \<And>x1 x2a. \<lbrakk>supp x1 - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) x1) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i x1)) V' F'; supp x2a - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) x2a) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i x2a)) V' F'; supp (DBEats x1 x2a) - {atom i} \<subseteq> atom ` Vs\<rbrakk> \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) (DBEats x1 x2a)) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i (DBEats x1 x2a))) V' F'
[PROOF STEP]
apply (auto simp: vquot_tm_def pi V'_def qpi.F_unfold qp'.F_unfold p'_def fresh_pj swap_fresh_fresh fresh_at_base_permI)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) t) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i t)) V' F'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
supp ?t3 - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) ?t3) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i ?t3)) V' F'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
note perm_v_tm = this
[PROOF STATE]
proof (state)
this:
supp ?t3 - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) ?t3) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i ?t3)) V' F'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
supp ?t3 - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbtm (insert i Vs) ?t3) (insert i Vs) Fi) = ssubst (vquot_dbtm V' (subst_dbtm (DBVar sn) i ?t3)) V' F'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
fix A::dbfm
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
assume "supp A - {atom i} \<subseteq> atom ` Vs"
[PROOF STATE]
proof (state)
this:
supp A - {atom i} \<subseteq> atom ` Vs

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence "subst i' (Var sn') (ssubst (vquot_dbfm (insert i Vs) A) (insert i Vs) Fi) =
           ssubst (vquot_dbfm V' (subst_dbfm (DBVar sn) i A)) V' F'"
[PROOF STATE]
proof (prove)
using this:
supp A - {atom i} \<subseteq> atom ` Vs

goal (1 subgoal):
 1. subst i' (Var sn') (ssubst (vquot_dbfm (insert i Vs) A) (insert i Vs) Fi) = ssubst (vquot_dbfm V' (subst_dbfm (DBVar sn) i A)) V' F'
[PROOF STEP]
by (induct A rule: dbfm.induct) (auto simp: Un_Diff perm_v_tm)
[PROOF STATE]
proof (state)
this:
subst i' (Var sn') (ssubst (vquot_dbfm (insert i Vs) A) (insert i Vs) Fi) = ssubst (vquot_dbfm V' (subst_dbfm (DBVar sn) i A)) V' F'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
supp ?A3 - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbfm (insert i Vs) ?A3) (insert i Vs) Fi) = ssubst (vquot_dbfm V' (subst_dbfm (DBVar sn) i ?A3)) V' F'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
note perm_v_fm = this
[PROOF STATE]
proof (state)
this:
supp ?A3 - {atom i} \<subseteq> atom ` Vs \<Longrightarrow> subst i' (Var sn') (ssubst (vquot_dbfm (insert i Vs) ?A3) (insert i Vs) Fi) = ssubst (vquot_dbfm V' (subst_dbfm (DBVar sn) i ?A3)) V' F'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have "quote_all p Vs \<turnstile> QuoteP (Var i) (Var i') IMP
                 (\<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. quote_all p Vs \<turnstile> QuoteP (Var i) (Var i') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)
[PROOF STEP]
using IH
[PROOF STATE]
proof (prove)
using this:
insert (QuoteP (Var i) (Var i')) (quote_all p Vs) \<turnstile> \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> QuoteP (Var i) (Var i') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
quote_all p Vs \<turnstile> QuoteP (Var i) (Var i') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence "quote_all p Vs
         \<turnstile> (QuoteP (Var i) (Var i') IMP
                 (\<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))) (i'::=Var sn')"
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> QuoteP (Var i) (Var i') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> (QuoteP (Var i) (Var i') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))(i'::=Var sn')
[PROOF STEP]
using atoms IH
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> QuoteP (Var i) (Var i') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)
insert (QuoteP (Var i) (Var i')) (quote_all p Vs) \<turnstile> \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> (QuoteP (Var i) (Var i') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))(i'::=Var sn')
[PROOF STEP]
by (force intro!: Subst elim!: fresh_quote_all_mem)
[PROOF STATE]
proof (state)
this:
quote_all p Vs \<turnstile> (QuoteP (Var i) (Var i') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))(i'::=Var sn')

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence "quote_all p Vs
         \<turnstile> QuoteP (Var i) (Var sn') IMP
           (\<alpha> IMP PfP (subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)))"
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> (QuoteP (Var i) (Var i') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))(i'::=Var sn')

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))
[PROOF STEP]
using atoms
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> (QuoteP (Var i) (Var i') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))(i'::=Var sn')
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
quote_all p Vs \<turnstile> QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
quote_all p Vs \<turnstile> QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have "subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)
                 = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi) = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'
[PROOF STEP]
using sp
[PROOF STATE]
proof (prove)
using this:
supp \<alpha> - {atom i} \<subseteq> atom ` Vs

goal (1 subgoal):
 1. subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi) = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'
[PROOF STEP]
by (auto simp: vquot_fm_def perm_v_fm supp_conv_fresh subst_fm_trans_commute [symmetric])
[PROOF STATE]
proof (state)
this:
subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi) = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
quote_all p Vs \<turnstile> QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))
subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi) = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'
[PROOF STEP]
have "quote_all p Vs
         \<turnstile> QuoteP (Var i) (Var sn') IMP (\<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))"
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi))
subst i' (Var sn') (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi) = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
quote_all p Vs \<turnstile> QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence "quote_all p Vs
         \<turnstile> (QuoteP (Var i) (Var sn') IMP (\<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))) (i::=Var sn)"
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> (QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))(i::=Var sn)
[PROOF STEP]
using \<open>atom i \<sharp> _\<close>
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')
atom i \<sharp> (j, j', s, k, p)

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> (QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))(i::=Var sn)
[PROOF STEP]
by (force intro!: Subst elim!: fresh_quote_all_mem)
[PROOF STATE]
proof (state)
this:
quote_all p Vs \<turnstile> (QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))(i::=Var sn)

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence "quote_all p Vs
         \<turnstile> (QuoteP (Var sn) (Var sn') IMP
           (\<alpha>(i::=Var sn) IMP PfP (subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))))"
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> (QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))(i::=Var sn)

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))
[PROOF STEP]
using atoms atoms'
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> (QuoteP (Var i) (Var sn') IMP \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))(i::=Var sn)
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have "subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')
                 = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'
[PROOF STEP]
using atoms atoms' i'
[PROOF STATE]
proof (prove)
using this:
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)
atom i' \<sharp> Vs

goal (1 subgoal):
 1. subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'
[PROOF STEP]
by (auto simp: swap_fresh_fresh fresh_at_base_permI p'_def
             intro!: forget_subst_tm [OF qp'.fresh_ssubst'])
[PROOF STATE]
proof (state)
this:
subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))
subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'
[PROOF STEP]
have "quote_all p Vs
         \<turnstile> QuoteP (Var sn) (Var sn') IMP (\<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))"
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))
subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')
[PROOF STEP]
using atoms atoms'
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'))
subst i (Var sn) (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F') = ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F'
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)

goal (1 subgoal):
 1. quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence star0: "insert (QuoteP (Var sn) (Var sn')) (quote_all p Vs)
                \<turnstile> \<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')"
[PROOF STATE]
proof (prove)
using this:
quote_all p Vs \<turnstile> QuoteP (Var sn) (Var sn') IMP \<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')

goal (1 subgoal):
 1. insert (QuoteP (Var sn) (Var sn')) (quote_all p Vs) \<turnstile> \<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')
[PROOF STEP]
by (rule anti_deduction)
[PROOF STATE]
proof (state)
this:
insert (QuoteP (Var sn) (Var sn')) (quote_all p Vs) \<turnstile> \<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have subst_i_star: "quote_all p' V' \<turnstile> \<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. quote_all p' V' \<turnstile> \<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')
[PROOF STEP]
apply (rule thin [OF star0])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. insert (QuoteP (Var sn) (Var sn')) (quote_all p Vs) \<subseteq> quote_all p' V'
[PROOF STEP]
using atoms'
[PROOF STATE]
proof (prove)
using this:
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)

goal (1 subgoal):
 1. insert (QuoteP (Var sn) (Var sn')) (quote_all p Vs) \<subseteq> quote_all p' V'
[PROOF STEP]
apply (force simp: V'_def p'_def fresh_swap fresh_plus_perm fresh_at_base_permI add.assoc
                       quote_all_perm_eq)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
quote_all p' V' \<turnstile> \<alpha>(i::=Var sn) IMP PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have "insert (OrdP (Var k)) (quote_all p (Vs-{j}))
        \<turnstile> All j (All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP
                         All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))"
        (is "_ \<turnstile> ?scheme")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))
[PROOF STEP]
proof (rule OrdIndH [where j=l])
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. atom l \<sharp> (k, SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
 2. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
show "atom l \<sharp> (k, ?scheme)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. atom l \<sharp> (k, SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
using atoms atoms' j j' fresh_pVs
[PROOF STATE]
proof (prove)
using this:
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)
j \<in> Vs
p \<bullet> j = j'
?a \<sharp> p \<Longrightarrow> ?a \<sharp> p \<bullet> Vs

goal (1 subgoal):
 1. atom l \<sharp> (k, SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
by (simp add: fresh_Pair F_unfold)
[PROOF STATE]
proof (state)
this:
atom l \<sharp> (k, SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
have substj: "\<And>t j. atom j \<sharp> \<alpha> \<Longrightarrow> atom (p \<bullet> j) \<sharp> \<alpha> \<Longrightarrow>
                           subst j t (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F) =
                           ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>t j. \<lbrakk>atom j \<sharp> \<alpha>; atom (p \<bullet> j) \<sharp> \<alpha>\<rbrakk> \<Longrightarrow> subst j t (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F) = ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F
[PROOF STEP]
by (auto simp: fresh_ssubst')
[PROOF STATE]
proof (state)
this:
\<lbrakk>atom ?j1 \<sharp> \<alpha>; atom (p \<bullet> ?j1) \<sharp> \<alpha>\<rbrakk> \<Longrightarrow> subst ?j1 ?t1 (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F) = ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
\<lbrakk>atom ?j1 \<sharp> \<alpha>; atom (p \<bullet> ?j1) \<sharp> \<alpha>\<rbrakk> \<Longrightarrow> subst ?j1 ?t1 (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F) = ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
fix W
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
assume W: "W \<subseteq> Vs"
[PROOF STATE]
proof (state)
this:
W \<subseteq> Vs

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
hence "finite W"
[PROOF STATE]
proof (prove)
using this:
W \<subseteq> Vs

goal (1 subgoal):
 1. finite W
[PROOF STEP]
by (metis Vs infinite_super)
[PROOF STATE]
proof (state)
this:
finite W

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
hence "quote_all p' W = quote_all p W"
[PROOF STATE]
proof (prove)
using this:
finite W

goal (1 subgoal):
 1. quote_all p' W = quote_all p W
[PROOF STEP]
using W
[PROOF STATE]
proof (prove)
using this:
finite W
W \<subseteq> Vs

goal (1 subgoal):
 1. quote_all p' W = quote_all p W
[PROOF STEP]
proof (induction)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. {} \<subseteq> Vs \<Longrightarrow> quote_all p' {} = quote_all p {}
 2. \<And>x F. \<lbrakk>finite F; x \<notin> F; F \<subseteq> Vs \<Longrightarrow> quote_all p' F = quote_all p F; insert x F \<subseteq> Vs\<rbrakk> \<Longrightarrow> quote_all p' (insert x F) = quote_all p (insert x F)
[PROOF STEP]
case empty
[PROOF STATE]
proof (state)
this:
{} \<subseteq> Vs

goal (2 subgoals):
 1. {} \<subseteq> Vs \<Longrightarrow> quote_all p' {} = quote_all p {}
 2. \<And>x F. \<lbrakk>finite F; x \<notin> F; F \<subseteq> Vs \<Longrightarrow> quote_all p' F = quote_all p F; insert x F \<subseteq> Vs\<rbrakk> \<Longrightarrow> quote_all p' (insert x F) = quote_all p (insert x F)
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
{} \<subseteq> Vs

goal (1 subgoal):
 1. quote_all p' {} = quote_all p {}
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
quote_all p' {} = quote_all p {}

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; F \<subseteq> Vs \<Longrightarrow> quote_all p' F = quote_all p F; insert x F \<subseteq> Vs\<rbrakk> \<Longrightarrow> quote_all p' (insert x F) = quote_all p (insert x F)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; F \<subseteq> Vs \<Longrightarrow> quote_all p' F = quote_all p F; insert x F \<subseteq> Vs\<rbrakk> \<Longrightarrow> quote_all p' (insert x F) = quote_all p (insert x F)
[PROOF STEP]
case (insert w W)
[PROOF STATE]
proof (state)
this:
finite W
w \<notin> W
W \<subseteq> Vs \<Longrightarrow> quote_all p' W = quote_all p W
insert w W \<subseteq> Vs

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; F \<subseteq> Vs \<Longrightarrow> quote_all p' F = quote_all p F; insert x F \<subseteq> Vs\<rbrakk> \<Longrightarrow> quote_all p' (insert x F) = quote_all p (insert x F)
[PROOF STEP]
hence "w \<in> Vs" "atom sm \<sharp> p \<bullet> Vs" "atom sm' \<sharp> p \<bullet> Vs" "atom sn \<sharp> p \<bullet> Vs" "atom sn' \<sharp> p \<bullet> Vs"
[PROOF STATE]
proof (prove)
using this:
finite W
w \<notin> W
W \<subseteq> Vs \<Longrightarrow> quote_all p' W = quote_all p W
insert w W \<subseteq> Vs

goal (1 subgoal):
 1. (w \<in> Vs &&& atom sm \<sharp> p \<bullet> Vs) &&& atom sm' \<sharp> p \<bullet> Vs &&& atom sn \<sharp> p \<bullet> Vs &&& atom sn' \<sharp> p \<bullet> Vs
[PROOF STEP]
using atoms' Vs
[PROOF STATE]
proof (prove)
using this:
finite W
w \<notin> W
W \<subseteq> Vs \<Longrightarrow> quote_all p' W = quote_all p W
insert w W \<subseteq> Vs
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)
finite Vs

goal (1 subgoal):
 1. (w \<in> Vs &&& atom sm \<sharp> p \<bullet> Vs) &&& atom sm' \<sharp> p \<bullet> Vs &&& atom sn \<sharp> p \<bullet> Vs &&& atom sn' \<sharp> p \<bullet> Vs
[PROOF STEP]
by (auto simp: fresh_pVs)
[PROOF STATE]
proof (state)
this:
w \<in> Vs
atom sm \<sharp> p \<bullet> Vs
atom sm' \<sharp> p \<bullet> Vs
atom sn \<sharp> p \<bullet> Vs
atom sn' \<sharp> p \<bullet> Vs

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; F \<subseteq> Vs \<Longrightarrow> quote_all p' F = quote_all p F; insert x F \<subseteq> Vs\<rbrakk> \<Longrightarrow> quote_all p' (insert x F) = quote_all p (insert x F)
[PROOF STEP]
hence "atom sm \<sharp> p \<bullet> w" "atom sm' \<sharp> p \<bullet> w" "atom sn \<sharp> p \<bullet> w" "atom sn' \<sharp> p \<bullet> w"
[PROOF STATE]
proof (prove)
using this:
w \<in> Vs
atom sm \<sharp> p \<bullet> Vs
atom sm' \<sharp> p \<bullet> Vs
atom sn \<sharp> p \<bullet> Vs
atom sn' \<sharp> p \<bullet> Vs

goal (1 subgoal):
 1. (atom sm \<sharp> p \<bullet> w &&& atom sm' \<sharp> p \<bullet> w) &&& atom sn \<sharp> p \<bullet> w &&& atom sn' \<sharp> p \<bullet> w
[PROOF STEP]
by (metis Vs fresh_at_base(2) fresh_finite_set_at_base fresh_permute_left)+
[PROOF STATE]
proof (state)
this:
atom sm \<sharp> p \<bullet> w
atom sm' \<sharp> p \<bullet> w
atom sn \<sharp> p \<bullet> w
atom sn' \<sharp> p \<bullet> w

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; F \<subseteq> Vs \<Longrightarrow> quote_all p' F = quote_all p F; insert x F \<subseteq> Vs\<rbrakk> \<Longrightarrow> quote_all p' (insert x F) = quote_all p (insert x F)
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
atom sm \<sharp> p \<bullet> w
atom sm' \<sharp> p \<bullet> w
atom sn \<sharp> p \<bullet> w
atom sn' \<sharp> p \<bullet> w

goal (1 subgoal):
 1. quote_all p' (insert w W) = quote_all p (insert w W)
[PROOF STEP]
using insert
[PROOF STATE]
proof (prove)
using this:
atom sm \<sharp> p \<bullet> w
atom sm' \<sharp> p \<bullet> w
atom sn \<sharp> p \<bullet> w
atom sn' \<sharp> p \<bullet> w
finite W
w \<notin> W
W \<subseteq> Vs \<Longrightarrow> quote_all p' W = quote_all p W
insert w W \<subseteq> Vs

goal (1 subgoal):
 1. quote_all p' (insert w W) = quote_all p (insert w W)
[PROOF STEP]
by (simp add: p'_def swap_fresh_fresh)
[PROOF STATE]
proof (state)
this:
quote_all p' (insert w W) = quote_all p (insert w W)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
quote_all p' W = quote_all p W

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
?W3 \<subseteq> Vs \<Longrightarrow> quote_all p' ?W3 = quote_all p ?W3

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
hence "quote_all p' Vs = quote_all p Vs"
[PROOF STATE]
proof (prove)
using this:
?W3 \<subseteq> Vs \<Longrightarrow> quote_all p' ?W3 = quote_all p ?W3

goal (1 subgoal):
 1. quote_all p' Vs = quote_all p Vs
[PROOF STEP]
by (metis subset_refl)
[PROOF STATE]
proof (state)
this:
quote_all p' Vs = quote_all p Vs

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
quote_all p' Vs = quote_all p Vs

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
have "... = insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. quote_all p Vs = insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))
[PROOF STEP]
using j j'
[PROOF STATE]
proof (prove)
using this:
j \<in> Vs
p \<bullet> j = j'

goal (1 subgoal):
 1. quote_all p Vs = insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))
[PROOF STEP]
by (auto simp: quote_all_def)
[PROOF STATE]
proof (state)
this:
quote_all p Vs = insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
quote_all p' Vs = insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))
[PROOF STEP]
have "quote_all p' V' =
                    {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm')} \<union>
                    insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))"
[PROOF STATE]
proof (prove)
using this:
quote_all p' Vs = insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))

goal (1 subgoal):
 1. quote_all p' V' = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm')} \<union> insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))
[PROOF STEP]
using atoms'
[PROOF STATE]
proof (prove)
using this:
quote_all p' Vs = insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)

goal (1 subgoal):
 1. quote_all p' V' = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm')} \<union> insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))
[PROOF STEP]
by (auto simp: p'_def V'_def fresh_at_base_permI Collect_disj_Un)
[PROOF STATE]
proof (state)
this:
quote_all p' V' = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm')} \<union> insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
quote_all p' V' = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm')} \<union> insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j}))

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
have "... = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm'), QuoteP (Var j) (Var j')}
                       \<union> quote_all p (Vs - {j})"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm')} \<union> insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j})) = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm'), QuoteP (Var j) (Var j')} \<union> quote_all p (Vs - {j})
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
{QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm')} \<union> insert (QuoteP (Var j) (Var j')) (quote_all p (Vs - {j})) = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm'), QuoteP (Var j) (Var j')} \<union> quote_all p (Vs - {j})

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
quote_all p' V' = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm'), QuoteP (Var j) (Var j')} \<union> quote_all p (Vs - {j})
[PROOF STEP]
have quote_all'_eq:
            "quote_all p' V' =
              {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm'), QuoteP (Var j) (Var j')}
              \<union> quote_all p (Vs - {j})"
[PROOF STATE]
proof (prove)
using this:
quote_all p' V' = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm'), QuoteP (Var j) (Var j')} \<union> quote_all p (Vs - {j})

goal (1 subgoal):
 1. quote_all p' V' = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm'), QuoteP (Var j) (Var j')} \<union> quote_all p (Vs - {j})
[PROOF STEP]
.
[PROOF STATE]
proof (state)
this:
quote_all p' V' = {QuoteP (Var sn) (Var sn'), QuoteP (Var sm) (Var sm'), QuoteP (Var j) (Var j')} \<union> quote_all p (Vs - {j})

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
have pjV: "p \<bullet> j \<notin> Vs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. p \<bullet> j \<notin> Vs
[PROOF STEP]
by (metis j perm_exits_Vs)
[PROOF STATE]
proof (state)
this:
p \<bullet> j \<notin> Vs

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
hence jpV: "atom j \<sharp> p \<bullet> Vs"
[PROOF STATE]
proof (prove)
using this:
p \<bullet> j \<notin> Vs

goal (1 subgoal):
 1. atom j \<sharp> p \<bullet> Vs
[PROOF STEP]
by (simp add: fresh_permute_left pinv fresh_finite_set_at_base)
[PROOF STATE]
proof (state)
this:
atom j \<sharp> p \<bullet> Vs

goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
show "quote_all p (Vs-{j}) \<turnstile> All k (OrdP (Var k) IMP (All2 l (Var k) (?scheme(k::= Var l)) IMP ?scheme))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))
[PROOF STEP]
apply (rule All_I Imp_I)+
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 2. \<forall>C\<in>insert (All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))). atom j' \<sharp> C
 3. \<forall>C\<in>insert (All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))). atom j \<sharp> C
 4. \<forall>C\<in>quote_all p (Vs - {j}). atom k \<sharp> C
[PROOF STEP]
using atoms atoms' j jpV pjV
[PROOF STATE]
proof (prove)
using this:
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)
atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn')
atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn')
atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn')
atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn')
atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn')
atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn')
atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k)
j \<in> Vs
atom j \<sharp> p \<bullet> Vs
p \<bullet> j \<notin> Vs

goal (4 subgoals):
 1. insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 2. \<forall>C\<in>insert (All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))). atom j' \<sharp> C
 3. \<forall>C\<in>insert (All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))). atom j \<sharp> C
 4. \<forall>C\<in>quote_all p (Vs - {j}). atom k \<sharp> C
[PROOF STEP]
apply (auto simp: fresh_at_base fresh_finite_set_at_base j' elim!: fresh_quote_all_mem)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule cut_same [where A = "QuoteP (Var j) (Var j')"])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))) \<turnstile> QuoteP (Var j) (Var j')
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (blast intro: QuoteP_I)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule cut_same)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))) \<turnstile> ?A118
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert ?A118 (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule cut1 [OF SeqQuoteP_lemma [of m "Var j" "Var j'" "Var s" "Var k" n sm sm' sn sn']], simp_all, blast)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (Var j EQ Zero AND Var j' EQ Zero OR SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var k AND Var n IN Var k AND SeqQuoteP (Var sm) (Var sm') (Var s) (Var m) AND SeqQuoteP (Var sn) (Var sn') (Var s) (Var n) AND Var j EQ Eats (Var sm) (Var sn) AND Var j' EQ Q_Eats (Var sm') (Var sn')))))))) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule Imp_I Disj_EH Conj_EH)+
        \<comment> \<open>case 1, Var j EQ Zero\<close>
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (Var j EQ Zero) (insert (Var j' EQ Zero) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var k AND Var n IN Var k AND SeqQuoteP (Var sm) (Var sm') (Var s) (Var m) AND SeqQuoteP (Var sn) (Var sn') (Var s) (Var n) AND Var j EQ Eats (Var sm) (Var sn) AND Var j' EQ Q_Eats (Var sm') (Var sn')))))))) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (simp add: vquot_fm_def)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (Var j EQ Zero) (insert (Var j' EQ Zero) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Var j')) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F))))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))) \<turnstile> PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Var j')) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F)))
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var k AND Var n IN Var k AND SeqQuoteP (Var sm) (Var sm') (Var s) (Var m) AND SeqQuoteP (Var sn) (Var sn') (Var s) (Var n) AND Var j EQ Eats (Var sm) (Var sn) AND Var j' EQ Q_Eats (Var sm') (Var sn')))))))) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule thin1)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (Var j' EQ Zero) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Var j')) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F))))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Var j')) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F)))
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var k AND Var n IN Var k AND SeqQuoteP (Var sm) (Var sm') (Var s) (Var m) AND SeqQuoteP (Var sn) (Var sn') (Var s) (Var n) AND Var j EQ Eats (Var sm) (Var sn) AND Var j' EQ Q_Eats (Var sm') (Var sn')))))))) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule Var_Eq_subst_Iff [THEN Iff_MP_same], simp)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (Var j' EQ Zero) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Var j')) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F))))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) Zero) (subst j' Zero (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F))))
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var k AND Var n IN Var k AND SeqQuoteP (Var sm) (Var sm') (Var s) (Var m) AND SeqQuoteP (Var sn) (Var sn') (Var s) (Var n) AND Var j EQ Eats (Var sm) (Var sn) AND Var j' EQ Q_Eats (Var sm') (Var sn')))))))) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (simp add: substj)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (Var j' EQ Zero) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Var j')) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F))))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) Zero) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F)))
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var k AND Var n IN Var k AND SeqQuoteP (Var sm) (Var sm') (Var s) (Var m) AND SeqQuoteP (Var sn) (Var sn') (Var s) (Var n) AND Var j EQ Eats (Var sm) (Var sn) AND Var j' EQ Q_Eats (Var sm') (Var sn')))))))) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule Q_All2_Zero [THEN thin])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> quote_all p Vs \<subseteq> insert (Var j' EQ Zero) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Var j')) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F))))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var k AND Var n IN Var k AND SeqQuoteP (Var sm) (Var sm') (Var s) (Var m) AND SeqQuoteP (Var sn) (Var sn') (Var s) (Var n) AND Var j EQ Eats (Var sm) (Var sn) AND Var j' EQ Q_Eats (Var sm') (Var sn')))))))) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
insert (QuoteP (Var i) (Var i')) (quote_all p Vs) \<turnstile> \<alpha> IMP PfP (ssubst \<lfloor>\<alpha>\<rfloor>(insert i Vs) (insert i Vs) Fi)
supp \<alpha> - {atom i} \<subseteq> atom ` Vs
j \<in> Vs
p \<bullet> j = j'
pi = (atom i \<rightleftharpoons> atom i') + p
Fi = make_F (insert i Vs) pi
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)

goal (2 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> quote_all p Vs \<subseteq> insert (Var j' EQ Zero) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Var j')) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F))))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var k AND Var n IN Var k AND SeqQuoteP (Var sm) (Var sm') (Var s) (Var m) AND SeqQuoteP (Var sn) (Var sn') (Var s) (Var n) AND Var j EQ Eats (Var sm) (Var sn) AND Var j' EQ Q_Eats (Var sm') (Var sn')))))))) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (simp add: quote_all_def, blast)
        \<comment> \<open>case 2, @{term "Var j EQ Eats (Var sm) (Var sn)"}\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (SyntaxN.Ex m (SyntaxN.Ex n (SyntaxN.Ex sm (SyntaxN.Ex sm' (SyntaxN.Ex sn (SyntaxN.Ex sn' (Var m IN Var k AND Var n IN Var k AND SeqQuoteP (Var sm) (Var sm') (Var s) (Var m) AND SeqQuoteP (Var sn) (Var sn') (Var s) (Var n) AND Var j EQ Eats (Var sm) (Var sn) AND Var j' EQ Q_Eats (Var sm') (Var sn')))))))) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule Imp_I Conj_EH Ex_EH)+
[PROOF STATE]
proof (prove)
goal (13 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> atom sn' \<sharp> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 3. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> \<forall>C\<in>insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))). atom sn' \<sharp> C
 4. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> atom sn \<sharp> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 5. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> \<forall>C\<in>insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))). atom sn \<sharp> C
 6. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> atom sm' \<sharp> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 7. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> \<forall>C\<in>insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))). atom sm' \<sharp> C
 8. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> atom sm \<sharp> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 9. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> \<forall>C\<in>insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))). atom sm \<sharp> C
 10. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> atom n \<sharp> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
A total of 13 subgoals...
[PROOF STEP]
using atoms
[PROOF STATE]
proof (prove)
using this:
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)

goal (13 subgoals):
 1. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 2. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> atom sn' \<sharp> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 3. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> \<forall>C\<in>insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))). atom sn' \<sharp> C
 4. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> atom sn \<sharp> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 5. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> \<forall>C\<in>insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))). atom sn \<sharp> C
 6. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> atom sm' \<sharp> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 7. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> \<forall>C\<in>insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))). atom sm' \<sharp> C
 8. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> atom sm \<sharp> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 9. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> \<forall>C\<in>insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))). atom sm \<sharp> C
 10. \<lbrakk>atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p); atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs\<rbrakk> \<Longrightarrow> atom n \<sharp> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
A total of 13 subgoals...
[PROOF STEP]
apply (auto elim!: fresh_quote_all_mem)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule cut_same [where A = "QuoteP (Var sm) (Var sm')"])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))) \<turnstile> QuoteP (Var sm) (Var sm')
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (blast intro: QuoteP_I)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule cut_same [where A = "QuoteP (Var sn) (Var sn')"])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))) \<turnstile> QuoteP (Var sn) (Var sn')
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (blast intro: QuoteP_I)
        \<comment> \<open>Eats case. IH for sm\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (All2 l (Var k) (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var l) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule All2_E [where x="Var m", THEN rotate12], simp_all, blast)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var m) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule All_E [where x="Var sm"], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (SyntaxN.All j' (SeqQuoteP (Var sm) (Var j') (Var s) (Var m) IMP All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule All_E [where x="Var sm'"], simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m) IMP All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule Imp_E, blast)
        \<comment> \<open>Setting up the subgoal\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
apply (rule cut_same [where A = "PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')"])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
defer 1
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
[PROOF STEP]
apply (rule rotate6)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
[PROOF STEP]
apply (simp add: vquot_fm_def)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Q_Eats (Var sm') (Var sn'))) (ssubst (vquot_dbfm V' (trans_fm [i] \<alpha>)) V' F')))) (insert (All2 i (Var sm) \<alpha> IMP PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Var sm')) (subst j (Var sm) (subst j' (Var sm') (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F)))))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))))) \<turnstile> PfP (Q_All (Q_Imp (Q_Mem (Q_Ind Zero) (Var j')) (ssubst (vquot_dbfm Vs (trans_fm [i] \<alpha>)) Vs F)))
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
[PROOF STEP]
apply (rule Var_Eq_subst_Iff [THEN Iff_MP_same], force simp add: substj ss_noprimes j')
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
[PROOF STEP]
apply (rule cut_same [where A = "All2 i (Eats (Var sm) (Var sn)) \<alpha>"])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> All2 i (Eats (Var sm) (Var sn)) \<alpha>
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Eats (Var sm) (Var sn)) \<alpha>) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
[PROOF STEP]
apply (rule All2_cong [OF Hyp Iff_refl, THEN Iff_MP_same], blast)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> \<forall>C\<in>insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))). atom i \<sharp> C
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))) \<turnstile> All2 i (Var j) \<alpha>
 3. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Eats (Var sm) (Var sn)) \<alpha>) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
[PROOF STEP]
apply (force elim!: fresh_quote_all_mem
                       simp add: fresh_at_base fresh_finite_set_at_base, blast)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Eats (Var sm) (Var sn)) \<alpha>) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
[PROOF STEP]
apply (rule All2_Eats_E, simp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
[PROOF STEP]
apply (rule MP_same [THEN MP_same])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))))) \<turnstile> ?A1009 IMP ?A1008 IMP PfP (ssubst \<lfloor>All2 i (Eats (Var sm) (Var sn)) \<alpha>\<rfloor>V' V' F')
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))))) \<turnstile> ?A1009
 3. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))))) \<turnstile> ?A1008
[PROOF STEP]
apply (rule Q_All2_Eats [THEN thin])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> quote_all p' V' \<subseteq> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))))))
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var sm) \<alpha>\<rfloor>V' V' F')
 3. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')
[PROOF STEP]
apply (force simp add: quote_all'_eq)
        \<comment> \<open>Proving @{term "PfP (ssubst \<lfloor>All2 i (Var sm) \<alpha>\<rfloor>V' V' F')"}\<close>
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>All2 i (Var sm) \<alpha>\<rfloor>V' V' F')
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')
[PROOF STEP]
apply (force intro!: Imp_E [THEN rotate3] simp add: vquot_fm_def substj j' ss_noprimes)
        \<comment> \<open>Proving @{term "PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')"}\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))))) \<turnstile> PfP (ssubst \<lfloor>\<alpha>(i::=Var sn)\<rfloor>V' V' F')
[PROOF STEP]
apply (rule MP_same [OF subst_i_star [THEN thin]])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> quote_all p' V' \<subseteq> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j}))))))))))))))))
 2. \<lbrakk>atom l \<sharp> (p, \<alpha>, i, j, j', s, k, m, n, sm, sm', sn, sn'); atom m \<sharp> (p, \<alpha>, i, j, j', s, k, n, sm, sm', sn, sn'); atom n \<sharp> (p, \<alpha>, i, j, j', s, k, sm, sm', sn, sn'); atom sm \<sharp> (p, \<alpha>, i, j, j', s, k, sm', sn, sn'); atom sm' \<sharp> (p, \<alpha>, i, j, j', s, k, sn, sn'); atom sn \<sharp> (p, \<alpha>, i, j, j', s, k, sn'); atom sn' \<sharp> (p, \<alpha>, i, j, j', s, k); j \<in> Vs; j \<notin> p \<bullet> Vs; j' \<notin> Vs; atom i \<sharp> (j, j', s, k, p); atom i' \<sharp> (i, p, \<alpha>); atom j \<sharp> (j', s, k, \<alpha>); atom j' \<sharp> (s, k, \<alpha>); atom s \<sharp> (k, \<alpha>); atom k \<sharp> (\<alpha>, p)\<rbrakk> \<Longrightarrow> insert (All2 i (Var sm) \<alpha>) (insert (\<alpha>(i::=Var sn)) (insert (All2 i (Var sm) \<alpha> IMP PfP (subst j (Var sm) (subst j' (Var sm') (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))) (insert (QuoteP (Var sn) (Var sn')) (insert (QuoteP (Var sm) (Var sm')) (insert (Var j EQ Eats (Var sm) (Var sn)) (insert (Var j' EQ Q_Eats (Var sm') (Var sn')) (insert (SeqQuoteP (Var sn) (Var sn') (Var s) (Var n)) (insert (SeqQuoteP (Var sm) (Var sm') (Var s) (Var m)) (insert (Var n IN Var k) (insert (Var m IN Var k) (insert (QuoteP (Var j) (Var j')) (insert (All2 i (Var j) \<alpha>) (insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (insert (OrdP (Var k)) (quote_all p (Vs - {j})))))))))))))))) \<turnstile> \<alpha>(i::=Var sn)
[PROOF STEP]
apply (force simp add: quote_all'_eq, blast)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
quote_all p (Vs - {j}) \<turnstile> SyntaxN.All k (OrdP (Var k) IMP All2 l (Var k) ((SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))(k::=Var l)) IMP SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
hence p1: "insert (OrdP (Var k)) (quote_all p (Vs-{j}))
             \<turnstile> (All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP
                All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))) (j::=Var j)"
[PROOF STATE]
proof (prove)
using this:
insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> SyntaxN.All j (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))

goal (1 subgoal):
 1. insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))(j::=Var j)
[PROOF STEP]
by (metis All_D)
[PROOF STATE]
proof (state)
this:
insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))(j::=Var j)

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
have "insert (OrdP (Var k)) (quote_all p (Vs-{j}))
        \<turnstile> (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP
            All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)) (j'::=Var j')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))(j'::=Var j')
[PROOF STEP]
apply (rule All_D)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))
[PROOF STEP]
using p1 atoms
[PROOF STATE]
proof (prove)
using this:
insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> (SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)))(j::=Var j)
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)

goal (1 subgoal):
 1. insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> SyntaxN.All j' (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))(j'::=Var j')

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))(j'::=Var j')

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
using atoms
[PROOF STATE]
proof (prove)
using this:
insert (OrdP (Var k)) (quote_all p (Vs - {j})) \<turnstile> (SeqQuoteP (Var j) (Var j') (Var s) (Var k) IMP All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F))(j'::=Var j')
atom i \<sharp> (j, j', s, k, p)
atom i' \<sharp> (i, p, \<alpha>)
atom j \<sharp> (j', s, k, \<alpha>)
atom j' \<sharp> (s, k, \<alpha>)
atom s \<sharp> (k, \<alpha>)
atom k \<sharp> (\<alpha>, p)

goal (1 subgoal):
 1. insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)
[PROOF STEP]
by simp (metis SeqQuoteP_imp_OrdP Imp_cut anti_deduction)
[PROOF STATE]
proof (state)
this:
insert (SeqQuoteP (Var j) (Var j') (Var s) (Var k)) (quote_all p (Vs - {j})) \<turnstile> All2 i (Var j) \<alpha> IMP PfP (ssubst \<lfloor>All2 i (Var j) \<alpha>\<rfloor>Vs Vs F)

goal:
No subgoals!
[PROOF STEP]
qed