[STATEMENT]
lemma tr_par_tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p:
  assumes "A' \<in> set (tr\<^sub>p\<^sub>c A D)" "list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)"
  and "fv\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (unlabel A) = {}" (is "?P0 A D")
  and "fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (unlabel A) = {}" (is "?P1 A D")
  and "\<forall>t \<in> pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D.
       \<forall>t' \<in> pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D.
          (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'" (is "?P3 A D")
  shows "list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have sublmm: "list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)" "?P0 A D" "?P1 A D" "?P3 A D"
    when p: "list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel (a#A))" "?P0 (a#A) D" "?P1 (a#A) D" "?P3 (a#A) D"
    for a A D
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A) &&& fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}) &&& fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {} &&& \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)
 2. fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
 3. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
 4. \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
show "list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)
[PROOF STEP]
using p(1)
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel (a # A))

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)
[PROOF STEP]
by (simp add: unlabel_def tfr\<^sub>s\<^sub>s\<^sub>t_def)
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)

goal (3 subgoals):
 1. fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
 2. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
 3. \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
show "?P0 A D"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
[PROOF STEP]
using p(2) fv\<^sub>s\<^sub>s\<^sub>t_cons_subset
[PROOF STATE]
proof (prove)
using this:
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t (a # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (a # A) = {}
fv\<^sub>s\<^sub>s\<^sub>t ?A \<subseteq> fv\<^sub>s\<^sub>s\<^sub>t (?a # ?A)

goal (1 subgoal):
 1. fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
[PROOF STEP]
unfolding unlabel_def
[PROOF STATE]
proof (prove)
using this:
fv\<^sub>s\<^sub>s\<^sub>t (map snd (a # A)) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (map snd (a # A)) = {}
fv\<^sub>s\<^sub>s\<^sub>t ?A \<subseteq> fv\<^sub>s\<^sub>s\<^sub>t (?a # ?A)

goal (1 subgoal):
 1. fv\<^sub>s\<^sub>s\<^sub>t (map snd A) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (map snd A) = {}
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}

goal (2 subgoals):
 1. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
 2. \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
show "?P1 A D"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
[PROOF STEP]
using p(3) bvars\<^sub>s\<^sub>s\<^sub>t_cons_subset
[PROOF STATE]
proof (prove)
using this:
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (a # A) = {}
bvars\<^sub>s\<^sub>s\<^sub>t ?A \<subseteq> bvars\<^sub>s\<^sub>s\<^sub>t (?a # ?A)

goal (1 subgoal):
 1. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
[PROOF STEP]
unfolding unlabel_def
[PROOF STATE]
proof (prove)
using this:
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (map snd D) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (map snd (a # A)) = {}
bvars\<^sub>s\<^sub>s\<^sub>t ?A \<subseteq> bvars\<^sub>s\<^sub>s\<^sub>t (?a # ?A)

goal (1 subgoal):
 1. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (map snd D) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (map snd A) = {}
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}

goal (1 subgoal):
 1. \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
have "setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<subseteq> setops\<^sub>s\<^sub>s\<^sub>t (unlabel (a#A))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<subseteq> setops\<^sub>s\<^sub>s\<^sub>t (unlabel (a # A))
[PROOF STEP]
using setops\<^sub>s\<^sub>s\<^sub>t_cons_subset
[PROOF STATE]
proof (prove)
using this:
setops\<^sub>s\<^sub>s\<^sub>t ?A \<subseteq> setops\<^sub>s\<^sub>s\<^sub>t (?a # ?A)

goal (1 subgoal):
 1. setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<subseteq> setops\<^sub>s\<^sub>s\<^sub>t (unlabel (a # A))
[PROOF STEP]
unfolding unlabel_def
[PROOF STATE]
proof (prove)
using this:
setops\<^sub>s\<^sub>s\<^sub>t ?A \<subseteq> setops\<^sub>s\<^sub>s\<^sub>t (?a # ?A)

goal (1 subgoal):
 1. setops\<^sub>s\<^sub>s\<^sub>t (map snd A) \<subseteq> setops\<^sub>s\<^sub>s\<^sub>t (map snd (a # A))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<subseteq> setops\<^sub>s\<^sub>s\<^sub>t (unlabel (a # A))

goal (1 subgoal):
 1. \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
thus "?P3 A D"
[PROOF STATE]
proof (prove)
using this:
setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<subseteq> setops\<^sub>s\<^sub>s\<^sub>t (unlabel (a # A))

goal (1 subgoal):
 1. \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
using p(4)
[PROOF STATE]
proof (prove)
using this:
setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<subseteq> setops\<^sub>s\<^sub>s\<^sub>t (unlabel (a # A))
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel (a # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel (a # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<lbrakk>list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel (?a7 # ?A7)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel ?D7) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel (?a7 # ?A7)) \<union> pair ` snd ` set ?D7. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel (?a7 # ?A7)) \<union> pair ` snd ` set ?D7. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ?A7)
\<lbrakk>list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel (?a7 # ?A7)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel ?D7) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel (?a7 # ?A7)) \<union> pair ` snd ` set ?D7. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel (?a7 # ?A7)) \<union> pair ` snd ` set ?D7. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ?A7 \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ?A7 = {}
\<lbrakk>list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel (?a7 # ?A7)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel ?D7) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel (?a7 # ?A7)) \<union> pair ` snd ` set ?D7. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel (?a7 # ?A7)) \<union> pair ` snd ` set ?D7. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel ?D7) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ?A7 = {}
\<lbrakk>list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel (?a7 # ?A7)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel ?D7) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t (?a7 # ?A7) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel (?a7 # ?A7)) \<union> pair ` snd ` set ?D7. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel (?a7 # ?A7)) \<union> pair ` snd ` set ?D7. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ?A7) \<union> pair ` snd ` set ?D7. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ?A7) \<union> pair ` snd ` set ?D7. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c A D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
proof (induction A D arbitrary: A' rule: tr\<^sub>p\<^sub>c.induct)
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>D A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c [] D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel []); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel []) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel []) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 7. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 8. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
case 1
[PROOF STATE]
proof (state)
this:
A' \<in> set (tr\<^sub>p\<^sub>c [] D_)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel [])
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D_) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel []) \<union> pair ` snd ` set D_. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel []) \<union> pair ` snd ` set D_. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (8 subgoals):
 1. \<And>D A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c [] D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel []); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel []) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel []) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 7. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 8. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c [] D_)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel [])
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D_) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t [] = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel []) \<union> pair ` snd ` set D_. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel []) \<union> pair ` snd ` set D_. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal (7 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 7. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 7. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
case (2 i t A D)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)
A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>t\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>t\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>t\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>t\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>t\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (7 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 7. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note prems = "2.prems"
[PROOF STATE]
proof (state)
this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>t\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>t\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>t\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>t\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>t\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (7 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 7. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note IH = "2.IH"
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)

goal (7 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 7. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
from prems(1)
[PROOF STATE]
proof (chain)
picking this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>t\<rangle>) # A) D)
[PROOF STEP]
obtain A'' where A'': "A' = (i,send\<langle>t\<rangle>\<^sub>s\<^sub>t)#A''" "A'' \<in> set (tr\<^sub>p\<^sub>c A D)"
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>t\<rangle>) # A) D)

goal (1 subgoal):
 1. (\<And>A''. \<lbrakk>A' = (i, send\<langle>t\<rangle>\<^sub>s\<^sub>t) # A''; A'' \<in> set (tr\<^sub>p\<^sub>c A D)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
A' = (i, send\<langle>t\<rangle>\<^sub>s\<^sub>t) # A''
A'' \<in> set (tr\<^sub>p\<^sub>c A D)

goal (7 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 7. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have "list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
using IH[OF A''(2)] prems(5) sublmm[OF prems(2,3,4,5)]
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
by meson
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (7 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, send\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, send\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, send\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, send\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 7. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
using A''(1)
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
A' = (i, send\<langle>t\<rangle>\<^sub>s\<^sub>t) # A''

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal (6 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
case (3 i t A D)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)
A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>t\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>t\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>t\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>t\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>t\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (6 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note prems = "3.prems"
[PROOF STATE]
proof (state)
this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>t\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>t\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>t\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>t\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>t\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (6 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note IH = "3.IH"
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)

goal (6 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
from prems(1)
[PROOF STATE]
proof (chain)
picking this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>t\<rangle>) # A) D)
[PROOF STEP]
obtain A'' where A'': "A' = (i,receive\<langle>t\<rangle>\<^sub>s\<^sub>t)#A''" "A'' \<in> set (tr\<^sub>p\<^sub>c A D)"
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>t\<rangle>) # A) D)

goal (1 subgoal):
 1. (\<And>A''. \<lbrakk>A' = (i, receive\<langle>t\<rangle>\<^sub>s\<^sub>t) # A''; A'' \<in> set (tr\<^sub>p\<^sub>c A D)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
A' = (i, receive\<langle>t\<rangle>\<^sub>s\<^sub>t) # A''
A'' \<in> set (tr\<^sub>p\<^sub>c A D)

goal (6 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have "list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
using IH[OF A''(2)] prems(5) sublmm[OF prems(2,3,4,5)]
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>t\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
by meson
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (6 subgoals):
 1. \<And>i ts A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, receive\<langle>ts\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, receive\<langle>ts\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, receive\<langle>ts\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, receive\<langle>ts\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 6. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
using A''(1)
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
A' = (i, receive\<langle>t\<rangle>\<^sub>s\<^sub>t) # A''

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal (5 subgoals):
 1. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
case (4 i ac t t' A D)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (5 subgoals):
 1. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note prems = "4.prems"
[PROOF STATE]
proof (state)
this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (5 subgoals):
 1. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note IH = "4.IH"
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)

goal (5 subgoals):
 1. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
from prems(1)
[PROOF STATE]
proof (chain)
picking this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D)
[PROOF STEP]
obtain A'' where A'': "A' = (i,\<langle>ac: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t)#A''" "A'' \<in> set (tr\<^sub>p\<^sub>c A D)"
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D)

goal (1 subgoal):
 1. (\<And>A''. \<lbrakk>A' = (i, \<langle>ac: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t) # A''; A'' \<in> set (tr\<^sub>p\<^sub>c A D)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
A' = (i, \<langle>ac: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t) # A''
A'' \<in> set (tr\<^sub>p\<^sub>c A D)

goal (5 subgoals):
 1. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have "list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
using IH[OF A''(2)] prems(5) sublmm[OF prems(2,3,4,5)]
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
by meson
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (5 subgoals):
 1. \<And>i ac t t' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 5. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
using A''(1) prems(2)
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
A' = (i, \<langle>ac: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t) # A''
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<doteq> t'\<rangle>) # A))

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
case (5 i t s A D)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)
A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note prems = "5.prems"
[PROOF STATE]
proof (state)
this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note IH = "5.IH"
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
from prems(1)
[PROOF STATE]
proof (chain)
picking this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D)
[PROOF STEP]
have A': "A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i,t,s) D))"
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D)

goal (1 subgoal):
 1. A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D))

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 1: "list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)
[PROOF STEP]
using sublmm[OF prems(2,3,4,5)]
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A)

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have "pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i,insert\<langle>t,s\<rangle>)#A)) \<union> pair`snd`set D =
          pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair`snd`set (List.insert (i,t,s) D)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D = pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D)
[PROOF STEP]
by (auto simp add: setops\<^sub>s\<^sub>s\<^sub>t_def)
[PROOF STATE]
proof (state)
this:
pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D = pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D)

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence 3: "?P3 A (List.insert (i,t,s) D)"
[PROOF STATE]
proof (prove)
using this:
pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D = pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D)

goal (1 subgoal):
 1. \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'
[PROOF STEP]
using prems(5)
[PROOF STATE]
proof (prove)
using this:
pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D = pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D)
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (1 subgoal):
 1. \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have "?P1 A (List.insert (i,t,s) D)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
[PROOF STEP]
using prems(3,4) bvars\<^sub>s\<^sub>s\<^sub>t_cons_subset[of "unlabel A" "insert\<langle>t,s\<rangle>"]
[PROOF STATE]
proof (prove)
using this:
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}
bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<subseteq> bvars\<^sub>s\<^sub>s\<^sub>t (insert\<langle>t,s\<rangle> # unlabel A)

goal (1 subgoal):
 1. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
[PROOF STEP]
unfolding unlabel_def
[PROOF STATE]
proof (prove)
using this:
fv\<^sub>s\<^sub>s\<^sub>t (map snd ((i, insert\<langle>t,s\<rangle>) # A)) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (map snd ((i, insert\<langle>t,s\<rangle>) # A)) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (map snd D) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (map snd ((i, insert\<langle>t,s\<rangle>) # A)) = {}
bvars\<^sub>s\<^sub>s\<^sub>t (map snd A) \<subseteq> bvars\<^sub>s\<^sub>s\<^sub>t (insert\<langle>t,s\<rangle> # map snd A)

goal (1 subgoal):
 1. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (map snd (List.insert (i, t, s) D)) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (map snd A) = {}
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
[PROOF STEP]
have "list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')"
[PROOF STATE]
proof (prove)
using this:
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
using IH[OF A' sublmm(1,2)[OF prems(2,3,4,5)] _ 3]
[PROOF STATE]
proof (prove)
using this:
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {} \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal (4 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (List.insert (i, t, s) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (List.insert (i, t, s) D). (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, insert\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, insert\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, insert\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, insert\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 4. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
using A'(1)
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
A' \<in> set (tr\<^sub>p\<^sub>c A (List.insert (i, t, s) D))

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
case (6 i t s A D)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?x7 \<in> set (subseqs (dbproj i D)); ?A'7 \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set ?x7) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set ?x7) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set ?x7) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set ?x7) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)
A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note prems = "6.prems"
[PROOF STATE]
proof (state)
this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note IH = "6.IH"
[PROOF STATE]
proof (state)
this:
\<lbrakk>?x7 \<in> set (subseqs (dbproj i D)); ?A'7 \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set ?x7) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set ?x7) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set ?x7) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set ?x7) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
define constr where constr: "constr \<equiv> (\<lambda>Di.
      (map (\<lambda>d. (i,\<langle>check: (pair (t,s)) \<doteq> (pair (snd d))\<rangle>\<^sub>s\<^sub>t)) Di)@
      (map (\<lambda>d. (i,\<forall>[]\<langle>\<or>\<noteq>: [(pair (t,s), pair (snd d))]\<rangle>\<^sub>s\<^sub>t)) (filter (\<lambda>d. d \<notin> set Di) (dbproj i D))))"
[PROOF STATE]
proof (state)
this:
constr \<equiv> \<lambda>Di. map (\<lambda>d. (i, \<langle>check: pair (t, s) \<doteq> pair (snd d)\<rangle>\<^sub>s\<^sub>t)) Di @ map (\<lambda>d. (i, \<forall>[]\<langle>\<or>\<noteq>: [(pair (t, s), pair (snd d))]\<rangle>\<^sub>s\<^sub>t)) (filter (\<lambda>d. d \<notin> set Di) (dbproj i D))

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
from prems(1)
[PROOF STATE]
proof (chain)
picking this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D)
[PROOF STEP]
obtain Di A'' where A'':
        "A' = constr Di@A''" "A'' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set Di) D))"
        "Di \<in> set (subseqs (dbproj i D))"
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D)

goal (1 subgoal):
 1. (\<And>Di A''. \<lbrakk>A' = constr Di @ A''; A'' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set Di) D)); Di \<in> set (subseqs (dbproj i D))\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
unfolding constr
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D)

goal (1 subgoal):
 1. (\<And>Di A''. \<lbrakk>A' = (map (\<lambda>d. (i, \<langle>check: pair (t, s) \<doteq> pair (snd d)\<rangle>\<^sub>s\<^sub>t)) Di @ map (\<lambda>d. (i, \<forall>[]\<langle>\<or>\<noteq>: [(pair (t, s), pair (snd d))]\<rangle>\<^sub>s\<^sub>t)) (filter (\<lambda>d. d \<notin> set Di) (dbproj i D))) @ A''; A'' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set Di) D)); Di \<in> set (subseqs (dbproj i D))\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
A' = constr Di @ A''
A'' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set Di) D))
Di \<in> set (subseqs (dbproj i D))

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
define Q1 where "Q1 \<equiv> (\<lambda>(F::(('fun,'var) term \<times> ('fun,'var) term) list) X.
        \<forall>x \<in> (fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F) - set X. \<exists>a. \<Gamma> (Var x) = TAtom a)"
[PROOF STATE]
proof (state)
this:
Q1 \<equiv> \<lambda>F X. \<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
define Q2 where "Q2 \<equiv> (\<lambda>(F::(('fun,'var) term \<times> ('fun,'var) term) list) X.
        \<forall>f T. Fun f T \<in> subterms\<^sub>s\<^sub>e\<^sub>t (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F) \<longrightarrow> T = [] \<or> (\<exists>s \<in> set T. s \<notin> Var ` set X))"
[PROOF STATE]
proof (state)
this:
Q2 \<equiv> \<lambda>F X. \<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have "pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair`snd`set [d\<leftarrow>D. d \<notin> set Di]
            \<subseteq> pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i,delete\<langle>t,s\<rangle>)#A)) \<union> pair`snd`set D"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D) \<subseteq> pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D
[PROOF STEP]
using subseqs_set_subset[OF A''(3)]
[PROOF STATE]
proof (prove)
using this:
set Di \<subseteq> set (dbproj i D)

goal (1 subgoal):
 1. pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D) \<subseteq> pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D
[PROOF STEP]
by (force simp add: setops\<^sub>s\<^sub>s\<^sub>t_def)
[PROOF STATE]
proof (state)
this:
pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D) \<subseteq> pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D) \<subseteq> pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have "\<forall>a\<in>M. \<forall>b\<in>M. P a b"
      when "M \<subseteq> N" "\<forall>a\<in>N. \<forall>b\<in>N. P a b"
      for M N::"('fun, 'var) terms" and  P
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>a\<in>M. \<forall>b\<in>M. P a b
[PROOF STEP]
using that
[PROOF STATE]
proof (prove)
using this:
M \<subseteq> N
\<forall>a\<in>N. \<forall>b\<in>N. P a b

goal (1 subgoal):
 1. \<forall>a\<in>M. \<forall>b\<in>M. P a b
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<lbrakk>?M7 \<subseteq> ?N7; \<forall>a\<in>?N7. \<forall>b\<in>?N7. ?P7 a b\<rbrakk> \<Longrightarrow> \<forall>a\<in>?M7. \<forall>b\<in>?M7. ?P7 a b

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D) \<subseteq> pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D
\<lbrakk>?M7 \<subseteq> ?N7; \<forall>a\<in>?N7. \<forall>b\<in>?N7. ?P7 a b\<rbrakk> \<Longrightarrow> \<forall>a\<in>?M7. \<forall>b\<in>?M7. ?P7 a b
[PROOF STEP]
have *: "?P3 A (filter (\<lambda>d. d \<notin> set Di) D)"
[PROOF STATE]
proof (prove)
using this:
pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D) \<subseteq> pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D
\<lbrakk>?M7 \<subseteq> ?N7; \<forall>a\<in>?N7. \<forall>b\<in>?N7. ?P7 a b\<rbrakk> \<Longrightarrow> \<forall>a\<in>?M7. \<forall>b\<in>?M7. ?P7 a b

goal (1 subgoal):
 1. \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
using prems(5)
[PROOF STATE]
proof (prove)
using this:
pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D) \<subseteq> pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D
\<lbrakk>?M7 \<subseteq> ?N7; \<forall>a\<in>?N7. \<forall>b\<in>?N7. ?P7 a b\<rbrakk> \<Longrightarrow> \<forall>a\<in>?M7. \<forall>b\<in>?M7. ?P7 a b
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (1 subgoal):
 1. \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
by presburger
[PROOF STATE]
proof (state)
this:
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set Di) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have **: "?P1 A (filter (\<lambda>d. d \<notin> set Di) D)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set Di) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
[PROOF STEP]
using prems(4) bvars\<^sub>s\<^sub>s\<^sub>t_cons_subset[of "unlabel A" "delete\<langle>t,s\<rangle>"]
[PROOF STATE]
proof (prove)
using this:
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}
bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<subseteq> bvars\<^sub>s\<^sub>s\<^sub>t (delete\<langle>t,s\<rangle> # unlabel A)

goal (1 subgoal):
 1. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set Di) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}
[PROOF STEP]
unfolding unlabel_def
[PROOF STATE]
proof (prove)
using this:
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (map snd D) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (map snd ((i, delete\<langle>t,s\<rangle>) # A)) = {}
bvars\<^sub>s\<^sub>s\<^sub>t (map snd A) \<subseteq> bvars\<^sub>s\<^sub>s\<^sub>t (delete\<langle>t,s\<rangle> # map snd A)

goal (1 subgoal):
 1. fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (map snd (filter (\<lambda>d. d \<notin> set Di) D)) \<inter> bvars\<^sub>s\<^sub>s\<^sub>t (map snd A) = {}
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set Di) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 1: "list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
using IH[OF A''(3,2) sublmm(1,2)[OF prems(2,3,4,5)] ** *]
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 2: "\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or>
             (\<exists>d \<in> set Di. u = pair (t,s) \<and> u' = pair (snd d))"
      when "\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')" for ac u u'
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))
[PROOF STEP]
using that A''(1)
[PROOF STATE]
proof (prove)
using this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')
A' = constr Di @ A''

goal (1 subgoal):
 1. \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))
[PROOF STEP]
unfolding constr unlabel_def
[PROOF STATE]
proof (prove)
using this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A')
A' = (map (\<lambda>d. (i, \<langle>check: pair (t, s) \<doteq> pair (snd d)\<rangle>\<^sub>s\<^sub>t)) Di @ map (\<lambda>d. (i, \<forall>[]\<langle>\<or>\<noteq>: [(pair (t, s), pair (snd d))]\<rangle>\<^sub>s\<^sub>t)) (filter (\<lambda>d. d \<notin> set Di) (dbproj i D))) @ A''

goal (1 subgoal):
 1. \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
\<langle>?ac7: ?u7 \<doteq> ?u'7\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A') \<Longrightarrow> \<langle>?ac7: ?u7 \<doteq> ?u'7\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. ?u7 = pair (t, s) \<and> ?u'7 = pair (snd d))

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 3:
        "\<forall>X\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or>
         (\<exists>d \<in> set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t,s), pair (snd d))] \<and> Q2 u X)"
      when "\<forall>X\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')" for X u
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>X\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t, s), pair (snd d))] \<and> Q2 u X)
[PROOF STEP]
using that A''(1)
[PROOF STATE]
proof (prove)
using this:
\<forall>X\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')
A' = constr Di @ A''

goal (1 subgoal):
 1. \<forall>X\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t, s), pair (snd d))] \<and> Q2 u X)
[PROOF STEP]
unfolding Q2_def constr unlabel_def dbproj_def
[PROOF STATE]
proof (prove)
using this:
\<forall>X\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A')
A' = (map (\<lambda>d. (i, \<langle>check: pair (t, s) \<doteq> pair (snd d)\<rangle>\<^sub>s\<^sub>t)) Di @ map (\<lambda>d. (i, \<forall>[]\<langle>\<or>\<noteq>: [(pair (t, s), pair (snd d))]\<rangle>\<^sub>s\<^sub>t)) (filter (\<lambda>d. d \<notin> set Di) (filter (\<lambda>d. fst d = i) D))) @ A''

goal (1 subgoal):
 1. \<forall>X\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t, s), pair (snd d))] \<and> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s u \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)))
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
\<forall>?X7\<langle>\<or>\<noteq>: ?u7\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A') \<Longrightarrow> \<forall>?X7\<langle>\<or>\<noteq>: ?u7\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). ?u7 = [(pair (t, s), pair (snd d))] \<and> Q2 ?u7 ?X7)

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 4: "\<forall>d\<in>set D. (\<exists>\<delta>. Unifier \<delta> (pair (t,s)) (pair (snd d)))
                       \<longrightarrow> \<Gamma> (pair (t,s)) = \<Gamma> (pair (snd d))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>d\<in>set D. (\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d))) \<longrightarrow> \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))
[PROOF STEP]
using prems(5)
[PROOF STATE]
proof (prove)
using this:
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (1 subgoal):
 1. \<forall>d\<in>set D. (\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d))) \<longrightarrow> \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))
[PROOF STEP]
by (simp add: setops\<^sub>s\<^sub>s\<^sub>t_def)
[PROOF STATE]
proof (state)
this:
\<forall>d\<in>set D. (\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d))) \<longrightarrow> \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
\<forall>d\<in>set D. (\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d))) \<longrightarrow> \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
fix ac u u'
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
assume a: "\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')" "\<exists>\<delta>. Unifier \<delta> u u'"
[PROOF STATE]
proof (state)
this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')
\<exists>\<delta>. Unifier \<delta> u u'

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence "\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d \<in> set Di. u = pair (t,s) \<and> u' = pair (snd d))"
[PROOF STATE]
proof (prove)
using this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')
\<exists>\<delta>. Unifier \<delta> u u'

goal (1 subgoal):
 1. \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))
[PROOF STEP]
using 2
[PROOF STATE]
proof (prove)
using this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')
\<exists>\<delta>. Unifier \<delta> u u'
\<langle>?ac7: ?u7 \<doteq> ?u'7\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A') \<Longrightarrow> \<langle>?ac7: ?u7 \<doteq> ?u'7\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. ?u7 = pair (t, s) \<and> ?u'7 = pair (snd d))

goal (1 subgoal):
 1. \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
assume "\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'')"
[PROOF STATE]
proof (state)
this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'')

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence "tfr\<^sub>s\<^sub>t\<^sub>p (\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t)"
[PROOF STATE]
proof (prove)
using this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'')

goal (1 subgoal):
 1. tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
[PROOF STEP]
using 1 Ball_set_list_all[of "unlabel A''" tfr\<^sub>s\<^sub>t\<^sub>p]
[PROOF STATE]
proof (prove)
using this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'')
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
Ball (set (unlabel A'')) tfr\<^sub>s\<^sub>t\<^sub>p = list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (1 subgoal):
 1. tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
[PROOF STEP]
by fast
[PROOF STATE]
proof (state)
this:
tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
fix d
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
assume "d \<in> set Di" "u = pair (t,s)" "u' = pair (snd d)"
[PROOF STATE]
proof (state)
this:
d \<in> set Di
u = pair (t, s)
u' = pair (snd d)

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence "\<exists>\<delta>. Unifier \<delta> u u' \<Longrightarrow> \<Gamma> u = \<Gamma> u'"
[PROOF STATE]
proof (prove)
using this:
d \<in> set Di
u = pair (t, s)
u' = pair (snd d)

goal (1 subgoal):
 1. \<exists>\<delta>. Unifier \<delta> u u' \<Longrightarrow> \<Gamma> u = \<Gamma> u'
[PROOF STEP]
using 4 dbproj_subseq_subset A''(3)
[PROOF STATE]
proof (prove)
using this:
d \<in> set Di
u = pair (t, s)
u' = pair (snd d)
\<forall>d\<in>set D. (\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d))) \<longrightarrow> \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))
?Di \<in> set (subseqs (dbproj ?i ?D)) \<Longrightarrow> set ?Di \<subseteq> set ?D
Di \<in> set (subseqs (dbproj i D))

goal (1 subgoal):
 1. \<exists>\<delta>. Unifier \<delta> u u' \<Longrightarrow> \<Gamma> u = \<Gamma> u'
[PROOF STEP]
by fast
[PROOF STATE]
proof (state)
this:
\<exists>\<delta>. Unifier \<delta> u u' \<Longrightarrow> \<Gamma> u = \<Gamma> u'

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence "tfr\<^sub>s\<^sub>t\<^sub>p (\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t)"
[PROOF STATE]
proof (prove)
using this:
\<exists>\<delta>. Unifier \<delta> u u' \<Longrightarrow> \<Gamma> u = \<Gamma> u'

goal (1 subgoal):
 1. tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
[PROOF STEP]
using Ball_set_list_all[of "unlabel A''" tfr\<^sub>s\<^sub>t\<^sub>p]
[PROOF STATE]
proof (prove)
using this:
\<exists>\<delta>. Unifier \<delta> u u' \<Longrightarrow> \<Gamma> u = \<Gamma> u'
Ball (set (unlabel A'')) tfr\<^sub>s\<^sub>t\<^sub>p = list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (1 subgoal):
 1. tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence "\<Gamma> u = \<Gamma> u'"
[PROOF STATE]
proof (prove)
using this:
tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t

goal (1 subgoal):
 1. \<Gamma> u = \<Gamma> u'
[PROOF STEP]
using tfr\<^sub>s\<^sub>t\<^sub>p_list_all_alt_def[of "unlabel A''"]
[PROOF STATE]
proof (prove)
using this:
tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'') = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))

goal (1 subgoal):
 1. \<Gamma> u = \<Gamma> u'
[PROOF STEP]
using a(2)
[PROOF STATE]
proof (prove)
using this:
tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'') = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))
\<exists>\<delta>. Unifier \<delta> u u'

goal (1 subgoal):
 1. \<Gamma> u = \<Gamma> u'
[PROOF STEP]
unfolding unlabel_def
[PROOF STATE]
proof (prove)
using this:
tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
list_all tfr\<^sub>s\<^sub>t\<^sub>p (map snd A'') = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A'') \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A'') \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))
\<exists>\<delta>. Unifier \<delta> u u'

goal (1 subgoal):
 1. \<Gamma> u = \<Gamma> u'
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<Gamma> u = \<Gamma> u'

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<lbrakk>?d9 \<in> set Di; u = pair (t, s); u' = pair (snd ?d9)\<rbrakk> \<Longrightarrow> \<Gamma> u = \<Gamma> u'

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
\<lbrakk>?d9 \<in> set Di; u = pair (t, s); u' = pair (snd ?d9)\<rbrakk> \<Longrightarrow> \<Gamma> u = \<Gamma> u'
[PROOF STEP]
have "\<Gamma> u = \<Gamma> u'"
[PROOF STATE]
proof (prove)
using this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
\<lbrakk>?d9 \<in> set Di; u = pair (t, s); u' = pair (snd ?d9)\<rbrakk> \<Longrightarrow> \<Gamma> u = \<Gamma> u'

goal (1 subgoal):
 1. \<Gamma> u = \<Gamma> u'
[PROOF STEP]
using tfr\<^sub>s\<^sub>t\<^sub>p_list_all_alt_def[of "unlabel A''"] a(2)
[PROOF STATE]
proof (prove)
using this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
\<lbrakk>?d9 \<in> set Di; u = pair (t, s); u' = pair (snd ?d9)\<rbrakk> \<Longrightarrow> \<Gamma> u = \<Gamma> u'
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'') = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))
\<exists>\<delta>. Unifier \<delta> u u'

goal (1 subgoal):
 1. \<Gamma> u = \<Gamma> u'
[PROOF STEP]
unfolding unlabel_def
[PROOF STATE]
proof (prove)
using this:
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A'') \<or> (\<exists>d\<in>set Di. u = pair (t, s) \<and> u' = pair (snd d))
\<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A'') \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<langle>ac: u \<doteq> u'\<rangle>\<^sub>s\<^sub>t
\<lbrakk>?d9 \<in> set Di; u = pair (t, s); u' = pair (snd ?d9)\<rbrakk> \<Longrightarrow> \<Gamma> u = \<Gamma> u'
list_all tfr\<^sub>s\<^sub>t\<^sub>p (map snd A'') = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A'') \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A'') \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))
\<exists>\<delta>. Unifier \<delta> u u'

goal (1 subgoal):
 1. \<Gamma> u = \<Gamma> u'
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<Gamma> u = \<Gamma> u'

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<lbrakk>\<langle>?ac9: ?u9 \<doteq> ?u'9\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'); \<exists>\<delta>. Unifier \<delta> ?u9 ?u'9\<rbrakk> \<Longrightarrow> \<Gamma> ?u9 = \<Gamma> ?u'9

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<lbrakk>\<langle>?ac9: ?u9 \<doteq> ?u'9\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'); \<exists>\<delta>. Unifier \<delta> ?u9 ?u'9\<rbrakk> \<Longrightarrow> \<Gamma> ?u9 = \<Gamma> ?u'9

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
\<lbrakk>\<langle>?ac9: ?u9 \<doteq> ?u'9\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'); \<exists>\<delta>. Unifier \<delta> ?u9 ?u'9\<rbrakk> \<Longrightarrow> \<Gamma> ?u9 = \<Gamma> ?u'9

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
fix u U
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
assume "\<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')"
[PROOF STATE]
proof (state)
this:
\<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence "\<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or>
             (\<exists>d \<in> set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t,s), pair (snd d))] \<and> Q2 u U)"
[PROOF STATE]
proof (prove)
using this:
\<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')

goal (1 subgoal):
 1. \<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t, s), pair (snd d))] \<and> Q2 u U)
[PROOF STEP]
using 3
[PROOF STATE]
proof (prove)
using this:
\<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A')
\<forall>?X7\<langle>\<or>\<noteq>: ?u7\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A') \<Longrightarrow> \<forall>?X7\<langle>\<or>\<noteq>: ?u7\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). ?u7 = [(pair (t, s), pair (snd d))] \<and> Q2 ?u7 ?X7)

goal (1 subgoal):
 1. \<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t, s), pair (snd d))] \<and> Q2 u U)
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
\<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t, s), pair (snd d))] \<and> Q2 u U)

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence "Q1 u U \<or> Q2 u U"
[PROOF STATE]
proof (prove)
using this:
\<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t, s), pair (snd d))] \<and> Q2 u U)

goal (1 subgoal):
 1. Q1 u U \<or> Q2 u U
[PROOF STEP]
using 1 4 subseqs_set_subset[OF A''(3)] tfr\<^sub>s\<^sub>t\<^sub>p_list_all_alt_def[of "unlabel A''"]
[PROOF STATE]
proof (prove)
using this:
\<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t, s), pair (snd d))] \<and> Q2 u U)
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
\<forall>d\<in>set D. (\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d))) \<longrightarrow> \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))
set Di \<subseteq> set (dbproj i D)
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'') = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))

goal (1 subgoal):
 1. Q1 u U \<or> Q2 u U
[PROOF STEP]
unfolding Q1_def Q2_def
[PROOF STATE]
proof (prove)
using this:
\<forall>U\<langle>\<or>\<noteq>: u\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<or> (\<exists>d\<in>set (filter (\<lambda>d. d \<notin> set Di) D). u = [(pair (t, s), pair (snd d))] \<and> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s u \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set U)))
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
\<forall>d\<in>set D. (\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d))) \<longrightarrow> \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))
set Di \<subseteq> set (dbproj i D)
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'') = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'') \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))

goal (1 subgoal):
 1. (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s u - set U. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s u \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set U))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Q1 u U \<or> Q2 u U

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<forall>?U9\<langle>\<or>\<noteq>: ?u9\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A') \<Longrightarrow> Q1 ?u9 ?U9 \<or> Q2 ?u9 ?U9

goal (3 subgoals):
 1. \<And>i t s A D A'. \<lbrakk>\<And>x A'. \<lbrakk>x \<in> set (subseqs (dbproj i D)); A' \<in> set (tr\<^sub>p\<^sub>c A (filter (\<lambda>d. d \<notin> set x) D)); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel (filter (\<lambda>d. d \<notin> set x) D)) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set (filter (\<lambda>d. d \<notin> set x) D). (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, delete\<langle>t,s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, delete\<langle>t,s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, delete\<langle>t,s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, delete\<langle>t,s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 3. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>\<langle>?ac9: ?u9 \<doteq> ?u'9\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'); \<exists>\<delta>. Unifier \<delta> ?u9 ?u'9\<rbrakk> \<Longrightarrow> \<Gamma> ?u9 = \<Gamma> ?u'9
\<forall>?U9\<langle>\<or>\<noteq>: ?u9\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A') \<Longrightarrow> Q1 ?u9 ?U9 \<or> Q2 ?u9 ?U9
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>\<langle>?ac9: ?u9 \<doteq> ?u'9\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'); \<exists>\<delta>. Unifier \<delta> ?u9 ?u'9\<rbrakk> \<Longrightarrow> \<Gamma> ?u9 = \<Gamma> ?u'9
\<forall>?U9\<langle>\<or>\<noteq>: ?u9\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A') \<Longrightarrow> Q1 ?u9 ?U9 \<or> Q2 ?u9 ?U9

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
using tfr\<^sub>s\<^sub>t\<^sub>p_list_all_alt_def[of "unlabel A'"]
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>\<langle>?ac9: ?u9 \<doteq> ?u'9\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A'); \<exists>\<delta>. Unifier \<delta> ?u9 ?u'9\<rbrakk> \<Longrightarrow> \<Gamma> ?u9 = \<Gamma> ?u'9
\<forall>?U9\<langle>\<or>\<noteq>: ?u9\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A') \<Longrightarrow> Q1 ?u9 ?U9 \<or> Q2 ?u9 ?U9
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A') = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A') \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel A') \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
unfolding Q1_def Q2_def unlabel_def
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>\<langle>?ac9: ?u9 \<doteq> ?u'9\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A'); \<exists>\<delta>. Unifier \<delta> ?u9 ?u'9\<rbrakk> \<Longrightarrow> \<Gamma> ?u9 = \<Gamma> ?u'9
\<forall>?U9\<langle>\<or>\<noteq>: ?u9\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A') \<Longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s ?u9 - set ?U9. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s ?u9 \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set ?U9))
list_all tfr\<^sub>s\<^sub>t\<^sub>p (map snd A') = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A') \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (map snd A') \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (map snd A')
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal (2 subgoals):
 1. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
case (7 i ac t s A D)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (2 subgoals):
 1. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note prems = "7.prems"
[PROOF STATE]
proof (state)
this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'

goal (2 subgoals):
 1. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note IH = "7.IH"
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)

goal (2 subgoals):
 1. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
from prems(1)
[PROOF STATE]
proof (chain)
picking this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D)
[PROOF STEP]
obtain d A'' where A'':
        "A' = (i,\<langle>ac: (pair (t,s)) \<doteq> (pair (snd d))\<rangle>\<^sub>s\<^sub>t)#A''"
        "A'' \<in> set (tr\<^sub>p\<^sub>c A D)"
        "d \<in> set (dbproj i D)"
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D)

goal (1 subgoal):
 1. (\<And>d A''. \<lbrakk>A' = (i, \<langle>ac: pair (t, s) \<doteq> pair (snd d)\<rangle>\<^sub>s\<^sub>t) # A''; A'' \<in> set (tr\<^sub>p\<^sub>c A D); d \<in> set (dbproj i D)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
A' = (i, \<langle>ac: pair (t, s) \<doteq> pair (snd d)\<rangle>\<^sub>s\<^sub>t) # A''
A'' \<in> set (tr\<^sub>p\<^sub>c A D)
d \<in> set (dbproj i D)

goal (2 subgoals):
 1. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 1: "list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
using IH[OF A''(2) sublmm(1,2,3)[OF prems(2,3,4,5)] sublmm(4)[OF prems(2,3,4,5)]]
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (2 subgoals):
 1. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 2: "\<Gamma> (pair (t,s)) = \<Gamma> (pair (snd d))"
      when "\<exists>\<delta>. Unifier \<delta> (pair (t,s)) (pair (snd d))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))
[PROOF STEP]
using that prems(2,5) A''(3)
[PROOF STATE]
proof (prove)
using this:
\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d))
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A))
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'
d \<in> set (dbproj i D)

goal (1 subgoal):
 1. \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))
[PROOF STEP]
unfolding tfr\<^sub>s\<^sub>s\<^sub>t_def
[PROOF STATE]
proof (prove)
using this:
\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d))
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A))
\<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'
d \<in> set (dbproj i D)

goal (1 subgoal):
 1. \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))
[PROOF STEP]
by (simp add: setops\<^sub>s\<^sub>s\<^sub>t_def dbproj_def)
[PROOF STATE]
proof (state)
this:
\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d)) \<Longrightarrow> \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))

goal (2 subgoals):
 1. \<And>i ac t s A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<langle>ac: t \<in> s\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<langle>ac: t \<in> s\<rangle>) # A) = {}; \<forall>ta\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<langle>ac: t \<in> s\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> ta t') \<longrightarrow> \<Gamma> ta = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
 2. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
using A''(1) 1 2
[PROOF STATE]
proof (prove)
using this:
A' = (i, \<langle>ac: pair (t, s) \<doteq> pair (snd d)\<rangle>\<^sub>s\<^sub>t) # A''
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
\<exists>\<delta>. Unifier \<delta> (pair (t, s)) (pair (snd d)) \<Longrightarrow> \<Gamma> (pair (t, s)) = \<Gamma> (pair (snd d))

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
case (8 i X F F' A D)
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note prems = "8.prems"
[PROOF STATE]
proof (state)
this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
note IH = "8.IH"
[PROOF STATE]
proof (state)
this:
\<lbrakk>?A'7 \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel ?A'7)

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
define constr where
      "constr = map (\<lambda>G. (i,\<forall>X\<langle>\<or>\<noteq>: (F@G)\<rangle>\<^sub>s\<^sub>t)) (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D)))"
[PROOF STATE]
proof (state)
this:
constr = map (\<lambda>G. (i, \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t)) (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D)))

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
define Q1 where "Q1 \<equiv> (\<lambda>(F::(('fun,'var) term \<times> ('fun,'var) term) list) X.
        \<forall>x \<in> (fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F) - set X. \<exists>a. \<Gamma> (Var x) = TAtom a)"
[PROOF STATE]
proof (state)
this:
Q1 \<equiv> \<lambda>F X. \<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
define Q2 where "Q2 \<equiv> (\<lambda>(M::('fun,'var) terms) X.
        \<forall>f T. Fun f T \<in> subterms\<^sub>s\<^sub>e\<^sub>t M \<longrightarrow> T = [] \<or> (\<exists>s \<in> set T. s \<notin> Var ` set X))"
[PROOF STATE]
proof (state)
this:
Q2 \<equiv> \<lambda>M X. \<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t M \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have Q2_subset: "Q2 M' X" when "M' \<subseteq> M" "Q2 M X" for X M M'
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Q2 M' X
[PROOF STEP]
using that
[PROOF STATE]
proof (prove)
using this:
M' \<subseteq> M
Q2 M X

goal (1 subgoal):
 1. Q2 M' X
[PROOF STEP]
unfolding Q2_def
[PROOF STATE]
proof (prove)
using this:
M' \<subseteq> M
\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t M \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)

goal (1 subgoal):
 1. \<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t M' \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<lbrakk>?M'7 \<subseteq> ?M7; Q2 ?M7 ?X7\<rbrakk> \<Longrightarrow> Q2 ?M'7 ?X7

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have Q2_supset: "Q2 (M \<union> M') X" when "Q2 M X" "Q2 M' X" for X M M'
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Q2 (M \<union> M') X
[PROOF STEP]
using that
[PROOF STATE]
proof (prove)
using this:
Q2 M X
Q2 M' X

goal (1 subgoal):
 1. Q2 (M \<union> M') X
[PROOF STEP]
unfolding Q2_def
[PROOF STATE]
proof (prove)
using this:
\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t M \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)
\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t M' \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)

goal (1 subgoal):
 1. \<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t M \<union> M' \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<lbrakk>Q2 ?M7 ?X7; Q2 ?M'7 ?X7\<rbrakk> \<Longrightarrow> Q2 (?M7 \<union> ?M'7) ?X7

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
from prems
[PROOF STATE]
proof (chain)
picking this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
[PROOF STEP]
obtain A'' where A'': "A' = constr@A''" "A'' \<in> set (tr\<^sub>p\<^sub>c A D)"
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'

goal (1 subgoal):
 1. (\<And>A''. \<lbrakk>A' = constr @ A''; A'' \<in> set (tr\<^sub>p\<^sub>c A D)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using constr_def
[PROOF STATE]
proof (prove)
using this:
A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D)
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A))
fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}
\<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'
constr = map (\<lambda>G. (i, \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t)) (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D)))

goal (1 subgoal):
 1. (\<And>A''. \<lbrakk>A' = constr @ A''; A'' \<in> set (tr\<^sub>p\<^sub>c A D)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by moura
[PROOF STATE]
proof (state)
this:
A' = constr @ A''
A'' \<in> set (tr\<^sub>p\<^sub>c A D)

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 0: "constr = [(i,\<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t)]" when "F' = []"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. constr = [(i, \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t)]
[PROOF STEP]
using that
[PROOF STATE]
proof (prove)
using this:
F' = []

goal (1 subgoal):
 1. constr = [(i, \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t)]
[PROOF STEP]
unfolding constr_def
[PROOF STATE]
proof (prove)
using this:
F' = []

goal (1 subgoal):
 1. map (\<lambda>G. (i, \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t)) (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))) = [(i, \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t)]
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
F' = [] \<Longrightarrow> constr = [(i, \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t)]

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 1: "list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
using IH[OF A''(2) sublmm(1,2,3)[OF prems(2,3,4,5)] sublmm(4)[OF prems(2,3,4,5)]]
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 2: "(F' = [] \<and> Q1 F X) \<or> Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. F' = [] \<and> Q1 F X \<or> Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X
[PROOF STEP]
using prems(2)
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A))

goal (1 subgoal):
 1. F' = [] \<and> Q1 F X \<or> Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X
[PROOF STEP]
unfolding Q1_def Q2_def
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A))

goal (1 subgoal):
 1. F' = [] \<and> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F' \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
F' = [] \<and> Q1 F X \<or> Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 3: "F' = [] \<Longrightarrow> Q1 F X \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>F' = []; Q1 F X\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)
[PROOF STEP]
using 0 2 tfr\<^sub>s\<^sub>t\<^sub>p_list_all_alt_def[of "unlabel constr"]
[PROOF STATE]
proof (prove)
using this:
F' = [] \<Longrightarrow> constr = [(i, \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t)]
F' = [] \<and> Q1 F X \<or> Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr) = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel constr) \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel constr) \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))

goal (1 subgoal):
 1. \<lbrakk>F' = []; Q1 F X\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)
[PROOF STEP]
unfolding Q1_def
[PROOF STATE]
proof (prove)
using this:
F' = [] \<Longrightarrow> constr = [(i, \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t)]
F' = [] \<and> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr) = ((\<forall>a t t'. \<langle>a: t \<doteq> t'\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel constr) \<and> (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t') \<and> (\<forall>X F. \<forall>X\<langle>\<or>\<noteq>: F\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel constr) \<longrightarrow> (\<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a) \<or> (\<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X))))

goal (1 subgoal):
 1. \<lbrakk>F' = []; \<forall>x\<in>fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F - set X. \<exists>a. \<Gamma> (Var x) = Var a\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<lbrakk>F' = []; Q1 F X\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
\<lbrakk>F' = []; Q1 F X\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
fix c
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
assume "c \<in> set (unlabel constr)"
[PROOF STATE]
proof (state)
this:
c \<in> set (unlabel constr)

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence "\<exists>G \<in> set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))). c = \<forall>X\<langle>\<or>\<noteq>: (F@G)\<rangle>\<^sub>s\<^sub>t"
[PROOF STATE]
proof (prove)
using this:
c \<in> set (unlabel constr)

goal (1 subgoal):
 1. \<exists>G\<in>set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))). c = \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t
[PROOF STEP]
unfolding constr_def unlabel_def
[PROOF STATE]
proof (prove)
using this:
c \<in> set (map snd (map (\<lambda>G. (i, \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t)) (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D)))))

goal (1 subgoal):
 1. \<exists>G\<in>set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))). c = \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
\<exists>G\<in>set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))). c = \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
?c9 \<in> set (unlabel constr) \<Longrightarrow> \<exists>G\<in>set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))). ?c9 = \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
?c9 \<in> set (unlabel constr) \<Longrightarrow> \<exists>G\<in>set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))). ?c9 = \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
?c9 \<in> set (unlabel constr) \<Longrightarrow> \<exists>G\<in>set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))). ?c9 = \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
fix G
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
assume G: "G \<in> set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D)))"
         and c: "\<forall>X\<langle>\<or>\<noteq>: (F@G)\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel constr)"
         and e: "Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X"
[PROOF STATE]
proof (state)
this:
G \<in> set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D)))
\<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel constr)
Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have d_Q2: "Q2 (pair ` set (map snd D)) X"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Q2 (pair ` set (map snd D)) X
[PROOF STEP]
unfolding Q2_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t pair ` set (map snd D) \<longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)
[PROOF STEP]
proof (intro allI impI)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t pair ` set (map snd D) \<Longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)
[PROOF STEP]
fix f T
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t pair ` set (map snd D) \<Longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)
[PROOF STEP]
assume "Fun f T \<in> subterms\<^sub>s\<^sub>e\<^sub>t (pair ` set (map snd D))"
[PROOF STATE]
proof (state)
this:
Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t pair ` set (map snd D)

goal (1 subgoal):
 1. \<And>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t pair ` set (map snd D) \<Longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t pair ` set (map snd D)
[PROOF STEP]
obtain d where d: "d \<in> set (map snd D)" "Fun f T \<in> subterms (pair d)"
[PROOF STATE]
proof (prove)
using this:
Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t pair ` set (map snd D)

goal (1 subgoal):
 1. (\<And>d. \<lbrakk>d \<in> set (map snd D); Fun f T \<sqsubseteq> pair d\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
d \<in> set (map snd D)
Fun f T \<sqsubseteq> pair d

goal (1 subgoal):
 1. \<And>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t pair ` set (map snd D) \<Longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)
[PROOF STEP]
hence "fv (pair d) \<inter> set X = {}"
[PROOF STATE]
proof (prove)
using this:
d \<in> set (map snd D)
Fun f T \<sqsubseteq> pair d

goal (1 subgoal):
 1. fv (pair d) \<inter> set X = {}
[PROOF STEP]
using prems(4)
[PROOF STATE]
proof (prove)
using this:
d \<in> set (map snd D)
Fun f T \<sqsubseteq> pair d
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}

goal (1 subgoal):
 1. fv (pair d) \<inter> set X = {}
[PROOF STEP]
unfolding pair_def
[PROOF STATE]
proof (prove)
using this:
d \<in> set (map snd D)
Fun f T \<sqsubseteq> (case d of (t, t') \<Rightarrow> Fun Pair [t, t'])
fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}

goal (1 subgoal):
 1. fv (case d of (t, t') \<Rightarrow> Fun Pair [t, t']) \<inter> set X = {}
[PROOF STEP]
by (force simp add: unlabel_def)
[PROOF STATE]
proof (state)
this:
fv (pair d) \<inter> set X = {}

goal (1 subgoal):
 1. \<And>f T. Fun f T \<sqsubseteq>\<^sub>s\<^sub>e\<^sub>t pair ` set (map snd D) \<Longrightarrow> T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)
[PROOF STEP]
thus "T = [] \<or> (\<exists>s \<in> set T. s \<notin> Var ` set X)"
[PROOF STATE]
proof (prove)
using this:
fv (pair d) \<inter> set X = {}

goal (1 subgoal):
 1. T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)
[PROOF STEP]
by (metis fv_disj_Fun_subterm_param_cases d(2))
[PROOF STATE]
proof (state)
this:
T = [] \<or> (\<exists>s\<in>set T. s \<notin> Var ` set X)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Q2 (pair ` set (map snd D)) X

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have "trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F@G) \<subseteq> trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F' \<union> pair ` set (map snd D)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F @ G) \<subseteq> trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F' \<union> pair ` set (map snd D)
[PROOF STEP]
using tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s_trms_subset[OF G]
[PROOF STATE]
proof (prove)
using this:
trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s G \<subseteq> pair ` set F' \<union> pair ` set (map snd (dbproj i D))

goal (1 subgoal):
 1. trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F @ G) \<subseteq> trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F' \<union> pair ` set (map snd D)
[PROOF STEP]
unfolding dbproj_def
[PROOF STATE]
proof (prove)
using this:
trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s G \<subseteq> pair ` set F' \<union> pair ` set (map snd (filter (\<lambda>d. fst d = i) D))

goal (1 subgoal):
 1. trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F @ G) \<subseteq> trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F' \<union> pair ` set (map snd D)
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F @ G) \<subseteq> trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F' \<union> pair ` set (map snd D)

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence "Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F@G)) X"
[PROOF STATE]
proof (prove)
using this:
trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F @ G) \<subseteq> trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F' \<union> pair ` set (map snd D)

goal (1 subgoal):
 1. Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F @ G)) X
[PROOF STEP]
using Q2_subset[OF _ Q2_supset[OF e d_Q2]]
[PROOF STATE]
proof (prove)
using this:
trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F @ G) \<subseteq> trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F' \<union> pair ` set (map snd D)
?M'7 \<subseteq> trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F' \<union> pair ` set (map snd D) \<Longrightarrow> Q2 ?M'7 X

goal (1 subgoal):
 1. Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F @ G)) X
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F @ G)) X

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
hence "tfr\<^sub>s\<^sub>t\<^sub>p (\<forall>X\<langle>\<or>\<noteq>: (F@G)\<rangle>\<^sub>s\<^sub>t)"
[PROOF STATE]
proof (prove)
using this:
Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (F @ G)) X

goal (1 subgoal):
 1. tfr\<^sub>s\<^sub>t\<^sub>p \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t
[PROOF STEP]
by (metis Q2_def tfr\<^sub>s\<^sub>t\<^sub>p.simps(2))
[PROOF STATE]
proof (state)
this:
tfr\<^sub>s\<^sub>t\<^sub>p \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<lbrakk>?G9 \<in> set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))); \<forall>X\<langle>\<or>\<noteq>: (F @ ?G9)\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel constr); Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X\<rbrakk> \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<forall>X\<langle>\<or>\<noteq>: (F @ ?G9)\<rangle>\<^sub>s\<^sub>t

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
?c9 \<in> set (unlabel constr) \<Longrightarrow> \<exists>G\<in>set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))). ?c9 = \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t
\<lbrakk>?G9 \<in> set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))); \<forall>X\<langle>\<or>\<noteq>: (F @ ?G9)\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel constr); Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X\<rbrakk> \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<forall>X\<langle>\<or>\<noteq>: (F @ ?G9)\<rangle>\<^sub>s\<^sub>t
[PROOF STEP]
have 4:
        "Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)"
[PROOF STATE]
proof (prove)
using this:
?c9 \<in> set (unlabel constr) \<Longrightarrow> \<exists>G\<in>set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))). ?c9 = \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t
\<lbrakk>?G9 \<in> set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))); \<forall>X\<langle>\<or>\<noteq>: (F @ ?G9)\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel constr); Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X\<rbrakk> \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<forall>X\<langle>\<or>\<noteq>: (F @ ?G9)\<rangle>\<^sub>s\<^sub>t

goal (1 subgoal):
 1. Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)
[PROOF STEP]
using Ball_set
[PROOF STATE]
proof (prove)
using this:
?c9 \<in> set (unlabel constr) \<Longrightarrow> \<exists>G\<in>set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))). ?c9 = \<forall>X\<langle>\<or>\<noteq>: (F @ G)\<rangle>\<^sub>s\<^sub>t
\<lbrakk>?G9 \<in> set (tr\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F' (map snd (dbproj i D))); \<forall>X\<langle>\<or>\<noteq>: (F @ ?G9)\<rangle>\<^sub>s\<^sub>t \<in> set (unlabel constr); Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X\<rbrakk> \<Longrightarrow> tfr\<^sub>s\<^sub>t\<^sub>p \<forall>X\<langle>\<or>\<noteq>: (F @ ?G9)\<rangle>\<^sub>s\<^sub>t
Ball (set ?xs) ?P = list_all ?P ?xs

goal (1 subgoal):
 1. Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
have 5: "list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)
[PROOF STEP]
using 2 3 4
[PROOF STATE]
proof (prove)
using this:
F' = [] \<and> Q1 F X \<or> Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X
\<lbrakk>F' = []; Q1 F X\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)
Q2 (trms\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s F \<union> pair ` set F') X \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)

goal (1 subgoal):
 1. \<And>i X F F' A D A'. \<lbrakk>\<And>A'. \<lbrakk>A' \<in> set (tr\<^sub>p\<^sub>c A D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel A); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t A \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t A = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel A) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'); A' \<in> set (tr\<^sub>p\<^sub>c ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) D); list_all tfr\<^sub>s\<^sub>s\<^sub>t\<^sub>p (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)); fv\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; fv\<^sub>p\<^sub>a\<^sub>i\<^sub>r\<^sub>s (unlabel D) \<inter> bvars\<^sub>l\<^sub>s\<^sub>s\<^sub>t ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A) = {}; \<forall>t\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. \<forall>t'\<in>pair ` setops\<^sub>s\<^sub>s\<^sub>t (unlabel ((i, \<forall>X\<langle>\<or>\<noteq>: F \<or>\<notin>: F'\<rangle>) # A)) \<union> pair ` snd ` set D. (\<exists>\<delta>. Unifier \<delta> t t') \<longrightarrow> \<Gamma> t = \<Gamma> t'\<rbrakk> \<Longrightarrow> list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
using 1 5 A''(1)
[PROOF STATE]
proof (prove)
using this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A'')
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel constr)
A' = constr @ A''

goal (1 subgoal):
 1. list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')
[PROOF STEP]
by (simp add: unlabel_def)
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
list_all tfr\<^sub>s\<^sub>t\<^sub>p (unlabel A')

goal:
No subgoals!
[PROOF STEP]
qed