[STATEMENT]
lemma BSD_in_subsystem:
"\<lbrakk> c \<in> C\<^bsub>\<V>\<^esub>; ((\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub>) \<in> Tr\<^bsub>ESi\<^esub> ; BSD \<V>i Tr\<^bsub>ESi\<^esub> \<rbrakk>
  \<Longrightarrow> \<exists>\<alpha>_i'. ( ((\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub>) @ \<alpha>_i') \<in> Tr\<^bsub>ESi\<^esub>
  \<and> (\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub>) = (\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>) \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = [] )"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
proof (induct "length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)" arbitrary: \<beta> c \<alpha>)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>c \<alpha> \<beta>. \<lbrakk>0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
case 0
[PROOF STATE]
proof (state)
this:
0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
c \<in> C\<^bsub>\<V>\<^esub>
(\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
BSD \<V>i Tr\<^bsub>ESi\<^esub>

goal (2 subgoals):
 1. \<And>c \<alpha> \<beta>. \<lbrakk>0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
(* show that ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> is a suitable choice for \<alpha>_i' *)
[PROOF STATE]
proof (state)
this:
0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
c \<in> C\<^bsub>\<V>\<^esub>
(\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
BSD \<V>i Tr\<^bsub>ESi\<^esub>

goal (2 subgoals):
 1. \<And>c \<alpha> \<beta>. \<lbrakk>0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
let ?L = "([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>c \<alpha> \<beta>. \<lbrakk>0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
from 0(3)
[PROOF STATE]
proof (chain)
picking this:
(\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
have \<beta>_E1_c\<alpha>_E1_in_Tr1: "((\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub>) @ (([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub>)) \<in> Tr\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (prove)
using this:
(\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
by (simp only: projection_concatenation_commute)
[PROOF STATE]
proof (state)
this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (2 subgoals):
 1. \<And>c \<alpha> \<beta>. \<lbrakk>0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (2 subgoals):
 1. \<And>c \<alpha> \<beta>. \<lbrakk>0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
have "(?L \<upharpoonleft> V\<^bsub>\<V>i\<^esub>) = (\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
have "(?L \<upharpoonleft> V\<^bsub>\<V>i\<^esub>) = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
from validVi
[PROOF STATE]
proof (chain)
picking this:
isViewOn \<V>i E\<^bsub>ESi\<^esub>
[PROOF STEP]
have "E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> = V\<^bsub>\<V>i\<^esub>"
[PROOF STATE]
proof (prove)
using this:
isViewOn \<V>i E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> = V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by (simp add: isViewOn_def V_valid_def VN_disjoint_def VC_disjoint_def NC_disjoint_def
          , auto)
[PROOF STATE]
proof (state)
this:
E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> = V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> = V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
have "(?L \<upharpoonleft> V\<^bsub>\<V>i\<^esub>) = ([c] @ \<alpha>) \<upharpoonleft> (E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> (E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
by (simp add: projection_def)
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> (E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> = V\<^bsub>\<V>i\<^esub>
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> (E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> = V\<^bsub>\<V>i\<^esub>
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> (E\<^bsub>ESi\<^esub> \<inter> V\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
have "([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
have "([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub>) @ (\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> @ \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by (rule projection_concatenation_commute)
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> @ \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> @ \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
have "([c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub>) = []"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
from 0(2)
[PROOF STATE]
proof (chain)
picking this:
c \<in> C\<^bsub>\<V>\<^esub>
[PROOF STEP]
have "[c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> = [c]"
[PROOF STATE]
proof (prove)
using this:
c \<in> C\<^bsub>\<V>\<^esub>

goal (1 subgoal):
 1. [c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> = [c]
[PROOF STEP]
by (simp add: projection_def)
[PROOF STATE]
proof (state)
this:
[c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> = [c]

goal (1 subgoal):
 1. [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
[c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> = [c]

goal (1 subgoal):
 1. [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
have "[c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. [c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. [c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
from validVi Cv_inter_Ei_subsetof_Cvi
[PROOF STATE]
proof (chain)
picking this:
isViewOn \<V>i E\<^bsub>ESi\<^esub>
C\<^bsub>\<V>\<^esub> \<inter> E\<^bsub>ESi\<^esub> \<subseteq> C\<^bsub>\<V>i\<^esub>
[PROOF STEP]
have "C\<^bsub>\<V>\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> \<subseteq> C\<^bsub>\<V>i\<^esub>"
[PROOF STATE]
proof (prove)
using this:
isViewOn \<V>i E\<^bsub>ESi\<^esub>
C\<^bsub>\<V>\<^esub> \<inter> E\<^bsub>ESi\<^esub> \<subseteq> C\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. C\<^bsub>\<V>\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> \<subseteq> C\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by (simp add: isViewOn_def  V_valid_def VC_disjoint_def, auto)
[PROOF STATE]
proof (state)
this:
C\<^bsub>\<V>\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> \<subseteq> C\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. [c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
C\<^bsub>\<V>\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> \<subseteq> C\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. [c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
from 0(1)
[PROOF STATE]
proof (chain)
picking this:
0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
have "[c] \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []"
[PROOF STATE]
proof (prove)
using this:
0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. [c] \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
by (simp only: projection_concatenation_commute, auto)
[PROOF STATE]
proof (state)
this:
[c] \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. [c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
C\<^bsub>\<V>\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> \<subseteq> C\<^bsub>\<V>i\<^esub>
[c] \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
have "[c] \<upharpoonleft> (C\<^bsub>\<V>\<^esub> \<inter> V\<^bsub>\<V>i\<^esub>) = []"
[PROOF STATE]
proof (prove)
using this:
C\<^bsub>\<V>\<^esub> \<inter> V\<^bsub>\<V>i\<^esub> \<subseteq> C\<^bsub>\<V>i\<^esub>
[c] \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. [c] \<upharpoonleft> (C\<^bsub>\<V>\<^esub> \<inter> V\<^bsub>\<V>i\<^esub>) = []
[PROOF STEP]
by (rule projection_on_subset)
[PROOF STATE]
proof (state)
this:
[c] \<upharpoonleft> (C\<^bsub>\<V>\<^esub> \<inter> V\<^bsub>\<V>i\<^esub>) = []

goal (1 subgoal):
 1. [c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
[c] \<upharpoonleft> (C\<^bsub>\<V>\<^esub> \<inter> V\<^bsub>\<V>i\<^esub>) = []

goal (1 subgoal):
 1. [c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
by (simp only: projection_def, auto)
[PROOF STATE]
proof (state)
this:
[c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
[c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
[c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> = [c]
[c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
[c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> = [c]
[c] \<upharpoonleft> C\<^bsub>\<V>\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
[c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
[c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> @ \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = [c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> @ \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[c] \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
([c] @ \<alpha>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (2 subgoals):
 1. \<And>c \<alpha> \<beta>. \<lbrakk>0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (2 subgoals):
 1. \<And>c \<alpha> \<beta>. \<lbrakk>0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
have "?L \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
from 0(1)
[PROOF STATE]
proof (chain)
picking this:
0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
have "([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []"
[PROOF STATE]
proof (prove)
using this:
0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
hence "([c] @ \<alpha>) \<upharpoonleft> (C\<^bsub>\<V>i\<^esub> \<inter> E\<^bsub>ESi\<^esub>) = []"
[PROOF STATE]
proof (prove)
using this:
([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> (C\<^bsub>\<V>i\<^esub> \<inter> E\<^bsub>ESi\<^esub>) = []
[PROOF STEP]
by (rule projection_on_intersection)
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> (C\<^bsub>\<V>i\<^esub> \<inter> E\<^bsub>ESi\<^esub>) = []

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
hence "([c] @ \<alpha>) \<upharpoonleft> (E\<^bsub>ESi\<^esub> \<inter> C\<^bsub>\<V>i\<^esub>) = []"
[PROOF STATE]
proof (prove)
using this:
([c] @ \<alpha>) \<upharpoonleft> (C\<^bsub>\<V>i\<^esub> \<inter> E\<^bsub>ESi\<^esub>) = []

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> (E\<^bsub>ESi\<^esub> \<inter> C\<^bsub>\<V>i\<^esub>) = []
[PROOF STEP]
by (simp only: Int_commute)
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> (E\<^bsub>ESi\<^esub> \<inter> C\<^bsub>\<V>i\<^esub>) = []

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
([c] @ \<alpha>) \<upharpoonleft> (E\<^bsub>ESi\<^esub> \<inter> C\<^bsub>\<V>i\<^esub>) = []

goal (1 subgoal):
 1. ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
by (simp only: projection_def, auto)
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (2 subgoals):
 1. \<And>c \<alpha> \<beta>. \<lbrakk>0 = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ ([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
([c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
case (Suc n)
[PROOF STATE]
proof (state)
this:
\<lbrakk>n = length (([?c] @ ?\<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); ?c \<in> C\<^bsub>\<V>\<^esub>; (?\<beta> @ [?c] @ ?\<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. ?\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ?\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
Suc n = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
c \<in> C\<^bsub>\<V>\<^esub>
(\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
BSD \<V>i Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
from projection_split_last[OF Suc(2)]
[PROOF STATE]
proof (chain)
picking this:
\<exists>\<beta> x \<alpha>. x \<in> C\<^bsub>\<V>i\<^esub> \<and> [c] @ \<alpha> = \<beta> @ [x] @ \<alpha> \<and> \<alpha> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = [] \<and> n = length ((\<beta> @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
obtain \<gamma> c_i \<delta>
    where c_i_in_C\<V>i: "c_i \<in> C\<^bsub>\<V>i\<^esub>"
    and   c\<alpha>_is_\<gamma>c_i\<delta>: "[c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>"
    and   \<delta>_no_C\<V>i:  "\<delta> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []"
    and   n_is_len_\<gamma>\<delta>_C\<V>i: "n = length ((\<gamma> @ \<delta>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)"
[PROOF STATE]
proof (prove)
using this:
\<exists>\<beta> x \<alpha>. x \<in> C\<^bsub>\<V>i\<^esub> \<and> [c] @ \<alpha> = \<beta> @ [x] @ \<alpha> \<and> \<alpha> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = [] \<and> n = length ((\<beta> @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. (\<And>c_i \<gamma> \<delta>. \<lbrakk>c_i \<in> C\<^bsub>\<V>i\<^esub>; [c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>; \<delta> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; n = length ((\<gamma> @ \<delta>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
c_i \<in> C\<^bsub>\<V>i\<^esub>
[c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>
\<delta> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
n = length ((\<gamma> @ \<delta>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
let ?L1 = "((\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub>)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
let ?L2 = "(\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub>)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
note c_i_in_C\<V>i
[PROOF STATE]
proof (state)
this:
c_i \<in> C\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
c_i \<in> C\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
have list_with_c_i_in_Tr1: "(?L1 @ [c_i] @ ?L2) \<in> Tr\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
from c_i_in_C\<V>i validVi
[PROOF STATE]
proof (chain)
picking this:
c_i \<in> C\<^bsub>\<V>i\<^esub>
isViewOn \<V>i E\<^bsub>ESi\<^esub>
[PROOF STEP]
have "[c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub> = [c_i]"
[PROOF STATE]
proof (prove)
using this:
c_i \<in> C\<^bsub>\<V>i\<^esub>
isViewOn \<V>i E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. [c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub> = [c_i]
[PROOF STEP]
by (simp only: isViewOn_def V_valid_def VC_disjoint_def
        VN_disjoint_def NC_disjoint_def projection_def, auto)
[PROOF STATE]
proof (state)
this:
[c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub> = [c_i]

goal (1 subgoal):
 1. (\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
[c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub> = [c_i]

goal (1 subgoal):
 1. (\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
from Suc(4) c\<alpha>_is_\<gamma>c_i\<delta>
[PROOF STATE]
proof (chain)
picking this:
(\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>
[PROOF STEP]
have "((\<beta> @ \<gamma> @ [c_i] @ \<delta>) \<upharpoonleft> E\<^bsub>ESi\<^esub>) \<in> Tr\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (prove)
using this:
(\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>

goal (1 subgoal):
 1. (\<beta> @ \<gamma> @ [c_i] @ \<delta>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<beta> @ \<gamma> @ [c_i] @ \<delta>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. (\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
hence "(?L1 @ ([c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub>) @ ?L2) \<in> Tr\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (prove)
using this:
(\<beta> @ \<gamma> @ [c_i] @ \<delta>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. (\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
by (simp only: projection_def, auto)
[PROOF STATE]
proof (state)
this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. (\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
[c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub> = [c_i]
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
[c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub> = [c_i]
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. (\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
have "?L2 \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
from validVi
[PROOF STATE]
proof (chain)
picking this:
isViewOn \<V>i E\<^bsub>ESi\<^esub>
[PROOF STEP]
have "\<And>x. (x \<in> E\<^bsub>ESi\<^esub> \<and> x \<in> C\<^bsub>\<V>i\<^esub>) = (x \<in> C\<^bsub>\<V>i\<^esub>)"
[PROOF STATE]
proof (prove)
using this:
isViewOn \<V>i E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<And>x. (x \<in> E\<^bsub>ESi\<^esub> \<and> x \<in> C\<^bsub>\<V>i\<^esub>) = (x \<in> C\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
by (simp add: isViewOn_def V_valid_def VC_disjoint_def
        VN_disjoint_def NC_disjoint_def, auto)
[PROOF STATE]
proof (state)
this:
(?x \<in> E\<^bsub>ESi\<^esub> \<and> ?x \<in> C\<^bsub>\<V>i\<^esub>) = (?x \<in> C\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
with \<delta>_no_C\<V>i
[PROOF STATE]
proof (chain)
picking this:
\<delta> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
(?x \<in> E\<^bsub>ESi\<^esub> \<and> ?x \<in> C\<^bsub>\<V>i\<^esub>) = (?x \<in> C\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<delta> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
(?x \<in> E\<^bsub>ESi\<^esub> \<and> ?x \<in> C\<^bsub>\<V>i\<^esub>) = (?x \<in> C\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
by (simp add: projection_def)
[PROOF STATE]
proof (state)
this:
\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
note Suc(5)
[PROOF STATE]
proof (state)
this:
BSD \<V>i Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
c_i \<in> C\<^bsub>\<V>i\<^esub>
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
BSD \<V>i Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
obtain \<delta>'
    where \<delta>'_1: "(?L1 @ \<delta>') \<in> Tr\<^bsub>ESi\<^esub>"
    and \<delta>'_2: "\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = ?L2 \<upharpoonleft> V\<^bsub>\<V>i\<^esub>"
    and \<delta>'_3: "\<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []"
[PROOF STATE]
proof (prove)
using this:
c_i \<in> C\<^bsub>\<V>i\<^esub>
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
BSD \<V>i Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. (\<And>\<delta>'. \<lbrakk>(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>; \<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>; \<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
unfolding BSD_def
[PROOF STATE]
proof (prove)
using this:
c_i \<in> C\<^bsub>\<V>i\<^esub>
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ [c_i] @ \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
\<forall>\<alpha> \<beta>. \<forall>c\<in>C\<^bsub>\<V>i\<^esub>. \<beta> @ [c] @ \<alpha> \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = [] \<longrightarrow> (\<exists>\<alpha>'. \<beta> @ \<alpha>' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = [])

goal (1 subgoal):
 1. (\<And>\<delta>'. \<lbrakk>(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>; \<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>; \<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
hence \<delta>'_2': "\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>"
[PROOF STATE]
proof (prove)
using this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>; \<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>; \<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []\<rbrakk> \<Longrightarrow> \<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
have "?L2 \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
from validVi
[PROOF STATE]
proof (chain)
picking this:
isViewOn \<V>i E\<^bsub>ESi\<^esub>
[PROOF STEP]
have "\<And>x. (x \<in> E\<^bsub>ESi\<^esub> \<and> x \<in> V\<^bsub>\<V>i\<^esub>) = (x \<in> V\<^bsub>\<V>i\<^esub>)"
[PROOF STATE]
proof (prove)
using this:
isViewOn \<V>i E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<And>x. (x \<in> E\<^bsub>ESi\<^esub> \<and> x \<in> V\<^bsub>\<V>i\<^esub>) = (x \<in> V\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
by (simp add: isViewOn_def V_valid_def VC_disjoint_def
        VN_disjoint_def NC_disjoint_def, auto)
[PROOF STATE]
proof (state)
this:
(?x \<in> E\<^bsub>ESi\<^esub> \<and> ?x \<in> V\<^bsub>\<V>i\<^esub>) = (?x \<in> V\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
(?x \<in> E\<^bsub>ESi\<^esub> \<and> ?x \<in> V\<^bsub>\<V>i\<^esub>) = (?x \<in> V\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by (simp add: projection_def)
[PROOF STATE]
proof (state)
this:
\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<lbrakk>(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>; \<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>; \<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []\<rbrakk> \<Longrightarrow> \<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
with \<delta>'_2
[PROOF STATE]
proof (chain)
picking this:
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<delta> \<upharpoonleft> E\<^bsub>ESi\<^esub> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<And>x c \<alpha> \<beta>. \<lbrakk>\<And>c \<alpha> \<beta>. \<lbrakk>x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []; Suc x = length (([c] @ \<alpha>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<alpha>) \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
proof (cases \<gamma>)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<gamma> = [] \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
(* need to distinguish between these cases as the inductive
      hypothesis can only be applied to one case. *)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<gamma> = [] \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
case Nil
[PROOF STATE]
proof (state)
this:
\<gamma> = []

goal (2 subgoals):
 1. \<gamma> = [] \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
with c\<alpha>_is_\<gamma>c_i\<delta>
[PROOF STATE]
proof (chain)
picking this:
[c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>
\<gamma> = []
[PROOF STEP]
have "[c] @ \<alpha> = [c_i] @ \<delta>"
[PROOF STATE]
proof (prove)
using this:
[c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>
\<gamma> = []

goal (1 subgoal):
 1. [c] @ \<alpha> = [c_i] @ \<delta>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
[c] @ \<alpha> = [c_i] @ \<delta>

goal (2 subgoals):
 1. \<gamma> = [] \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
hence \<delta>_is_\<alpha>: "\<delta> = \<alpha>"
[PROOF STATE]
proof (prove)
using this:
[c] @ \<alpha> = [c_i] @ \<delta>

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

goal (2 subgoals):
 1. \<gamma> = [] \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
from \<delta>'_1
[PROOF STATE]
proof (chain)
picking this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
have \<delta>'_1': "((\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub>) @ \<delta>') \<in> Tr\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (prove)
using this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
by (simp only: Nil, auto)
[PROOF STATE]
proof (state)
this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>

goal (2 subgoals):
 1. \<gamma> = [] \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>

goal (2 subgoals):
 1. \<gamma> = [] \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
note \<delta>'_2'
[PROOF STATE]
proof (state)
this:
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (2 subgoals):
 1. \<gamma> = [] \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (2 subgoals):
 1. \<gamma> = [] \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
note \<delta>'_3
[PROOF STATE]
proof (state)
this:
\<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (2 subgoals):
 1. \<gamma> = [] \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
 2. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
by (simp only: \<delta>_is_\<alpha>, auto)
[PROOF STATE]
proof (state)
this:
\<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
case (Cons x \<gamma>')
[PROOF STATE]
proof (state)
this:
\<gamma> = x # \<gamma>'

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
with c\<alpha>_is_\<gamma>c_i\<delta>
[PROOF STATE]
proof (chain)
picking this:
[c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>
\<gamma> = x # \<gamma>'
[PROOF STEP]
have \<gamma>_is_c\<gamma>': "\<gamma> = [c] @ \<gamma>'"
[PROOF STATE]
proof (prove)
using this:
[c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>
\<gamma> = x # \<gamma>'

goal (1 subgoal):
 1. \<gamma> = [c] @ \<gamma>'
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<gamma> = [c] @ \<gamma>'

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
with n_is_len_\<gamma>\<delta>_C\<V>i
[PROOF STATE]
proof (chain)
picking this:
n = length ((\<gamma> @ \<delta>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
\<gamma> = [c] @ \<gamma>'
[PROOF STEP]
have "n = length (([c] @ \<gamma>' @ \<delta>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)"
[PROOF STATE]
proof (prove)
using this:
n = length ((\<gamma> @ \<delta>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
\<gamma> = [c] @ \<gamma>'

goal (1 subgoal):
 1. n = length (([c] @ \<gamma>' @ \<delta>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
n = length (([c] @ \<gamma>' @ \<delta>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
with \<delta>_no_C\<V>i \<delta>'_3
[PROOF STATE]
proof (chain)
picking this:
\<delta> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
\<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
n = length (([c] @ \<gamma>' @ \<delta>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
have "n = length (([c] @ \<gamma>' @ \<delta>') \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)"
[PROOF STATE]
proof (prove)
using this:
\<delta> \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
\<delta>' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
n = length (([c] @ \<gamma>' @ \<delta>) \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. n = length (([c] @ \<gamma>' @ \<delta>') \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
[PROOF STEP]
by (simp only: projection_concatenation_commute)
[PROOF STATE]
proof (state)
this:
n = length (([c] @ \<gamma>' @ \<delta>') \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
n = length (([c] @ \<gamma>' @ \<delta>') \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
note Suc(3)
[PROOF STATE]
proof (state)
this:
c \<in> C\<^bsub>\<V>\<^esub>

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
c \<in> C\<^bsub>\<V>\<^esub>

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
have "((\<beta> @ [c] @ (\<gamma>' @ \<delta>')) \<upharpoonleft> E\<^bsub>ESi\<^esub>) \<in> Tr\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
from \<delta>'_1 validESi
[PROOF STATE]
proof (chain)
picking this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
ES_valid ESi
[PROOF STEP]
have "\<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (prove)
using this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
ES_valid ESi

goal (1 subgoal):
 1. \<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>; ES_valid ESi\<rbrakk> \<Longrightarrow> \<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>
[PROOF STEP]
let ?L = "(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>'"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>; ES_valid ESi\<rbrakk> \<Longrightarrow> \<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>
[PROOF STEP]
from \<delta>'_1 validESi
[PROOF STATE]
proof (chain)
picking this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
ES_valid ESi
[PROOF STEP]
have "\<forall>e \<in> set ?L. e \<in> E\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (prove)
using this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
ES_valid ESi

goal (1 subgoal):
 1. \<forall>e\<in>set ((\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>'). e \<in> E\<^bsub>ESi\<^esub>
[PROOF STEP]
by (simp add: ES_valid_def traces_contain_events_def)
[PROOF STATE]
proof (state)
this:
\<forall>e\<in>set ((\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>'). e \<in> E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<lbrakk>(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>; ES_valid ESi\<rbrakk> \<Longrightarrow> \<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>
[PROOF STEP]
hence "set \<delta>' \<subseteq> E\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (prove)
using this:
\<forall>e\<in>set ((\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>'). e \<in> E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. set \<delta>' \<subseteq> E\<^bsub>ESi\<^esub>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
set \<delta>' \<subseteq> E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<lbrakk>(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>; ES_valid ESi\<rbrakk> \<Longrightarrow> \<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
set \<delta>' \<subseteq> E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>
[PROOF STEP]
by (simp add: list_subset_iff_projection_neutral)
[PROOF STATE]
proof (state)
this:
\<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. (\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
with \<delta>'_1
[PROOF STATE]
proof (chain)
picking this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
\<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>
[PROOF STEP]
have "?L1 @ \<delta>' = (\<beta> @ \<gamma> @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub>"
[PROOF STATE]
proof (prove)
using this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
\<delta>' = \<delta>' \<upharpoonleft> E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. (\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' = (\<beta> @ \<gamma> @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub>
[PROOF STEP]
by (simp only: projection_concatenation_commute, auto)
[PROOF STATE]
proof (state)
this:
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' = (\<beta> @ \<gamma> @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. (\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
with \<gamma>_is_c\<gamma>' \<delta>'_1
[PROOF STATE]
proof (chain)
picking this:
\<gamma> = [c] @ \<gamma>'
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' = (\<beta> @ \<gamma> @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<gamma> = [c] @ \<gamma>'
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' \<in> Tr\<^bsub>ESi\<^esub>
(\<beta> @ \<gamma>) \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<delta>' = (\<beta> @ \<gamma> @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. (\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
note Suc(5)
[PROOF STATE]
proof (state)
this:
BSD \<V>i Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
BSD \<V>i Tr\<^bsub>ESi\<^esub>

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
note Suc(1)[of c "\<gamma>' @ \<delta>'" \<beta>]
[PROOF STATE]
proof (state)
this:
\<lbrakk>n = length (([c] @ \<gamma>' @ \<delta>') \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
n = length (([c] @ \<gamma>' @ \<delta>') \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
c \<in> C\<^bsub>\<V>\<^esub>
(\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
BSD \<V>i Tr\<^bsub>ESi\<^esub>
\<lbrakk>n = length (([c] @ \<gamma>' @ \<delta>') \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
obtain \<alpha>_i'
      where \<alpha>_i'_1: "\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub>"
      and \<alpha>_i'_2: "\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub>"
      and \<alpha>_i'_3: "\<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []"
[PROOF STATE]
proof (prove)
using this:
n = length (([c] @ \<gamma>' @ \<delta>') \<upharpoonleft> C\<^bsub>\<V>i\<^esub>)
c \<in> C\<^bsub>\<V>\<^esub>
(\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>
BSD \<V>i Tr\<^bsub>ESi\<^esub>
\<lbrakk>n = length (([c] @ \<gamma>' @ \<delta>') \<upharpoonleft> C\<^bsub>\<V>i\<^esub>); c \<in> C\<^bsub>\<V>\<^esub>; (\<beta> @ [c] @ \<gamma>' @ \<delta>') \<upharpoonleft> E\<^bsub>ESi\<^esub> \<in> Tr\<^bsub>ESi\<^esub>; BSD \<V>i Tr\<^bsub>ESi\<^esub>\<rbrakk> \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. (\<And>\<alpha>_i'. \<lbrakk>\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub>; \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub>; \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub>
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub>
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
have "\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
have "\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
from c\<alpha>_is_\<gamma>c_i\<delta> \<gamma>_is_c\<gamma>'
[PROOF STATE]
proof (chain)
picking this:
[c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>
\<gamma> = [c] @ \<gamma>'
[PROOF STEP]
have "\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ [c_i] @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>"
[PROOF STATE]
proof (prove)
using this:
[c] @ \<alpha> = \<gamma> @ [c_i] @ \<delta>
\<gamma> = [c] @ \<gamma>'

goal (1 subgoal):
 1. \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ [c_i] @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ [c_i] @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
with validVi c_i_in_C\<V>i
[PROOF STATE]
proof (chain)
picking this:
isViewOn \<V>i E\<^bsub>ESi\<^esub>
c_i \<in> C\<^bsub>\<V>i\<^esub>
\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ [c_i] @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
isViewOn \<V>i E\<^bsub>ESi\<^esub>
c_i \<in> C\<^bsub>\<V>i\<^esub>
\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ [c_i] @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by (simp only: isViewOn_def V_valid_def  VC_disjoint_def
            VN_disjoint_def NC_disjoint_def projection_concatenation_commute
            projection_def, auto)
[PROOF STATE]
proof (state)
this:
\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
from \<alpha>_i'_2 \<delta>'_2'
[PROOF STATE]
proof (chain)
picking this:
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
have "\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>"
[PROOF STATE]
proof (prove)
using this:
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<delta>' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<delta> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by (simp only: projection_concatenation_commute)
[PROOF STATE]
proof (state)
this:
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>) \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<And>a list. \<gamma> = a # list \<Longrightarrow> \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub>
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub>
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = (\<gamma>' @ \<delta>') \<upharpoonleft> V\<^bsub>\<V>i\<^esub>
\<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
\<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub>

goal (1 subgoal):
 1. \<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>\<alpha>_i'. \<beta> \<upharpoonleft> E\<^bsub>ESi\<^esub> @ \<alpha>_i' \<in> Tr\<^bsub>ESi\<^esub> \<and> \<alpha>_i' \<upharpoonleft> V\<^bsub>\<V>i\<^esub> = \<alpha> \<upharpoonleft> V\<^bsub>\<V>i\<^esub> \<and> \<alpha>_i' \<upharpoonleft> C\<^bsub>\<V>i\<^esub> = []

goal:
No subgoals!
[PROOF STEP]
qed