[STATEMENT]
lemma wf_supp1:
  fixes \<Gamma>::\<Gamma> and  \<Gamma>'::\<Gamma> and v::v and e::e and c::c and \<tau>::\<tau> and ts::"(string*\<tau>) list" and \<Delta>::\<Delta> and s::s and b::b and ftq::fun_typ_q and ft::fun_typ and ce::ce and td::type_def and cs::branch_s and css ::branch_list

  shows  wfV_supp: "\<Theta>; \<B>; \<Gamma>  \<turnstile>\<^sub>w\<^sub>f v : b \<Longrightarrow>  supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>" and
         wfC_supp: "\<Theta>; \<B>; \<Gamma> \<turnstile>\<^sub>w\<^sub>f c \<Longrightarrow> supp c \<subseteq> atom_dom \<Gamma> \<union> supp \<B>" and
         wfG_supp: "\<Theta>; \<B> \<turnstile>\<^sub>w\<^sub>f \<Gamma> \<Longrightarrow>  atom_dom \<Gamma> \<subseteq> supp \<Gamma>" and
         wfT_supp: "\<Theta>; \<B>; \<Gamma> \<turnstile>\<^sub>w\<^sub>f \<tau> \<Longrightarrow>  supp \<tau> \<subseteq> atom_dom \<Gamma> \<union> supp \<B> " and
         wfTs_supp: "\<Theta>; \<B>; \<Gamma> \<turnstile>\<^sub>w\<^sub>f ts \<Longrightarrow>  supp ts \<subseteq> atom_dom \<Gamma> \<union> supp \<B>" and
         wfTh_supp: "\<turnstile>\<^sub>w\<^sub>f \<Theta> \<Longrightarrow> supp \<Theta> = {}" and
         wfB_supp: "\<Theta>; \<B> \<turnstile>\<^sub>w\<^sub>f b \<Longrightarrow> supp b \<subseteq> supp \<B>" and
         wfCE_supp: "\<Theta>; \<B>; \<Gamma> \<turnstile>\<^sub>w\<^sub>f ce : b \<Longrightarrow> supp ce \<subseteq>  atom_dom \<Gamma> \<union> supp \<B>" and
         wfTD_supp: "\<Theta>  \<turnstile>\<^sub>w\<^sub>f td \<Longrightarrow> supp td \<subseteq>  {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((( \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b  \<Longrightarrow> supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>) &&& ( \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c  \<Longrightarrow> supp c \<subseteq> atom_dom \<Gamma> \<union> supp \<B>)) &&& ( \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>  \<Longrightarrow> atom_dom \<Gamma> \<subseteq> supp \<Gamma>) &&& ( \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f \<tau>  \<Longrightarrow> supp \<tau> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>)) &&& (( \<Theta> ; \<B>  ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f ts  \<Longrightarrow> supp ts \<subseteq> atom_dom \<Gamma> \<union> supp \<B>) &&& (   \<turnstile>\<^sub>w\<^sub>f \<Theta>  \<Longrightarrow> supp \<Theta> = {})) &&& ( \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b  \<Longrightarrow> supp b \<subseteq> supp \<B>) &&& (  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f ce : b  \<Longrightarrow> supp ce \<subseteq> atom_dom \<Gamma> \<union> supp \<B>) &&& ( \<Theta> \<turnstile>\<^sub>w\<^sub>f td  \<Longrightarrow> supp td \<subseteq> {})
[PROOF STEP]
proof(induct    rule:wfV_wfC_wfG_wfT_wfTs_wfTh_wfB_wfCE_wfTD.inducts)
[PROOF STATE]
proof (state)
goal (37 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> s dclist \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}; AF_typedef s dclist \<in> set \<Theta>\<rbrakk> \<Longrightarrow> supp (B_id s) \<subseteq> supp \<B>
 7. \<And>\<Theta> \<B> b s bv dclist. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {};  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; AF_typedef_poly s bv dclist \<in> set \<Theta>\<rbrakk> \<Longrightarrow> supp (B_app s b) \<subseteq> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> b c x. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>; Some (b, c) = lookup \<Gamma> x\<rbrakk> \<Longrightarrow> supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 37 subgoals...
[PROOF STEP]
case (wfB_consI \<Theta> s dclist \<B>)
[PROOF STATE]
proof (state)
this:
   \<turnstile>\<^sub>w\<^sub>f \<Theta>
supp \<Theta> = {}
AF_typedef s dclist \<in> set \<Theta>

goal (37 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> s dclist \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}; AF_typedef s dclist \<in> set \<Theta>\<rbrakk> \<Longrightarrow> supp (B_id s) \<subseteq> supp \<B>
 7. \<And>\<Theta> \<B> b s bv dclist. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {};  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; AF_typedef_poly s bv dclist \<in> set \<Theta>\<rbrakk> \<Longrightarrow> supp (B_app s b) \<subseteq> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> b c x. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>; Some (b, c) = lookup \<Gamma> x\<rbrakk> \<Longrightarrow> supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 37 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
   \<turnstile>\<^sub>w\<^sub>f \<Theta>
supp \<Theta> = {}
AF_typedef s dclist \<in> set \<Theta>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
   \<turnstile>\<^sub>w\<^sub>f \<Theta>
supp \<Theta> = {}
AF_typedef s dclist \<in> set \<Theta>

goal (1 subgoal):
 1. supp (B_id s) \<subseteq> supp \<B>
[PROOF STEP]
by(auto simp add: b.supp pure_supp)
[PROOF STATE]
proof (state)
this:
supp (B_id s) \<subseteq> supp \<B>

goal (36 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> b s bv dclist. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {};  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; AF_typedef_poly s bv dclist \<in> set \<Theta>\<rbrakk> \<Longrightarrow> supp (B_app s b) \<subseteq> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> b c x. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>; Some (b, c) = lookup \<Gamma> x\<rbrakk> \<Longrightarrow> supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 36 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (36 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> b s bv dclist. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {};  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; AF_typedef_poly s bv dclist \<in> set \<Theta>\<rbrakk> \<Longrightarrow> supp (B_app s b) \<subseteq> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> b c x. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>; Some (b, c) = lookup \<Gamma> x\<rbrakk> \<Longrightarrow> supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 36 subgoals...
[PROOF STEP]
case (wfB_appI \<Theta> \<B> b s bv dclist)
[PROOF STATE]
proof (state)
this:
   \<turnstile>\<^sub>w\<^sub>f \<Theta>
supp \<Theta> = {}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
AF_typedef_poly s bv dclist \<in> set \<Theta>

goal (36 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> b s bv dclist. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {};  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; AF_typedef_poly s bv dclist \<in> set \<Theta>\<rbrakk> \<Longrightarrow> supp (B_app s b) \<subseteq> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> b c x. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>; Some (b, c) = lookup \<Gamma> x\<rbrakk> \<Longrightarrow> supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 36 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
   \<turnstile>\<^sub>w\<^sub>f \<Theta>
supp \<Theta> = {}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
AF_typedef_poly s bv dclist \<in> set \<Theta>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
   \<turnstile>\<^sub>w\<^sub>f \<Theta>
supp \<Theta> = {}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
AF_typedef_poly s bv dclist \<in> set \<Theta>

goal (1 subgoal):
 1. supp (B_app s b) \<subseteq> supp \<B>
[PROOF STEP]
by(auto simp add: b.supp pure_supp)
[PROOF STATE]
proof (state)
this:
supp (B_app s b) \<subseteq> supp \<B>

goal (35 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> b c x. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>; Some (b, c) = lookup \<Gamma> x\<rbrakk> \<Longrightarrow> supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 35 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (35 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> b c x. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>; Some (b, c) = lookup \<Gamma> x\<rbrakk> \<Longrightarrow> supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 35 subgoals...
[PROOF STEP]
case (wfV_varI \<Theta> \<B> \<Gamma> b c x)
[PROOF STATE]
proof (state)
this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
Some (b, c) = lookup \<Gamma> x

goal (35 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> b c x. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>; Some (b, c) = lookup \<Gamma> x\<rbrakk> \<Longrightarrow> supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 35 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
Some (b, c) = lookup \<Gamma> x
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
Some (b, c) = lookup \<Gamma> x

goal (1 subgoal):
 1. supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using v.supp wfV_elims
     empty_subsetI insert_subset supp_at_base
     fresh_dom_free2 lookup_if1
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
Some (b, c) = lookup \<Gamma> x
supp [ ?l ]\<^sup>v = supp ?l
supp [ ?x ]\<^sup>v = supp ?x
supp [ ?v1.0 , ?v2.0 ]\<^sup>v = supp ?v1.0 \<union> supp ?v2.0
supp (V_cons ?list1.0 ?list2.0 ?v) = supp ?list1.0 \<union> (supp ?list2.0 \<union> supp ?v)
supp (V_consp ?list1.0 ?list2.0 ?b ?v) = supp ?list1.0 \<union> (supp ?list2.0 \<union> (supp ?b \<union> supp ?v))
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?x ]\<^sup>v : ?b ; \<And>c. \<lbrakk> ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma> ; Some (?b, c) = lookup ?\<Gamma> ?x\<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?l ]\<^sup>v : ?b ; \<lbrakk>?b = base_for_lit ?l;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma> \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 , ?v2.0 ]\<^sup>v : ?b ; \<And>b1 b2. \<lbrakk>?b = [ b1 , b2 ]\<^sup>b;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b1 ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b2 \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f V_cons ?tyid ?dc ?v : ?b ; \<And>dclist x b' c. \<lbrakk>?b = B_id ?tyid; AF_typedef ?tyid dclist \<in> set ?\<Theta>; (?dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b' \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f V_consp ?tyid ?dc ?b ?v : ?b' ; \<And>bv dclist x b' c. \<lbrakk>?b' = B_app ?tyid ?b; AF_typedef_poly ?tyid bv dclist \<in> set ?\<Theta>; (?dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?b ; atom bv \<sharp> (?\<Theta>, ?\<B>, ?\<Gamma>, ?b, ?v);  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b'[bv::=?b]\<^sub>b\<^sub>b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
{} \<subseteq> ?A
(insert ?x ?A \<subseteq> ?B) = (?x \<in> ?B \<and> ?A \<subseteq> ?B)
supp ?a = {atom ?a}
atom ?x \<notin> atom_dom ?\<Gamma> \<Longrightarrow> (?x, ?b, ?c) \<notin> toSet ?\<Gamma>
\<lbrakk> ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma> ; Some (?b, ?c) = lookup ?\<Gamma> ?x\<rbrakk> \<Longrightarrow> (?x, ?b, ?c) \<in> toSet ?\<Gamma> \<and> (\<forall>b' c'. (?x, b', c') \<in> toSet ?\<Gamma> \<longrightarrow> b' = ?b \<and> c' = ?c)

goal (1 subgoal):
 1. supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by (metis sup.coboundedI1)
[PROOF STATE]
proof (state)
this:
supp [ x ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (34 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 34 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (34 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 34 subgoals...
[PROOF STEP]
case (wfV_litI \<Theta> \<B> \<Gamma> l)
[PROOF STATE]
proof (state)
this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>

goal (34 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> l. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 34 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>

goal (1 subgoal):
 1. supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using supp_l_empty v.supp
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
supp [ ?l ]\<^sup>v = {}
supp [ ?l ]\<^sup>v = supp ?l
supp [ ?x ]\<^sup>v = supp ?x
supp [ ?v1.0 , ?v2.0 ]\<^sup>v = supp ?v1.0 \<union> supp ?v2.0
supp (V_cons ?list1.0 ?list2.0 ?v) = supp ?list1.0 \<union> (supp ?list2.0 \<union> supp ?v)
supp (V_consp ?list1.0 ?list2.0 ?b ?v) = supp ?list1.0 \<union> (supp ?list2.0 \<union> (supp ?b \<union> supp ?v))

goal (1 subgoal):
 1. supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
supp [ l ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (33 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 33 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (33 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 33 subgoals...
[PROOF STEP]
case (wfV_pairI \<Theta> \<B> \<Gamma> v1 b1 v2 b2)
[PROOF STATE]
proof (state)
this:
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (33 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b1 v2 b2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1 ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2 ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 33 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using v.supp wfV_elims
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b1
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b2
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?l ]\<^sup>v = supp ?l
supp [ ?x ]\<^sup>v = supp ?x
supp [ ?v1.0 , ?v2.0 ]\<^sup>v = supp ?v1.0 \<union> supp ?v2.0
supp (V_cons ?list1.0 ?list2.0 ?v) = supp ?list1.0 \<union> (supp ?list2.0 \<union> supp ?v)
supp (V_consp ?list1.0 ?list2.0 ?b ?v) = supp ?list1.0 \<union> (supp ?list2.0 \<union> (supp ?b \<union> supp ?v))
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?x ]\<^sup>v : ?b ; \<And>c. \<lbrakk> ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma> ; Some (?b, c) = lookup ?\<Gamma> ?x\<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?l ]\<^sup>v : ?b ; \<lbrakk>?b = base_for_lit ?l;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma> \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 , ?v2.0 ]\<^sup>v : ?b ; \<And>b1 b2. \<lbrakk>?b = [ b1 , b2 ]\<^sup>b;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b1 ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b2 \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f V_cons ?tyid ?dc ?v : ?b ; \<And>dclist x b' c. \<lbrakk>?b = B_id ?tyid; AF_typedef ?tyid dclist \<in> set ?\<Theta>; (?dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b' \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f V_consp ?tyid ?dc ?b ?v : ?b' ; \<And>bv dclist x b' c. \<lbrakk>?b' = B_app ?tyid ?b; AF_typedef_poly ?tyid bv dclist \<in> set ?\<Theta>; (?dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?b ; atom bv \<sharp> (?\<Theta>, ?\<B>, ?\<Gamma>, ?b, ?v);  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b'[bv::=?b]\<^sub>b\<^sub>b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P

goal (1 subgoal):
 1. supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by (metis Un_subset_iff)
[PROOF STATE]
proof (state)
this:
supp [ v1 , v2 ]\<^sup>v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (32 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 32 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (32 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 32 subgoals...
[PROOF STEP]
case (wfV_consI s dclist \<Theta> dc x b c \<B> \<Gamma> v)
[PROOF STATE]
proof (state)
this:
AF_typedef s dclist \<in> set \<Theta>
(dc, \<lbrace> x : b  | c \<rbrace>) \<in> set dclist
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b
supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (32 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>s dclist \<Theta> dc x b' c \<B> \<Gamma> v. \<lbrakk>AF_typedef s dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b' ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 32 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
AF_typedef s dclist \<in> set \<Theta>
(dc, \<lbrace> x : b  | c \<rbrace>) \<in> set dclist
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b
supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
AF_typedef s dclist \<in> set \<Theta>
(dc, \<lbrace> x : b  | c \<rbrace>) \<in> set dclist
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b
supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using v.supp wfV_elims
    Un_commute b.supp sup_bot.right_neutral supp_b_empty pure_supp
[PROOF STATE]
proof (prove)
using this:
AF_typedef s dclist \<in> set \<Theta>
(dc, \<lbrace> x : b  | c \<rbrace>) \<in> set dclist
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b
supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?l ]\<^sup>v = supp ?l
supp [ ?x ]\<^sup>v = supp ?x
supp [ ?v1.0 , ?v2.0 ]\<^sup>v = supp ?v1.0 \<union> supp ?v2.0
supp (V_cons ?list1.0 ?list2.0 ?v) = supp ?list1.0 \<union> (supp ?list2.0 \<union> supp ?v)
supp (V_consp ?list1.0 ?list2.0 ?b ?v) = supp ?list1.0 \<union> (supp ?list2.0 \<union> (supp ?b \<union> supp ?v))
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?x ]\<^sup>v : ?b ; \<And>c. \<lbrakk> ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma> ; Some (?b, c) = lookup ?\<Gamma> ?x\<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?l ]\<^sup>v : ?b ; \<lbrakk>?b = base_for_lit ?l;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma> \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 , ?v2.0 ]\<^sup>v : ?b ; \<And>b1 b2. \<lbrakk>?b = [ b1 , b2 ]\<^sup>b;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b1 ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b2 \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f V_cons ?tyid ?dc ?v : ?b ; \<And>dclist x b' c. \<lbrakk>?b = B_id ?tyid; AF_typedef ?tyid dclist \<in> set ?\<Theta>; (?dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b' \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f V_consp ?tyid ?dc ?b ?v : ?b' ; \<And>bv dclist x b' c. \<lbrakk>?b' = B_app ?tyid ?b; AF_typedef_poly ?tyid bv dclist \<in> set ?\<Theta>; (?dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?b ; atom bv \<sharp> (?\<Theta>, ?\<B>, ?\<Gamma>, ?b, ?v);  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b'[bv::=?b]\<^sub>b\<^sub>b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
?A \<union> ?B = ?B \<union> ?A
supp B_int = {}
supp B_bool = {}
supp (B_id ?list) = supp ?list
supp [ ?b1.0 , ?b2.0 ]\<^sup>b = supp ?b1.0 \<union> supp ?b2.0
supp B_unit = {}
supp B_bitvec = {}
supp (B_var ?bv) = supp ?bv
supp (B_app ?list ?b) = supp ?list \<union> supp ?b
sup ?a bot = ?a
atom ?x \<notin> supp ?b
supp ?x = {}

goal (1 subgoal):
 1. supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
supp (V_cons s dc v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (31 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 31 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (31 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 31 subgoals...
[PROOF STEP]
case (wfV_conspI typid bv dclist \<Theta> dc x b' c \<B> \<Gamma> v b)
[PROOF STATE]
proof (state)
this:
AF_typedef_poly typid bv dclist \<in> set \<Theta>
(dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
supp \<Gamma> \<subseteq> supp \<B>
atom bv \<sharp> (\<Theta>, \<B>, v, \<Gamma>, b)
 \<Theta> ; \<B> ; v \<turnstile>\<^sub>w\<^sub>f b : b'[bv::=\<Gamma>]\<^sub>b\<^sub>b
supp b \<subseteq> atom_dom v \<union> supp \<B>

goal (31 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>s bv dclist \<Theta> dc x b' c \<B> b \<Gamma> v. \<lbrakk>AF_typedef_poly s bv dclist \<in> set \<Theta>; (dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>; atom bv \<sharp> (\<Theta>, \<B>, \<Gamma>, b, v);  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b'[bv::=b]\<^sub>b\<^sub>b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (V_consp s dc b v) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 31 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
AF_typedef_poly typid bv dclist \<in> set \<Theta>
(dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
supp \<Gamma> \<subseteq> supp \<B>
atom bv \<sharp> (\<Theta>, \<B>, v, \<Gamma>, b)
 \<Theta> ; \<B> ; v \<turnstile>\<^sub>w\<^sub>f b : b'[bv::=\<Gamma>]\<^sub>b\<^sub>b
supp b \<subseteq> atom_dom v \<union> supp \<B>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
AF_typedef_poly typid bv dclist \<in> set \<Theta>
(dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
supp \<Gamma> \<subseteq> supp \<B>
atom bv \<sharp> (\<Theta>, \<B>, v, \<Gamma>, b)
 \<Theta> ; \<B> ; v \<turnstile>\<^sub>w\<^sub>f b : b'[bv::=\<Gamma>]\<^sub>b\<^sub>b
supp b \<subseteq> atom_dom v \<union> supp \<B>

goal (1 subgoal):
 1. supp (V_consp typid dc \<Gamma> b) \<subseteq> atom_dom v \<union> supp \<B>
[PROOF STEP]
unfolding v.supp
[PROOF STATE]
proof (prove)
using this:
AF_typedef_poly typid bv dclist \<in> set \<Theta>
(dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
supp \<Gamma> \<subseteq> supp \<B>
atom bv \<sharp> (\<Theta>, \<B>, v, \<Gamma>, b)
 \<Theta> ; \<B> ; v \<turnstile>\<^sub>w\<^sub>f b : b'[bv::=\<Gamma>]\<^sub>b\<^sub>b
supp b \<subseteq> atom_dom v \<union> supp \<B>

goal (1 subgoal):
 1. supp typid \<union> (supp dc \<union> (supp \<Gamma> \<union> supp b)) \<subseteq> atom_dom v \<union> supp \<B>
[PROOF STEP]
using wfV_elims
    Un_commute b.supp sup_bot.right_neutral supp_b_empty pure_supp
[PROOF STATE]
proof (prove)
using this:
AF_typedef_poly typid bv dclist \<in> set \<Theta>
(dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
supp \<Gamma> \<subseteq> supp \<B>
atom bv \<sharp> (\<Theta>, \<B>, v, \<Gamma>, b)
 \<Theta> ; \<B> ; v \<turnstile>\<^sub>w\<^sub>f b : b'[bv::=\<Gamma>]\<^sub>b\<^sub>b
supp b \<subseteq> atom_dom v \<union> supp \<B>
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?x ]\<^sup>v : ?b ; \<And>c. \<lbrakk> ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma> ; Some (?b, c) = lookup ?\<Gamma> ?x\<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?l ]\<^sup>v : ?b ; \<lbrakk>?b = base_for_lit ?l;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma> \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 , ?v2.0 ]\<^sup>v : ?b ; \<And>b1 b2. \<lbrakk>?b = [ b1 , b2 ]\<^sup>b;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b1 ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b2 \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f V_cons ?tyid ?dc ?v : ?b ; \<And>dclist x b' c. \<lbrakk>?b = B_id ?tyid; AF_typedef ?tyid dclist \<in> set ?\<Theta>; (?dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b' \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f V_consp ?tyid ?dc ?b ?v : ?b' ; \<And>bv dclist x b' c. \<lbrakk>?b' = B_app ?tyid ?b; AF_typedef_poly ?tyid bv dclist \<in> set ?\<Theta>; (?dc, \<lbrace> x : b'  | c \<rbrace>) \<in> set dclist;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?b ; atom bv \<sharp> (?\<Theta>, ?\<B>, ?\<Gamma>, ?b, ?v);  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b'[bv::=?b]\<^sub>b\<^sub>b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
?A \<union> ?B = ?B \<union> ?A
supp B_int = {}
supp B_bool = {}
supp (B_id ?list) = supp ?list
supp [ ?b1.0 , ?b2.0 ]\<^sup>b = supp ?b1.0 \<union> supp ?b2.0
supp B_unit = {}
supp B_bitvec = {}
supp (B_var ?bv) = supp ?bv
supp (B_app ?list ?b) = supp ?list \<union> supp ?b
sup ?a bot = ?a
atom ?x \<notin> supp ?b
supp ?x = {}

goal (1 subgoal):
 1. supp typid \<union> (supp dc \<union> (supp \<Gamma> \<union> supp b)) \<subseteq> atom_dom v \<union> supp \<B>
[PROOF STEP]
by (simp add: Un_commute pure_supp sup.coboundedI1)
[PROOF STATE]
proof (state)
this:
supp (V_consp typid dc \<Gamma> b) \<subseteq> atom_dom v \<union> supp \<B>

goal (30 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 30 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (30 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 30 subgoals...
[PROOF STEP]
case (wfC_eqI \<Theta> \<B> \<Gamma> e1 b e2)
[PROOF STATE]
proof (state)
this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f e1 : b
supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f e2 : b
supp e2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (30 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 30 subgoals...
[PROOF STEP]
hence "supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>"
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f e1 : b
supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f e2 : b
supp e2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using   c.supp wfC_elims
    image_empty list.set(1) sup_bot.right_neutral
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f e1 : b
supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f e2 : b
supp e2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp (TRUE) = {}
supp (FALSE) = {}
supp (?c1.0  AND  ?c2.0 ) = supp ?c1.0 \<union> supp ?c2.0
supp (?c1.0 OR ?c2.0 ) = supp ?c1.0 \<union> supp ?c2.0
supp (\<not> ?c ) = supp ?c
supp (?c1.0  IMP  ?c2.0 ) = supp ?c1.0 \<union> supp ?c2.0
supp (?ce1.0  ==  ?ce2.0 ) = supp ?ce1.0 \<union> supp ?ce2.0
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f TRUE ;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma>  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f FALSE ;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma>  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?e1.0  ==  ?e2.0  ; \<And>b. \<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?e1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?e2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0  AND  ?c2.0  ; \<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0 ;  ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c2.0 \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0 OR ?c2.0  ; \<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0 ;  ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c2.0 \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f \<not> ?c1.0  ;  ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0  IMP  ?c2.0  ; \<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0 ;  ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c2.0 \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
?f ` {} = {}
set [] = {}
sup ?a bot = ?a

goal (1 subgoal):
 1. supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by (metis IntI UnE empty_iff subsetCE subsetI)
[PROOF STATE]
proof (state)
this:
supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (30 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 30 subgoals...
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (30 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 30 subgoals...
[PROOF STEP]
have "supp e2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. supp e2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using   c.supp wfC_elims
    image_empty list.set(1) sup_bot.right_neutral IntI UnE empty_iff subsetCE subsetI
[PROOF STATE]
proof (prove)
using this:
supp (TRUE) = {}
supp (FALSE) = {}
supp (?c1.0  AND  ?c2.0 ) = supp ?c1.0 \<union> supp ?c2.0
supp (?c1.0 OR ?c2.0 ) = supp ?c1.0 \<union> supp ?c2.0
supp (\<not> ?c ) = supp ?c
supp (?c1.0  IMP  ?c2.0 ) = supp ?c1.0 \<union> supp ?c2.0
supp (?ce1.0  ==  ?ce2.0 ) = supp ?ce1.0 \<union> supp ?ce2.0
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f TRUE ;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma>  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f FALSE ;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?\<Gamma>  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?e1.0  ==  ?e2.0  ; \<And>b. \<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?e1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?e2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0  AND  ?c2.0  ; \<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0 ;  ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c2.0 \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0 OR ?c2.0  ; \<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0 ;  ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c2.0 \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f \<not> ?c1.0  ;  ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0  IMP  ?c2.0  ; \<lbrakk> ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c1.0 ;  ?\<Theta> ; ?\<B> ; ?\<Gamma>   \<turnstile>\<^sub>w\<^sub>f ?c2.0 \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
?f ` {} = {}
set [] = {}
sup ?a bot = ?a
\<lbrakk>?c \<in> ?A; ?c \<in> ?B\<rbrakk> \<Longrightarrow> ?c \<in> ?A \<inter> ?B
\<lbrakk>?c \<in> ?A \<union> ?B; ?c \<in> ?A \<Longrightarrow> ?P; ?c \<in> ?B \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
(?c \<in> {}) = False
\<lbrakk>?A \<subseteq> ?B; ?c \<notin> ?A \<Longrightarrow> ?P; ?c \<in> ?B \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
(\<And>x. x \<in> ?A \<Longrightarrow> x \<in> ?B) \<Longrightarrow> ?A \<subseteq> ?B

goal (1 subgoal):
 1. supp e2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by (metis wfC_eqI.hyps(4))
[PROOF STATE]
proof (state)
this:
supp e2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (30 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 30 subgoals...
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp e2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp e2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp (e1  ==  e2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using c.supp
[PROOF STATE]
proof (prove)
using this:
supp e1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp e2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp (TRUE) = {}
supp (FALSE) = {}
supp (?c1.0  AND  ?c2.0 ) = supp ?c1.0 \<union> supp ?c2.0
supp (?c1.0 OR ?c2.0 ) = supp ?c1.0 \<union> supp ?c2.0
supp (\<not> ?c ) = supp ?c
supp (?c1.0  IMP  ?c2.0 ) = supp ?c1.0 \<union> supp ?c2.0
supp (?ce1.0  ==  ?ce2.0 ) = supp ?ce1.0 \<union> supp ?ce2.0

goal (1 subgoal):
 1. supp (e1  ==  e2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
supp (e1  ==  e2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (29 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 29 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (29 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 29 subgoals...
[PROOF STEP]
case (wfG_cons1I c \<Theta> \<B> \<Gamma> x b)
[PROOF STATE]
proof (state)
this:
c \<notin> {TRUE, FALSE}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
atom x \<sharp> \<Gamma>
 \<Theta> ; \<B> ; (x, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c
supp c \<subseteq> atom_dom ((x, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>

goal (29 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 29 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
c \<notin> {TRUE, FALSE}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
atom x \<sharp> \<Gamma>
 \<Theta> ; \<B> ; (x, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c
supp c \<subseteq> atom_dom ((x, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
c \<notin> {TRUE, FALSE}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
atom x \<sharp> \<Gamma>
 \<Theta> ; \<B> ; (x, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c
supp c \<subseteq> atom_dom ((x, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>

goal (1 subgoal):
 1. atom_dom ((x, b, c) #\<^sub>\<Gamma> \<Gamma>) \<subseteq> supp ((x, b, c) #\<^sub>\<Gamma> \<Gamma>)
[PROOF STEP]
using atom_dom.simps  dom_supp_g supp_GCons
[PROOF STATE]
proof (prove)
using this:
c \<notin> {TRUE, FALSE}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
atom x \<sharp> \<Gamma>
 \<Theta> ; \<B> ; (x, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c
supp c \<subseteq> atom_dom ((x, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
atom_dom ?\<Gamma> = atom ` Syntax.dom ?\<Gamma>
atom_dom ?G \<subseteq> supp ?G
supp (?x #\<^sub>\<Gamma> ?xs) = supp ?x \<union> supp ?xs

goal (1 subgoal):
 1. atom_dom ((x, b, c) #\<^sub>\<Gamma> \<Gamma>) \<subseteq> supp ((x, b, c) #\<^sub>\<Gamma> \<Gamma>)
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
atom_dom ((x, b, c) #\<^sub>\<Gamma> \<Gamma>) \<subseteq> supp ((x, b, c) #\<^sub>\<Gamma> \<Gamma>)

goal (28 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 28 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (28 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 28 subgoals...
[PROOF STEP]
case (wfG_cons2I c \<Theta> \<B> \<Gamma> x b)
[PROOF STATE]
proof (state)
this:
c \<in> {TRUE, FALSE}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
atom x \<sharp> \<Gamma>
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>

goal (28 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 28 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
c \<in> {TRUE, FALSE}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
atom x \<sharp> \<Gamma>
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
c \<in> {TRUE, FALSE}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
atom x \<sharp> \<Gamma>
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>

goal (1 subgoal):
 1. atom_dom ((x, b, c) #\<^sub>\<Gamma> \<Gamma>) \<subseteq> supp ((x, b, c) #\<^sub>\<Gamma> \<Gamma>)
[PROOF STEP]
using atom_dom.simps  dom_supp_g supp_GCons
[PROOF STATE]
proof (prove)
using this:
c \<in> {TRUE, FALSE}
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
atom x \<sharp> \<Gamma>
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
atom_dom ?\<Gamma> = atom ` Syntax.dom ?\<Gamma>
atom_dom ?G \<subseteq> supp ?G
supp (?x #\<^sub>\<Gamma> ?xs) = supp ?x \<union> supp ?xs

goal (1 subgoal):
 1. atom_dom ((x, b, c) #\<^sub>\<Gamma> \<Gamma>) \<subseteq> supp ((x, b, c) #\<^sub>\<Gamma> \<Gamma>)
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
atom_dom ((x, b, c) #\<^sub>\<Gamma> \<Gamma>) \<subseteq> supp ((x, b, c) #\<^sub>\<Gamma> \<Gamma>)

goal (27 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 27 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (27 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 27 subgoals...
[PROOF STEP]
case wfTh_emptyI
[PROOF STATE]
proof (state)
this:

goal (27 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 27 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. supp [] = {}
[PROOF STEP]
by (simp add: supp_Nil)
[PROOF STATE]
proof (state)
this:
supp [] = {}

goal (26 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 26 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (26 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 26 subgoals...
[PROOF STEP]
case (wfTh_consI \<Theta> lst)
[PROOF STATE]
proof (state)
this:
name_of_type \<Theta> \<notin> name_of_type ` set lst
   \<turnstile>\<^sub>w\<^sub>f lst
supp lst = {}
 lst \<turnstile>\<^sub>w\<^sub>f \<Theta>
supp \<Theta> \<subseteq> {}

goal (26 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 26 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
name_of_type \<Theta> \<notin> name_of_type ` set lst
   \<turnstile>\<^sub>w\<^sub>f lst
supp lst = {}
 lst \<turnstile>\<^sub>w\<^sub>f \<Theta>
supp \<Theta> \<subseteq> {}
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
name_of_type \<Theta> \<notin> name_of_type ` set lst
   \<turnstile>\<^sub>w\<^sub>f lst
supp lst = {}
 lst \<turnstile>\<^sub>w\<^sub>f \<Theta>
supp \<Theta> \<subseteq> {}

goal (1 subgoal):
 1. supp (\<Theta> # lst) = {}
[PROOF STEP]
using supp_Cons
[PROOF STATE]
proof (prove)
using this:
name_of_type \<Theta> \<notin> name_of_type ` set lst
   \<turnstile>\<^sub>w\<^sub>f lst
supp lst = {}
 lst \<turnstile>\<^sub>w\<^sub>f \<Theta>
supp \<Theta> \<subseteq> {}
supp (?x # ?xs) = supp ?x \<union> supp ?xs

goal (1 subgoal):
 1. supp (\<Theta> # lst) = {}
[PROOF STEP]
by fast
[PROOF STATE]
proof (state)
this:
supp (\<Theta> # lst) = {}

goal (25 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 25 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (25 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 25 subgoals...
[PROOF STEP]
case (wfTD_simpleI \<Theta> lst s)
[PROOF STATE]
proof (state)
this:
 \<Theta> ; {||}  ; GNil \<turnstile>\<^sub>w\<^sub>f lst
supp lst \<subseteq> atom_dom GNil \<union> supp {||}

goal (25 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 25 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
 \<Theta> ; {||}  ; GNil \<turnstile>\<^sub>w\<^sub>f lst
supp lst \<subseteq> atom_dom GNil \<union> supp {||}
[PROOF STEP]
have "supp (AF_typedef s lst ) = supp lst \<union> supp s"
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; {||}  ; GNil \<turnstile>\<^sub>w\<^sub>f lst
supp lst \<subseteq> atom_dom GNil \<union> supp {||}

goal (1 subgoal):
 1. supp (AF_typedef s lst) = supp lst \<union> supp s
[PROOF STEP]
using type_def.supp
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; {||}  ; GNil \<turnstile>\<^sub>w\<^sub>f lst
supp lst \<subseteq> atom_dom GNil \<union> supp {||}
supp (AF_typedef ?list1.0 ?list2.0) = supp ?list1.0 \<union> supp ?list2.0
supp (AF_typedef_poly ?list1.0 ?bv ?list2.0) = supp ?list2.0 - set [atom ?bv] \<union> supp ?list1.0

goal (1 subgoal):
 1. supp (AF_typedef s lst) = supp lst \<union> supp s
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
supp (AF_typedef s lst) = supp lst \<union> supp s

goal (25 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 25 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
supp (AF_typedef s lst) = supp lst \<union> supp s
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
supp (AF_typedef s lst) = supp lst \<union> supp s

goal (1 subgoal):
 1. supp (AF_typedef s lst) \<subseteq> {}
[PROOF STEP]
using wfTD_simpleI pure_supp
[PROOF STATE]
proof (prove)
using this:
supp (AF_typedef s lst) = supp lst \<union> supp s
 \<Theta> ; {||}  ; GNil \<turnstile>\<^sub>w\<^sub>f lst
supp lst \<subseteq> atom_dom GNil \<union> supp {||}
supp ?x = {}

goal (1 subgoal):
 1. supp (AF_typedef s lst) \<subseteq> {}
[PROOF STEP]
by (simp add: pure_supp supp_Cons supp_at_base)
[PROOF STATE]
proof (state)
this:
supp (AF_typedef s lst) \<subseteq> {}

goal (24 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 24 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (24 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 24 subgoals...
[PROOF STEP]
case (wfTD_poly \<Theta> bv lst s)
[PROOF STATE]
proof (state)
this:
 \<Theta> ; {|bv|}  ; GNil \<turnstile>\<^sub>w\<^sub>f lst
supp lst \<subseteq> atom_dom GNil \<union> supp {|bv|}

goal (24 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 24 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
 \<Theta> ; {|bv|}  ; GNil \<turnstile>\<^sub>w\<^sub>f lst
supp lst \<subseteq> atom_dom GNil \<union> supp {|bv|}
[PROOF STEP]
have "supp (AF_typedef_poly s bv lst ) = supp lst - { atom bv } \<union> supp s"
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; {|bv|}  ; GNil \<turnstile>\<^sub>w\<^sub>f lst
supp lst \<subseteq> atom_dom GNil \<union> supp {|bv|}

goal (1 subgoal):
 1. supp (AF_typedef_poly s bv lst) = supp lst - {atom bv} \<union> supp s
[PROOF STEP]
using type_def.supp
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; {|bv|}  ; GNil \<turnstile>\<^sub>w\<^sub>f lst
supp lst \<subseteq> atom_dom GNil \<union> supp {|bv|}
supp (AF_typedef ?list1.0 ?list2.0) = supp ?list1.0 \<union> supp ?list2.0
supp (AF_typedef_poly ?list1.0 ?bv ?list2.0) = supp ?list2.0 - set [atom ?bv] \<union> supp ?list1.0

goal (1 subgoal):
 1. supp (AF_typedef_poly s bv lst) = supp lst - {atom bv} \<union> supp s
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
supp (AF_typedef_poly s bv lst) = supp lst - {atom bv} \<union> supp s

goal (24 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 24 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
supp (AF_typedef_poly s bv lst) = supp lst - {atom bv} \<union> supp s
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
supp (AF_typedef_poly s bv lst) = supp lst - {atom bv} \<union> supp s

goal (1 subgoal):
 1. supp (AF_typedef_poly s bv lst) \<subseteq> {}
[PROOF STEP]
using wfTD_poly pure_supp
[PROOF STATE]
proof (prove)
using this:
supp (AF_typedef_poly s bv lst) = supp lst - {atom bv} \<union> supp s
 \<Theta> ; {|bv|}  ; GNil \<turnstile>\<^sub>w\<^sub>f lst
supp lst \<subseteq> atom_dom GNil \<union> supp {|bv|}
supp ?x = {}

goal (1 subgoal):
 1. supp (AF_typedef_poly s bv lst) \<subseteq> {}
[PROOF STEP]
by (simp add: pure_supp supp_Cons supp_at_base)
[PROOF STATE]
proof (state)
this:
supp (AF_typedef_poly s bv lst) \<subseteq> {}

goal (23 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 23 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (23 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 23 subgoals...
[PROOF STEP]
case (wfTs_nil \<Theta> \<B> \<Gamma>)
[PROOF STATE]
proof (state)
this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>

goal (23 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 23 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>

goal (1 subgoal):
 1. supp [] \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using supp_Nil
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma>
atom_dom \<Gamma> \<subseteq> supp \<Gamma>
supp [] = {}

goal (1 subgoal):
 1. supp [] \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
supp [] \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (22 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 22 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (22 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 22 subgoals...
[PROOF STEP]
case (wfTs_cons \<Theta> \<B> \<Gamma> \<tau> dc ts)
[PROOF STATE]
proof (state)
this:
 \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f \<tau>
supp \<tau> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
dc \<notin> fst ` set ts
 \<Theta> ; \<B>  ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f ts
supp ts \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (22 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 22 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
 \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f \<tau>
supp \<tau> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
dc \<notin> fst ` set ts
 \<Theta> ; \<B>  ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f ts
supp ts \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f \<tau>
supp \<tau> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
dc \<notin> fst ` set ts
 \<Theta> ; \<B>  ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f ts
supp ts \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp ((dc, \<tau>) # ts) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using supp_Cons supp_Pair pure_supp[of dc]
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f \<tau>
supp \<tau> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
dc \<notin> fst ` set ts
 \<Theta> ; \<B>  ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f ts
supp ts \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp (?x # ?xs) = supp ?x \<union> supp ?xs
supp (?x, ?y) = supp ?x \<union> supp ?y
supp dc = {}

goal (1 subgoal):
 1. supp ((dc, \<tau>) # ts) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
supp ((dc, \<tau>) # ts) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (21 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 21 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (21 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 21 subgoals...
[PROOF STEP]
case (wfCE_valI \<Theta> \<B> \<Gamma> v b)
[PROOF STATE]
proof (state)
this:
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b
supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (21 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v b. \<lbrakk> \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b ; supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 21 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b
supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using ce.supp wfCE_elims
[PROOF STATE]
proof (prove)
using this:
 \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v : b
supp v \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v ]\<^sup>c\<^sup>e : ?b ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : ?b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ plus ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ leq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#1?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b2.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ ?b , b2 ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#2?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b1.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ b1 , ?b ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 @@ ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bitvec;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [| ?v1.0 |]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?opp ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?opp = plus; ?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<lbrakk>?opp = leq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<And>b. \<lbrakk>?opp = eq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ eq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<And>b. \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P

goal (1 subgoal):
 1. supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
supp [ v ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (20 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 20 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (20 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 20 subgoals...
[PROOF STEP]
case (wfCE_plusI \<Theta> \<B> \<Gamma> v1 v2)
[PROOF STATE]
proof (state)
this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (20 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 20 subgoals...
[PROOF STEP]
hence "supp (CE_op Plus v1 v2) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>"
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using ce.supp pure_supp
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
supp ?x = {}

goal (1 subgoal):
 1. supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by (simp add: wfCE_plusI opp.supp)
[PROOF STATE]
proof (state)
this:
supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (20 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 20 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using  ce.supp wfCE_elims UnCI subsetCE subsetI x_not_in_b_set
[PROOF STATE]
proof (prove)
using this:
supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v ]\<^sup>c\<^sup>e : ?b ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : ?b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ plus ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ leq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#1?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b2.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ ?b , b2 ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#2?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b1.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ b1 , ?b ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 @@ ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bitvec;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [| ?v1.0 |]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?opp ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?opp = plus; ?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<lbrakk>?opp = leq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<And>b. \<lbrakk>?opp = eq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ eq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<And>b. \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
(?c \<notin> ?B \<Longrightarrow> ?c \<in> ?A) \<Longrightarrow> ?c \<in> ?A \<union> ?B
\<lbrakk>?A \<subseteq> ?B; ?c \<notin> ?A \<Longrightarrow> ?P; ?c \<in> ?B \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
(\<And>x. x \<in> ?A \<Longrightarrow> x \<in> ?B) \<Longrightarrow> ?A \<subseteq> ?B
atom ?x \<notin> supp ?bs

goal (1 subgoal):
 1. supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
supp [ plus v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (19 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 19 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (19 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 19 subgoals...
[PROOF STEP]
case (wfCE_leqI \<Theta> \<B> \<Gamma> v1 v2)
[PROOF STATE]
proof (state)
this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (19 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 19 subgoals...
[PROOF STEP]
hence "supp (CE_op LEq v1 v2) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>"
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using ce.supp pure_supp
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
supp ?x = {}

goal (1 subgoal):
 1. supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by (simp add: wfCE_plusI opp.supp)
[PROOF STATE]
proof (state)
this:
supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (19 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_int ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_int ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 19 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using  ce.supp wfE_elims UnCI subsetCE subsetI x_not_in_b_set
[PROOF STATE]
proof (prove)
using this:
supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ ?v ]\<^sup>e : ?b ; \<lbrakk> ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : ?b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ plus ?v1.0 ?v2.0 ]\<^sup>e : ?b ; \<lbrakk>?b = B_int;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ leq ?v1.0 ?v2.0 ]\<^sup>e : ?b ; \<lbrakk>?b = B_bool;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [#1?v1.0 ]\<^sup>e : ?b ; \<And>b2. \<lbrakk> ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ ?b , b2 ]\<^sup>b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [#2?v1.0 ]\<^sup>e : ?b ; \<And>b1. \<lbrakk> ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ b1 , ?b ]\<^sup>b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 @@ ?v2.0 ]\<^sup>e : ?b ; \<lbrakk>?b = B_bitvec;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [| ?v1.0 |]\<^sup>e : ?b ; \<lbrakk>?b = B_int;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ ?opp ?v1.0 ?v2.0 ]\<^sup>e : ?b ; \<lbrakk>?opp = plus; ?b = B_int;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<lbrakk>?opp = leq; ?b = B_bool;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<And>b. \<lbrakk>?opp = eq; ?b = B_bool;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b ; b = B_bool \<or> b = B_int \<or> b = B_unit\<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ ?f  ?v  ]\<^sup>e : ?b ; \<And>x b c \<tau> s. \<lbrakk>?b = b_of \<tau>;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ; Some (AF_fundef ?f (AF_fun_typ_none (AF_fun_typ x b c \<tau> s))) = lookup_fun ?\<Phi> ?f;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [?f [ ?b' ]  ?v ]\<^sup>e : ?b ; \<And>bv \<tau> x b c s. \<lbrakk>?b = (b_of \<tau>)[bv::=?b']\<^sub>b;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?b' ; atom bv \<sharp> (?\<Phi>, ?\<Theta>, ?\<B>, ?\<Gamma>, ?\<Delta>, ?b', ?v, (b_of \<tau>)[bv::=?b']\<^sub>b); Some (AF_fundef ?f (AF_fun_typ_some bv (AF_fun_typ x b c \<tau> s))) = lookup_fun ?\<Phi> ?f;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b[bv::=?b']\<^sub>b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ ?u ]\<^sup>e : ?b ; \<And>\<tau>. \<lbrakk>?b = b_of \<tau>;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ; (?u, \<tau>) \<in> setD ?\<Delta>\<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ eq ?v1.0 ?v2.0 ]\<^sup>e : ?b ; \<And>b. \<lbrakk>?b = B_bool;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b ; b = B_bool \<or> b = B_int \<or> b = B_unit\<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
(?c \<notin> ?B \<Longrightarrow> ?c \<in> ?A) \<Longrightarrow> ?c \<in> ?A \<union> ?B
\<lbrakk>?A \<subseteq> ?B; ?c \<notin> ?A \<Longrightarrow> ?P; ?c \<in> ?B \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
(\<And>x. x \<in> ?A \<Longrightarrow> x \<in> ?B) \<Longrightarrow> ?A \<subseteq> ?B
atom ?x \<notin> supp ?bs

goal (1 subgoal):
 1. supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
supp [ leq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (18 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 18 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (18 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 18 subgoals...
[PROOF STEP]
case (wfCE_eqI \<Theta> \<B> \<Gamma> v1 b v2 )
[PROOF STATE]
proof (state)
this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (18 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 18 subgoals...
[PROOF STEP]
hence "supp (CE_op Eq v1 v2) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>"
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using ce.supp pure_supp
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
supp ?x = {}

goal (1 subgoal):
 1. supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by (simp add: wfCE_eqI opp.supp)
[PROOF STATE]
proof (state)
this:
supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (18 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : b ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 18 subgoals...
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using  ce.supp wfE_elims UnCI subsetCE subsetI x_not_in_b_set
[PROOF STATE]
proof (prove)
using this:
supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ ?v ]\<^sup>e : ?b ; \<lbrakk> ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : ?b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ plus ?v1.0 ?v2.0 ]\<^sup>e : ?b ; \<lbrakk>?b = B_int;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ leq ?v1.0 ?v2.0 ]\<^sup>e : ?b ; \<lbrakk>?b = B_bool;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [#1?v1.0 ]\<^sup>e : ?b ; \<And>b2. \<lbrakk> ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ ?b , b2 ]\<^sup>b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [#2?v1.0 ]\<^sup>e : ?b ; \<And>b1. \<lbrakk> ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ b1 , ?b ]\<^sup>b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 @@ ?v2.0 ]\<^sup>e : ?b ; \<lbrakk>?b = B_bitvec;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [| ?v1.0 |]\<^sup>e : ?b ; \<lbrakk>?b = B_int;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ ?opp ?v1.0 ?v2.0 ]\<^sup>e : ?b ; \<lbrakk>?opp = plus; ?b = B_int;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<lbrakk>?opp = leq; ?b = B_bool;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<And>b. \<lbrakk>?opp = eq; ?b = B_bool;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b ; b = B_bool \<or> b = B_int \<or> b = B_unit\<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ ?f  ?v  ]\<^sup>e : ?b ; \<And>x b c \<tau> s. \<lbrakk>?b = b_of \<tau>;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ; Some (AF_fundef ?f (AF_fun_typ_none (AF_fun_typ x b c \<tau> s))) = lookup_fun ?\<Phi> ?f;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [?f [ ?b' ]  ?v ]\<^sup>e : ?b ; \<And>bv \<tau> x b c s. \<lbrakk>?b = (b_of \<tau>)[bv::=?b']\<^sub>b;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B>  \<turnstile>\<^sub>w\<^sub>f ?b' ; atom bv \<sharp> (?\<Phi>, ?\<Theta>, ?\<B>, ?\<Gamma>, ?\<Delta>, ?b', ?v, (b_of \<tau>)[bv::=?b']\<^sub>b); Some (AF_fundef ?f (AF_fun_typ_some bv (AF_fun_typ x b c \<tau> s))) = lookup_fun ?\<Phi> ?f;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : b[bv::=?b']\<^sub>b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ ?u ]\<^sup>e : ?b ; \<And>\<tau>. \<lbrakk>?b = b_of \<tau>;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ; (?u, \<tau>) \<in> setD ?\<Delta>\<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk> ?\<Theta> ; ?\<Phi> ; ?\<B> ; ?\<Gamma> ; ?\<Delta> \<turnstile>\<^sub>w\<^sub>f [ eq ?v1.0 ?v2.0 ]\<^sup>e : ?b ; \<And>b. \<lbrakk>?b = B_bool;  ?\<Theta>  \<turnstile>\<^sub>w\<^sub>f ?\<Phi> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?\<Delta> ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b ; b = B_bool \<or> b = B_int \<or> b = B_unit\<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
(?c \<notin> ?B \<Longrightarrow> ?c \<in> ?A) \<Longrightarrow> ?c \<in> ?A \<union> ?B
\<lbrakk>?A \<subseteq> ?B; ?c \<notin> ?A \<Longrightarrow> ?P; ?c \<in> ?B \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
(\<And>x. x \<in> ?A \<Longrightarrow> x \<in> ?B) \<Longrightarrow> ?A \<subseteq> ?B
atom ?x \<notin> supp ?bs

goal (1 subgoal):
 1. supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
supp [ eq v1 v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (17 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 17 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (17 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 17 subgoals...
[PROOF STEP]
case (wfCE_fstI \<Theta> \<B> \<Gamma> v1 b1 b2)
[PROOF STATE]
proof (state)
this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (17 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 17 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using ce.supp wfCE_elims
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v ]\<^sup>c\<^sup>e : ?b ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : ?b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ plus ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ leq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#1?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b2.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ ?b , b2 ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#2?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b1.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ b1 , ?b ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 @@ ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bitvec;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [| ?v1.0 |]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?opp ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?opp = plus; ?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<lbrakk>?opp = leq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<And>b. \<lbrakk>?opp = eq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ eq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<And>b. \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P

goal (1 subgoal):
 1. supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
supp [#1v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (16 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 16 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (16 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 16 subgoals...
[PROOF STEP]
case (wfCE_sndI \<Theta> \<B> \<Gamma> v1 b1 b2)
[PROOF STATE]
proof (state)
this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (16 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 b1 b2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 16 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using ce.supp wfCE_elims
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : [ b1 , b2 ]\<^sup>b
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v ]\<^sup>c\<^sup>e : ?b ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : ?b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ plus ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ leq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#1?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b2.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ ?b , b2 ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#2?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b1.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ b1 , ?b ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 @@ ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bitvec;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [| ?v1.0 |]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?opp ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?opp = plus; ?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<lbrakk>?opp = leq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<And>b. \<lbrakk>?opp = eq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ eq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<And>b. \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P

goal (1 subgoal):
 1. supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
supp [#2v1]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (15 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 15 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (15 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 15 subgoals...
[PROOF STEP]
case (wfCE_concatI \<Theta>  \<B> \<Gamma> v1 v2)
[PROOF STATE]
proof (state)
this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (15 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1 v2. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;   \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec ; supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 15 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using ce.supp wfCE_elims
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v2 : B_bitvec
supp v2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v ]\<^sup>c\<^sup>e : ?b ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : ?b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ plus ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ leq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#1?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b2.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ ?b , b2 ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#2?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b1.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ b1 , ?b ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 @@ ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bitvec;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [| ?v1.0 |]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?opp ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?opp = plus; ?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<lbrakk>?opp = leq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<And>b. \<lbrakk>?opp = eq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ eq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<And>b. \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P

goal (1 subgoal):
 1. supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
supp [ v1 @@ v2 ]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (14 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 14 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (14 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 14 subgoals...
[PROOF STEP]
case (wfCE_lenI \<Theta>  \<B> \<Gamma>  v1)
[PROOF STATE]
proof (state)
this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (14 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma> v1. \<lbrakk>  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec ; supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 14 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using ce.supp wfCE_elims
[PROOF STATE]
proof (prove)
using this:
  \<Theta> ; \<B> ; \<Gamma> \<turnstile>\<^sub>w\<^sub>f v1 : B_bitvec
supp v1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
supp [ ?v ]\<^sup>c\<^sup>e = supp ?v
supp [ ?opp ?ce1.0 ?ce2.0 ]\<^sup>c\<^sup>e = supp ?opp \<union> (supp ?ce1.0 \<union> supp ?ce2.0)
supp [ ?ce1.0 @@ ?ce2.0 ]\<^sup>c\<^sup>e = supp ?ce1.0 \<union> supp ?ce2.0
supp [#1?ce]\<^sup>c\<^sup>e = supp ?ce
supp [#2?ce]\<^sup>c\<^sup>e = supp ?ce
supp [| ?ce |]\<^sup>c\<^sup>e = supp ?ce
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v ]\<^sup>c\<^sup>e : ?b ;  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v : ?b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ plus ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ leq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#1?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b2.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ ?b , b2 ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [#2?v1.0]\<^sup>c\<^sup>e : ?b ; \<And>b1.   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : [ b1 , ?b ]\<^sup>b  \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?v1.0 @@ ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_bitvec;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [| ?v1.0 |]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_bitvec \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ ?opp ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<lbrakk>?opp = plus; ?b = B_int;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<lbrakk>?opp = leq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : B_int ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : B_int \<rbrakk> \<Longrightarrow> ?P; \<And>b. \<lbrakk>?opp = eq; ?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P
\<lbrakk>  ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f [ eq ?v1.0 ?v2.0 ]\<^sup>c\<^sup>e : ?b ; \<And>b. \<lbrakk>?b = B_bool;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v1.0 : b ;   ?\<Theta> ; ?\<B> ; ?\<Gamma> \<turnstile>\<^sub>w\<^sub>f ?v2.0 : b \<rbrakk> \<Longrightarrow> ?P\<rbrakk> \<Longrightarrow> ?P

goal (1 subgoal):
 1. supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
supp [| v1 |]\<^sup>c\<^sup>e \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (13 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1 OR c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 13 subgoals...
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (13 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1 OR c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 13 subgoals...
[PROOF STEP]
case (wfTI z \<Theta> \<B> \<Gamma> b c)
[PROOF STATE]
proof (state)
this:
atom z \<sharp> (\<Theta>, \<B>, \<Gamma>)
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
 \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c
supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>

goal (13 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1 OR c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 13 subgoals...
[PROOF STEP]
hence "supp c \<subseteq> supp z \<union> atom_dom \<Gamma> \<union> supp \<B>"
[PROOF STATE]
proof (prove)
using this:
atom z \<sharp> (\<Theta>, \<B>, \<Gamma>)
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
 \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c
supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>

goal (1 subgoal):
 1. supp c \<subseteq> supp z \<union> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using  supp_at_base dom_cons
[PROOF STATE]
proof (prove)
using this:
atom z \<sharp> (\<Theta>, \<B>, \<Gamma>)
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
 \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c
supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>
supp ?a = {atom ?a}
atom_dom ((?x, ?b, ?c) #\<^sub>\<Gamma> ?G) = {atom ?x} \<union> atom_dom ?G

goal (1 subgoal):
 1. supp c \<subseteq> supp z \<union> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
supp c \<subseteq> supp z \<union> atom_dom \<Gamma> \<union> supp \<B>

goal (13 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1 OR c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 13 subgoals...
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
supp c \<subseteq> supp z \<union> atom_dom \<Gamma> \<union> supp \<B>

goal (13 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1 OR c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 13 subgoals...
[PROOF STEP]
have "supp b \<subseteq> supp \<B>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. supp b \<subseteq> supp \<B>
[PROOF STEP]
using wfTI
[PROOF STATE]
proof (prove)
using this:
atom z \<sharp> (\<Theta>, \<B>, \<Gamma>)
 \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b
supp b \<subseteq> supp \<B>
 \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c
supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>

goal (1 subgoal):
 1. supp b \<subseteq> supp \<B>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
supp b \<subseteq> supp \<B>

goal (13 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1 OR c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 13 subgoals...
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
supp c \<subseteq> supp z \<union> atom_dom \<Gamma> \<union> supp \<B>
supp b \<subseteq> supp \<B>
[PROOF STEP]
have " supp  \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>"
[PROOF STATE]
proof (prove)
using this:
supp c \<subseteq> supp z \<union> atom_dom \<Gamma> \<union> supp \<B>
supp b \<subseteq> supp \<B>

goal (1 subgoal):
 1. supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
using \<tau>.supp supp_at_base
[PROOF STATE]
proof (prove)
using this:
supp c \<subseteq> supp z \<union> atom_dom \<Gamma> \<union> supp \<B>
supp b \<subseteq> supp \<B>
supp \<lbrace> ?x : ?b  | ?c \<rbrace> = supp ?c - set [atom ?x] \<union> supp ?b
supp ?a = {atom ?a}

goal (1 subgoal):
 1. supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (13 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>z \<Theta> \<B> \<Gamma> b c. \<lbrakk>atom z \<sharp> (\<Theta>, \<B>, \<Gamma>);  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b ; supp b \<subseteq> supp \<B>;  \<Theta> ; \<B> ; (z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c ; supp c \<subseteq> atom_dom ((z, b, TRUE) #\<^sub>\<Gamma> \<Gamma>) \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1 OR c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 13 subgoals...
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (1 subgoal):
 1. supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
supp \<lbrace> z : b  | c \<rbrace> \<subseteq> atom_dom \<Gamma> \<union> supp \<B>

goal (12 subgoals):
 1. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_int \<subseteq> supp \<B>
 2. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bool \<subseteq> supp \<B>
 3. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_unit \<subseteq> supp \<B>
 4. \<And>\<Theta> \<B>. \<lbrakk>   \<turnstile>\<^sub>w\<^sub>f \<Theta> ; supp \<Theta> = {}\<rbrakk> \<Longrightarrow> supp B_bitvec \<subseteq> supp \<B>
 5. \<And>\<Theta> \<B> b1 b2. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b1 ; supp b1 \<subseteq> supp \<B>;  \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f b2 ; supp b2 \<subseteq> supp \<B>\<rbrakk> \<Longrightarrow> supp [ b1 , b2 ]\<^sup>b \<subseteq> supp \<B>
 6. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (TRUE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 7. \<And>\<Theta> \<B> \<Gamma>. \<lbrakk> \<Theta> ; \<B>  \<turnstile>\<^sub>w\<^sub>f \<Gamma> ; atom_dom \<Gamma> \<subseteq> supp \<Gamma>\<rbrakk> \<Longrightarrow> supp (FALSE) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 8. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1  AND  c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 9. \<And>\<Theta> \<B> \<Gamma> c1 c2. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>;  \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c2 ; supp c2 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (c1 OR c2 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
 10. \<And>\<Theta> \<B> \<Gamma> c1. \<lbrakk> \<Theta> ; \<B> ; \<Gamma>   \<turnstile>\<^sub>w\<^sub>f c1 ; supp c1 \<subseteq> atom_dom \<Gamma> \<union> supp \<B>\<rbrakk> \<Longrightarrow> supp (\<not> c1 ) \<subseteq> atom_dom \<Gamma> \<union> supp \<B>
A total of 12 subgoals...
[PROOF STEP]
qed(auto)