[STATEMENT]
lemma VWO_0_iff [simp]: "(x,0) \<in> VWO \<longleftrightarrow> x=0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((x, 0) \<in> VWO) = (x = 0)
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. (x, 0) \<in> VWO \<Longrightarrow> x = 0
 2. x = 0 \<Longrightarrow> (x, 0) \<in> VWO
[PROOF STEP]
show "x = 0" if "(x, 0) \<in> VWO"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x = 0
[PROOF STEP]
using zero_TC_le [of x] le_TC_imp_VWO that
[PROOF STATE]
proof (prove)
using this:
0 \<sqsubseteq> x
?x \<sqsubseteq> ?y \<Longrightarrow> (?x, ?y) \<in> VWO
(x, 0) \<in> VWO

goal (1 subgoal):
 1. x = 0
[PROOF STEP]
by (metis DiffI Linear_order_VWO Linear_order_in_diff_Id UNIV_I VWO pair_in_Id_conv)
[PROOF STATE]
proof (state)
this:
(x, 0) \<in> VWO \<Longrightarrow> x = 0

goal (1 subgoal):
 1. x = 0 \<Longrightarrow> (x, 0) \<in> VWO
[PROOF STEP]
qed auto


[STATEMENT]
lemma i2: "inner (x + y) z = inner x z + inner y z"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. inner (x + y) z = inner x z + inner y z
[PROOF STEP]
using local.inner_left_distrib sum.distrib inner_vec_def
[PROOF STATE]
proof (prove)
using this:
inner_field (?x + ?y) ?z = inner_field ?x ?z + inner_field ?y ?z
(\<Sum>x\<in>?A. ?g x + ?h x) = sum ?g ?A + sum ?h ?A
inner ?x ?y = (\<Sum>i\<in>UNIV. inner_field (?x $ i) (?y $ i))

goal (1 subgoal):
 1. inner (x + y) z = inner x z + inner y z
[PROOF STEP]
by force


[STATEMENT]
lemma param_subseteq[param]:
  "\<lbrakk>single_valued R; single_valued (R\<inverse>)\<rbrakk> \<Longrightarrow> ((\<subseteq>), (\<subseteq>)) \<in> \<langle>R\<rangle>set_rel \<rightarrow> \<langle>R\<rangle>set_rel \<rightarrow> bool_rel"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>single_valued R; single_valued (R\<inverse>)\<rbrakk> \<Longrightarrow> ((\<subseteq>), (\<subseteq>)) \<in> \<langle>R\<rangle>set_rel \<rightarrow> \<langle>R\<rangle>set_rel \<rightarrow> bool_rel
[PROOF STEP]
unfolding set_rel_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>single_valued R; single_valued (R\<inverse>)\<rbrakk> \<Longrightarrow> ((\<subseteq>), (\<subseteq>)) \<in> {(A, B). (\<forall>x\<in>A. \<exists>y\<in>B. (x, y) \<in> R) \<and> (\<forall>y\<in>B. \<exists>x\<in>A. (x, y) \<in> R)} \<rightarrow> {(A, B). (\<forall>x\<in>A. \<exists>y\<in>B. (x, y) \<in> R) \<and> (\<forall>y\<in>B. \<exists>x\<in>A. (x, y) \<in> R)} \<rightarrow> bool_rel
[PROOF STEP]
by (blast dest: single_valuedD)


[STATEMENT]
lemma (in Ring) sum_mult_mem:"\<lbrakk>A \<subseteq> carrier R; B \<subseteq> carrier R;
   \<forall>j \<le> n. f j \<in> set_mult R A B\<rbrakk>  \<Longrightarrow> nsum R f n \<in> carrier R"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>A \<subseteq> carrier R; B \<subseteq> carrier R; \<forall>j\<le>n. f j \<in> set_mult R A B\<rbrakk> \<Longrightarrow> \<Sigma>\<^sub>e R f n \<in> carrier R
[PROOF STEP]
apply (cut_tac ring_is_ag)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>A \<subseteq> carrier R; B \<subseteq> carrier R; \<forall>j\<le>n. f j \<in> set_mult R A B; aGroup R\<rbrakk> \<Longrightarrow> \<Sigma>\<^sub>e R f n \<in> carrier R
[PROOF STEP]
apply (simp add:sum_mult_Tr1)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma defined_inputs_code : "defined_inputs M q = t_input ` Set.filter (\<lambda>t . t_source t = q) (transitions M)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. defined_inputs M q = t_input ` Set.filter (\<lambda>t. t_source t = q) (FSM.transitions M)
[PROOF STEP]
unfolding defined_inputs_set
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {x \<in> FSM.inputs M. FSM.h M (q, x) \<noteq> {}} = t_input ` Set.filter (\<lambda>t. t_source t = q) (FSM.transitions M)
[PROOF STEP]
by force


[STATEMENT]
lemma mat_leqb_eqc_for_LEQ:
  assumes "i < dim_vec b"
  assumes "i < dim_row A"
  shows "(mat_leqb_eqc A b c)!i = LEQ ((matrix_to_lpolies A)!i) (b$i)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
define lst where lst: "lst = (mat_leqb_eqc A b c)"
[PROOF STATE]
proof (state)
this:
lst = mat_leqb_eqc A b c

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
define l where l: "l = matrix_to_lpolies (two_block_non_interfering A A\<^sup>T)"
[PROOF STATE]
proof (state)
this:
l = matrix_to_lpolies (two_block_non_interfering A A\<^sup>T)

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
have ileqA: "i < dim_row A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. i < dim_row A
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
i < dim_vec b
i < dim_row A

goal (1 subgoal):
 1. i < dim_row A
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
i < dim_row A

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
have "l!i = vec_to_lpoly ((row A i)@\<^sub>v 0\<^sub>v (dim_row A))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. l ! i = vec_to_lpoly (row A i @\<^sub>v 0\<^sub>v (dim_row A))
[PROOF STEP]
unfolding l
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. matrix_to_lpolies (two_block_non_interfering A A\<^sup>T) ! i = vec_to_lpoly (row A i @\<^sub>v 0\<^sub>v (dim_row A))
[PROOF STEP]
using two_block_non_interfering_row_comp1[of i A "A\<^sup>T", OF ileqA]
[PROOF STATE]
proof (prove)
using this:
row (two_block_non_interfering A A\<^sup>T) i = row A i @\<^sub>v 0\<^sub>v (dim_col A\<^sup>T)

goal (1 subgoal):
 1. matrix_to_lpolies (two_block_non_interfering A A\<^sup>T) ! i = vec_to_lpoly (row A i @\<^sub>v 0\<^sub>v (dim_row A))
[PROOF STEP]
by (metis ileqA lpoly_of_v_equals_v_append0 matrix_to_lp_vec_to_lpoly_row
        trans_less_add1 two_block_non_interfering_dims(1))
[PROOF STATE]
proof (state)
this:
l ! i = vec_to_lpoly (row A i @\<^sub>v 0\<^sub>v (dim_row A))

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
l ! i = vec_to_lpoly (row A i @\<^sub>v 0\<^sub>v (dim_row A))
[PROOF STEP]
have leq: "l!i = (matrix_to_lpolies A)!i"
[PROOF STATE]
proof (prove)
using this:
l ! i = vec_to_lpoly (row A i @\<^sub>v 0\<^sub>v (dim_row A))

goal (1 subgoal):
 1. l ! i = matrix_to_lpolies A ! i
[PROOF STEP]
using lpoly_of_v_equals_v_append0[of "row A i" "(dim_row A)"] l
[PROOF STATE]
proof (prove)
using this:
l ! i = vec_to_lpoly (row A i @\<^sub>v 0\<^sub>v (dim_row A))
vec_to_lpoly (row A i) = vec_to_lpoly (row A i @\<^sub>v 0\<^sub>v (dim_row A))
l = matrix_to_lpolies (two_block_non_interfering A A\<^sup>T)

goal (1 subgoal):
 1. l ! i = matrix_to_lpolies A ! i
[PROOF STEP]
by (simp add: ileqA)
[PROOF STATE]
proof (state)
this:
l ! i = matrix_to_lpolies A ! i

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
have *: "lst = [LEQ (l!i) (b$i) . i <- [0..<dim_vec b]] @
                         [EQ  (l!i) ((b@\<^sub>vc)$i) . i <- [dim_vec b ..< dim_vec (b@\<^sub>vc)] ]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. lst = map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]
[PROOF STEP]
unfolding l lst
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. mat_leqb_eqc A b c = map (\<lambda>i. LEQ (matrix_to_lpolies (two_block_non_interfering A A\<^sup>T) ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (matrix_to_lpolies (two_block_non_interfering A A\<^sup>T) ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]
[PROOF STEP]
by (metis mat_leqb_eqc.simps)
[PROOF STATE]
proof (state)
this:
lst = map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
have "([LEQ (l!i) (b$i). i <- [0..<dim_vec b]] @
         [EQ (l!i) ((b@\<^sub>vc)$i). i <- [dim_vec b ..< dim_vec (b@\<^sub>vc)]]) ! i =
         [LEQ (l!i) (b$i). i <- [0..<dim_vec b]]!i"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]) ! i = map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] ! i
[PROOF STEP]
using assms(2) lst
[PROOF STATE]
proof (prove)
using this:
i < dim_row A
lst = mat_leqb_eqc A b c

goal (1 subgoal):
 1. (map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]) ! i = map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] ! i
[PROOF STEP]
by (simp add: assms(1) nth_append)
[PROOF STATE]
proof (state)
this:
(map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]) ! i = map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] ! i

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
(map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]) ! i = map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] ! i

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
have "... = LEQ (l!i) (b$i)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] ! i = LEQ (l ! i) (b $ i)
[PROOF STEP]
using l lst
[PROOF STATE]
proof (prove)
using this:
l = matrix_to_lpolies (two_block_non_interfering A A\<^sup>T)
lst = mat_leqb_eqc A b c

goal (1 subgoal):
 1. map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] ! i = LEQ (l ! i) (b $ i)
[PROOF STEP]
by (simp add: assms(1))
[PROOF STATE]
proof (state)
this:
map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] ! i = LEQ (l ! i) (b $ i)

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
(map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]) ! i = LEQ (l ! i) (b $ i)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
(map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]) ! i = LEQ (l ! i) (b $ i)

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
using "*" leq lst
[PROOF STATE]
proof (prove)
using this:
(map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]) ! i = LEQ (l ! i) (b $ i)
lst = map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]
l ! i = matrix_to_lpolies A ! i
lst = mat_leqb_eqc A b c

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
using mat_leqb_eqc.simps[of A b c]
[PROOF STATE]
proof (prove)
using this:
(map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]) ! i = LEQ (l ! i) (b $ i)
lst = map (\<lambda>i. LEQ (l ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (l ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)]
l ! i = matrix_to_lpolies A ! i
lst = mat_leqb_eqc A b c
mat_leqb_eqc A b c = (let lst = matrix_to_lpolies (two_block_non_interfering A A\<^sup>T) in map (\<lambda>i. LEQ (lst ! i) (b $ i)) [0..<dim_vec b] @ map (\<lambda>i. EQ (lst ! i) ((b @\<^sub>v c) $ i)) [dim_vec b..<dim_vec (b @\<^sub>v c)])

goal (1 subgoal):
 1. mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
mat_leqb_eqc A b c ! i = LEQ (matrix_to_lpolies A ! i) (b $ i)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma tm_ntcf_arrows_subset_Vset:
  assumes "\<Z> \<beta>" and "\<alpha> \<in>\<^sub>\<circ> \<beta>"
  shows
    "{ntcf_arrow \<NN> | \<NN>. \<exists>\<FF> \<GG>. \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F\<^sub>.\<^sub>t\<^sub>m \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^sub>.\<^sub>t\<^sub>m\<^bsub>\<alpha>\<^esub> \<BB>} \<subseteq>
      elts (Vset \<beta>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {ntcf_arrow \<NN> |\<NN>. \<exists>\<FF> \<GG>. \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F\<^sub>.\<^sub>t\<^sub>m \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^sub>.\<^sub>t\<^sub>m\<^bsub>\<alpha>\<^esub> \<BB>} \<subseteq> elts (Vset \<beta>)
[PROOF STEP]
proof(intro subsetI, unfold mem_Collect_eq, elim exE conjE)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x \<NN> \<FF> \<GG>. \<lbrakk>x = ntcf_arrow \<NN>; \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F\<^sub>.\<^sub>t\<^sub>m \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^sub>.\<^sub>t\<^sub>m\<^bsub>\<alpha>\<^esub> \<BB>\<rbrakk> \<Longrightarrow> x \<in>\<^sub>\<circ> Vset \<beta>
[PROOF STEP]
fix x \<NN> \<FF> \<GG>
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x \<NN> \<FF> \<GG>. \<lbrakk>x = ntcf_arrow \<NN>; \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F\<^sub>.\<^sub>t\<^sub>m \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^sub>.\<^sub>t\<^sub>m\<^bsub>\<alpha>\<^esub> \<BB>\<rbrakk> \<Longrightarrow> x \<in>\<^sub>\<circ> Vset \<beta>
[PROOF STEP]
assume x_def: "x = ntcf_arrow \<NN>"
    and \<NN>: "\<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F\<^sub>.\<^sub>t\<^sub>m \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^sub>.\<^sub>t\<^sub>m\<^bsub>\<alpha>\<^esub> \<BB>"
[PROOF STATE]
proof (state)
this:
x = ntcf_arrow \<NN>
\<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F\<^sub>.\<^sub>t\<^sub>m \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^sub>.\<^sub>t\<^sub>m\<^bsub>\<alpha>\<^esub> \<BB>

goal (1 subgoal):
 1. \<And>x \<NN> \<FF> \<GG>. \<lbrakk>x = ntcf_arrow \<NN>; \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F\<^sub>.\<^sub>t\<^sub>m \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^sub>.\<^sub>t\<^sub>m\<^bsub>\<alpha>\<^esub> \<BB>\<rbrakk> \<Longrightarrow> x \<in>\<^sub>\<circ> Vset \<beta>
[PROOF STEP]
interpret is_tm_ntcf \<alpha> \<AA> \<BB> \<FF> \<GG> \<NN>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F\<^sub>.\<^sub>t\<^sub>m \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^sub>.\<^sub>t\<^sub>m\<^bsub>\<alpha>\<^esub> \<BB>
[PROOF STEP]
by (rule \<NN>)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x \<NN> \<FF> \<GG>. \<lbrakk>x = ntcf_arrow \<NN>; \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F\<^sub>.\<^sub>t\<^sub>m \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^sub>.\<^sub>t\<^sub>m\<^bsub>\<alpha>\<^esub> \<BB>\<rbrakk> \<Longrightarrow> x \<in>\<^sub>\<circ> Vset \<beta>
[PROOF STEP]
show "x \<in>\<^sub>\<circ> Vset \<beta>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x \<in>\<^sub>\<circ> Vset \<beta>
[PROOF STEP]
unfolding x_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ntcf_arrow \<NN> \<in>\<^sub>\<circ> Vset \<beta>
[PROOF STEP]
by (rule ntcf_arrow_in_Vset[OF assms])
[PROOF STATE]
proof (state)
this:
x \<in>\<^sub>\<circ> Vset \<beta>

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma Infinitesimal_hnorm_iff: "hnorm x \<in> Infinitesimal \<longleftrightarrow> x \<in> Infinitesimal"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (hnorm x \<in> Infinitesimal) = (x \<in> Infinitesimal)
[PROOF STEP]
by (simp add: Infinitesimal_def)


[STATEMENT]
lemma finite_fun_args:
  assumes "finite A" "\<forall> a \<in> A. finite (B a)"
  shows "finite {f. (\<forall> a. if a \<in> A then f a \<in> B a else f a = f0 a)}" (is "finite (?F A)")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. finite {f. \<forall>a. if a \<in> A then f a \<in> B a else f a = f0 a}
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
finite A
\<forall>a\<in>A. finite (B a)

goal (1 subgoal):
 1. finite {f. \<forall>a. if a \<in> A then f a \<in> B a else f a = f0 a}
[PROOF STEP]
proof (induct)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<forall>a\<in>{}. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> {} then f a \<in> B a else f a = f0 a}
 2. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
case empty
[PROOF STATE]
proof (state)
this:
\<forall>a\<in>{}. finite (B a)

goal (2 subgoals):
 1. \<forall>a\<in>{}. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> {} then f a \<in> B a else f a = f0 a}
 2. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
have "?F {} = {\<lambda> x. f0 x}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {f. \<forall>a. if a \<in> {} then f a \<in> B a else f a = f0 a} = {f0}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
{f. \<forall>a. if a \<in> {} then f a \<in> B a else f a = f0 a} = {f0}

goal (2 subgoals):
 1. \<forall>a\<in>{}. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> {} then f a \<in> B a else f a = f0 a}
 2. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
{f. \<forall>a. if a \<in> {} then f a \<in> B a else f a = f0 a} = {f0}
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
{f. \<forall>a. if a \<in> {} then f a \<in> B a else f a = f0 a} = {f0}

goal (1 subgoal):
 1. finite {f. \<forall>a. if a \<in> {} then f a \<in> B a else f a = f0 a}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
finite {f. \<forall>a. if a \<in> {} then f a \<in> B a else f a = f0 a}

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
case (insert a A')
[PROOF STATE]
proof (state)
this:
finite A'
a \<notin> A'
\<forall>a\<in>A'. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
\<forall>a\<in>insert a A'. finite (B a)

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
finite A'
a \<notin> A'
\<forall>a\<in>A'. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
\<forall>a\<in>insert a A'. finite (B a)
[PROOF STEP]
have "finite (?F A')"
[PROOF STATE]
proof (prove)
using this:
finite A'
a \<notin> A'
\<forall>a\<in>A'. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
\<forall>a\<in>insert a A'. finite (B a)

goal (1 subgoal):
 1. finite {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
finite {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
let ?f = "\<lambda> f. {f'. (\<forall> a'. if a = a' then f' a \<in> B a else f' a' = f a')}"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
have "\<forall> f \<in> ?F A'. finite (?f f)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>f. f \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a} \<Longrightarrow> finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}
[PROOF STEP]
fix f
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>f. f \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a} \<Longrightarrow> finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}
[PROOF STEP]
assume "f \<in> ?F A'"
[PROOF STATE]
proof (state)
this:
f \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}

goal (1 subgoal):
 1. \<And>f. f \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a} \<Longrightarrow> finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
f \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
[PROOF STEP]
have "?f f = (\<lambda> b. f (a := b)) ` B a"
[PROOF STATE]
proof (prove)
using this:
f \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}

goal (1 subgoal):
 1. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'} = fun_upd f a ` B a
[PROOF STEP]
by (force split: if_splits)
[PROOF STATE]
proof (state)
this:
{f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'} = fun_upd f a ` B a

goal (1 subgoal):
 1. \<And>f. f \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a} \<Longrightarrow> finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
{f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'} = fun_upd f a ` B a
[PROOF STEP]
show "finite (?f f)"
[PROOF STATE]
proof (prove)
using this:
{f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'} = fun_upd f a ` B a

goal (1 subgoal):
 1. finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}
[PROOF STEP]
using \<open>\<forall>a\<in>insert a A'. finite (B a)\<close>
[PROOF STATE]
proof (prove)
using this:
{f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'} = fun_upd f a ` B a
\<forall>a\<in>insert a A'. finite (B a)

goal (1 subgoal):
 1. finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<forall>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<forall>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}
[PROOF STEP]
have "finite (\<Union> (?f ` (?F A')))"
[PROOF STATE]
proof (prove)
using this:
\<forall>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}

goal (1 subgoal):
 1. finite (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
using \<open>finite (?F A')\<close>
[PROOF STATE]
proof (prove)
using this:
\<forall>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. finite {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}
finite {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}

goal (1 subgoal):
 1. finite (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
finite (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
finite (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
have "?F (insert a A') = \<Union> (?f ` (?F A'))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} = (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} \<subseteq> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
 2. (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}) \<subseteq> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
show "?F (insert a A') \<subseteq> \<Union> (?f ` (?F A'))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} \<subseteq> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} \<Longrightarrow> x \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
fix f
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} \<Longrightarrow> x \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
assume "f \<in> ?F (insert a A')"
[PROOF STATE]
proof (state)
this:
f \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}

goal (1 subgoal):
 1. \<And>x. x \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} \<Longrightarrow> x \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
f \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
have "f \<in> ?f (f (a := f0 a))" "f (a := f0 a) \<in> ?F A'"
[PROOF STATE]
proof (prove)
using this:
f \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}

goal (1 subgoal):
 1. f \<in> {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = (f(a := f0 a)) a'} &&& f(a := f0 a) \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
[PROOF STEP]
using \<open>a \<notin> A'\<close>
[PROOF STATE]
proof (prove)
using this:
f \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
a \<notin> A'

goal (1 subgoal):
 1. f \<in> {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = (f(a := f0 a)) a'} &&& f(a := f0 a) \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
f \<in> {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = (f(a := f0 a)) a'}
f(a := f0 a) \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}

goal (1 subgoal):
 1. \<And>x. x \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} \<Longrightarrow> x \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
f \<in> {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = (f(a := f0 a)) a'}
f(a := f0 a) \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
[PROOF STEP]
show "f \<in> \<Union> (?f ` (?F A'))"
[PROOF STATE]
proof (prove)
using this:
f \<in> {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = (f(a := f0 a)) a'}
f(a := f0 a) \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}

goal (1 subgoal):
 1. f \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
f \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
{f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} \<subseteq> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})

goal (1 subgoal):
 1. (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}) \<subseteq> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}) \<subseteq> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
show "\<Union> (?f ` (?F A')) \<subseteq> ?F (insert a A')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}) \<subseteq> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}) \<Longrightarrow> x \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
fix f
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}) \<Longrightarrow> x \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
assume "f \<in> \<Union> (?f ` (?F A'))"
[PROOF STATE]
proof (state)
this:
f \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})

goal (1 subgoal):
 1. \<And>x. x \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}) \<Longrightarrow> x \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
f \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
obtain f0 where "f0 \<in> ?F A'" "f \<in> ?f f0"
[PROOF STATE]
proof (prove)
using this:
f \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})

goal (1 subgoal):
 1. (\<And>f0a. \<lbrakk>f0a \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}; f \<in> {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f0a a'}\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
f0 \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
f \<in> {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f0 a'}

goal (1 subgoal):
 1. \<And>x. x \<in> (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}) \<Longrightarrow> x \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
f0 \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
f \<in> {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f0 a'}
[PROOF STEP]
show "f \<in> ?F (insert a A')"
[PROOF STATE]
proof (prove)
using this:
f0 \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
f \<in> {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f0 a'}

goal (1 subgoal):
 1. f \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
using \<open>a \<notin> A'\<close>
[PROOF STATE]
proof (prove)
using this:
f0 \<in> {f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}
f \<in> {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f0 a'}
a \<notin> A'

goal (1 subgoal):
 1. f \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
by (force split: if_splits)
[PROOF STATE]
proof (state)
this:
f \<in> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'}) \<subseteq> {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
{f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} = (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})

goal (1 subgoal):
 1. \<And>x F. \<lbrakk>finite F; x \<notin> F; \<forall>a\<in>F. finite (B a) \<Longrightarrow> finite {f. \<forall>a. if a \<in> F then f a \<in> B a else f a = f0 a}; \<forall>a\<in>insert x F. finite (B a)\<rbrakk> \<Longrightarrow> finite {f. \<forall>a. if a \<in> insert x F then f a \<in> B a else f a = f0 a}
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
finite (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
{f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} = (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
finite (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})
{f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa} = (\<Union>f\<in>{f. \<forall>a. if a \<in> A' then f a \<in> B a else f a = f0 a}. {f'. \<forall>a'. if a = a' then f' a \<in> B a else f' a' = f a'})

goal (1 subgoal):
 1. finite {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
finite {f. \<forall>aa. if aa \<in> insert a A' then f aa \<in> B aa else f aa = f0 aa}

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma incseq_incseq_powrat:
     "\<lbrakk> 1 \<le> a; incseq r \<rbrakk> \<Longrightarrow> incseq (\<lambda>n. a pow\<^sub>\<rat> (r n))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>1 \<le> a; incseq r\<rbrakk> \<Longrightarrow> incseq (\<lambda>n. a pow\<^sub>\<rat> r n)
[PROOF STEP]
by (metis (lifting) incseq_def powrat_le_mono)


[STATEMENT]
lemma ordinal_plus_minus1 [simp]: "(x + y) - x = (y::ordinal)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x + y - x = y
[PROOF STEP]
by (rule_tac a=y in oLimit_induct, simp_all)


[STATEMENT]
lemma glb_common_set:
fixes ss s0 rset
assumes "finite ss"  and "ss \<noteq> {}"
and "\<And> s . s \<in> ss \<Longrightarrow> \<exists> rs . s = s0 \<star> rs \<and> set rs \<subseteq> rset"
shows "\<exists> rs . \<Sqinter> ss = s0 \<star> rs \<and> set rs \<subseteq> rset"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>rs. \<Sqinter> ss = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
finite ss
ss \<noteq> {}
?s \<in> ss \<Longrightarrow> \<exists>rs. ?s = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (1 subgoal):
 1. \<exists>rs. \<Sqinter> ss = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
proof (induct ss rule:finite_ne_induct)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x. (\<And>s. s \<in> {x} \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> {x} = s0 \<star> rs \<and> set rs \<subseteq> rset
 2. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
case (singleton s)
[PROOF STATE]
proof (state)
this:
?s \<in> {s} \<Longrightarrow> \<exists>rs. ?s = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (2 subgoals):
 1. \<And>x. (\<And>s. s \<in> {x} \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> {x} = s0 \<star> rs \<and> set rs \<subseteq> rset
 2. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
obtain rs where "s = s0 \<star> rs \<and> set rs \<subseteq> rset"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using singleton
[PROOF STATE]
proof (prove)
using this:
?s \<in> {s} \<Longrightarrow> \<exists>rs. ?s = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (1 subgoal):
 1. (\<And>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
s = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (2 subgoals):
 1. \<And>x. (\<And>s. s \<in> {x} \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> {x} = s0 \<star> rs \<and> set rs \<subseteq> rset
 2. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
s = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (2 subgoals):
 1. \<And>x. (\<And>s. s \<in> {x} \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> {x} = s0 \<star> rs \<and> set rs \<subseteq> rset
 2. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
have "\<Sqinter> {s} = s"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Sqinter> {s} = s
[PROOF STEP]
using singleton
[PROOF STATE]
proof (prove)
using this:
?s \<in> {s} \<Longrightarrow> \<exists>rs. ?s = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (1 subgoal):
 1. \<Sqinter> {s} = s
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<Sqinter> {s} = s

goal (2 subgoals):
 1. \<And>x. (\<And>s. s \<in> {x} \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> {x} = s0 \<star> rs \<and> set rs \<subseteq> rset
 2. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
s = s0 \<star> rs \<and> set rs \<subseteq> rset
\<Sqinter> {s} = s
[PROOF STEP]
show "\<exists> rs . \<Sqinter> {s} = s0 \<star> rs \<and> set rs \<subseteq> rset"
[PROOF STATE]
proof (prove)
using this:
s = s0 \<star> rs \<and> set rs \<subseteq> rset
\<Sqinter> {s} = s

goal (1 subgoal):
 1. \<exists>rs. \<Sqinter> {s} = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<exists>rs. \<Sqinter> {s} = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (1 subgoal):
 1. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
case (insert s ss)
[PROOF STATE]
proof (state)
this:
finite ss
ss \<noteq> {}
s \<notin> ss
(\<And>s. s \<in> ss \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> ss = s0 \<star> rs \<and> set rs \<subseteq> rset
?s \<in> insert s ss \<Longrightarrow> \<exists>rs. ?s = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (1 subgoal):
 1. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
have 1:"\<And> s' . s' \<in> ss \<Longrightarrow> \<exists> rs . s' = s0 \<star> rs \<and> set rs \<subseteq> rset"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>s'. s' \<in> ss \<Longrightarrow> \<exists>rs. s' = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
using insert(5)
[PROOF STATE]
proof (prove)
using this:
?s \<in> insert s ss \<Longrightarrow> \<exists>rs. ?s = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (1 subgoal):
 1. \<And>s'. s' \<in> ss \<Longrightarrow> \<exists>rs. s' = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
?s' \<in> ss \<Longrightarrow> \<exists>rs. ?s' = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (1 subgoal):
 1. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
obtain rs where 2:"\<Sqinter> ss = s0 \<star> rs" and 3:"set rs \<subseteq> rset"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>rs. \<lbrakk>\<Sqinter> ss = s0 \<star> rs; set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using insert(4) 1
[PROOF STATE]
proof (prove)
using this:
(\<And>s. s \<in> ss \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> ss = s0 \<star> rs \<and> set rs \<subseteq> rset
?s' \<in> ss \<Longrightarrow> \<exists>rs. ?s' = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (1 subgoal):
 1. (\<And>rs. \<lbrakk>\<Sqinter> ss = s0 \<star> rs; set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<Sqinter> ss = s0 \<star> rs
set rs \<subseteq> rset

goal (1 subgoal):
 1. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
obtain rs' where 4:"s = s0 \<star> rs'"and 5:"set rs' \<subseteq> rset"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>rs'. \<lbrakk>s = s0 \<star> rs'; set rs' \<subseteq> rset\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using insert(5)
[PROOF STATE]
proof (prove)
using this:
?s \<in> insert s ss \<Longrightarrow> \<exists>rs. ?s = s0 \<star> rs \<and> set rs \<subseteq> rset

goal (1 subgoal):
 1. (\<And>rs'. \<lbrakk>s = s0 \<star> rs'; set rs' \<subseteq> rset\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
s = s0 \<star> rs'
set rs' \<subseteq> rset

goal (1 subgoal):
 1. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
have 6:"\<Sqinter> (insert s ss) = s \<sqinter> (\<Sqinter> ss)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<Sqinter> insert s ss = s \<sqinter> \<Sqinter> ss
[PROOF STEP]
by (metis insert.hyps(1-3) insert_not_elem)
[PROOF STATE]
proof (state)
this:
\<Sqinter> insert s ss = s \<sqinter> \<Sqinter> ss

goal (1 subgoal):
 1. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
obtain rs'' where 7:"\<Sqinter> (insert s ss) = s0 \<star> rs''"
    and 8:"set rs'' \<subseteq> set rs' \<union> set rs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>rs''. \<lbrakk>\<Sqinter> insert s ss = s0 \<star> rs''; set rs'' \<subseteq> set rs' \<union> set rs\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using glb_common 2 4 6
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?s1.0 = ?s \<star> ?rs1.0; ?s2.0 = ?s \<star> ?rs2.0\<rbrakk> \<Longrightarrow> \<exists>rs. ?s1.0 \<sqinter> ?s2.0 = ?s \<star> rs \<and> set rs \<subseteq> set ?rs1.0 \<union> set ?rs2.0
\<Sqinter> ss = s0 \<star> rs
s = s0 \<star> rs'
\<Sqinter> insert s ss = s \<sqinter> \<Sqinter> ss

goal (1 subgoal):
 1. (\<And>rs''. \<lbrakk>\<Sqinter> insert s ss = s0 \<star> rs''; set rs'' \<subseteq> set rs' \<union> set rs\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
\<Sqinter> insert s ss = s0 \<star> rs''
set rs'' \<subseteq> set rs' \<union> set rs

goal (1 subgoal):
 1. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
have 9:"set rs'' \<subseteq> rset"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. set rs'' \<subseteq> rset
[PROOF STEP]
using 3 5 8
[PROOF STATE]
proof (prove)
using this:
set rs \<subseteq> rset
set rs' \<subseteq> rset
set rs'' \<subseteq> set rs' \<union> set rs

goal (1 subgoal):
 1. set rs'' \<subseteq> rset
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
set rs'' \<subseteq> rset

goal (1 subgoal):
 1. \<And>x Fa. \<lbrakk>finite Fa; Fa \<noteq> {}; x \<notin> Fa; (\<And>s. s \<in> Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset) \<Longrightarrow> \<exists>rs. \<Sqinter> Fa = s0 \<star> rs \<and> set rs \<subseteq> rset; \<And>s. s \<in> insert x Fa \<Longrightarrow> \<exists>rs. s = s0 \<star> rs \<and> set rs \<subseteq> rset\<rbrakk> \<Longrightarrow> \<exists>rs. \<Sqinter> insert x Fa = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
show "\<exists> rs . \<Sqinter> (insert s ss) = s0 \<star> rs \<and> set rs \<subseteq> rset"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>rs. \<Sqinter> insert s ss = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
using 7 9
[PROOF STATE]
proof (prove)
using this:
\<Sqinter> insert s ss = s0 \<star> rs''
set rs'' \<subseteq> rset

goal (1 subgoal):
 1. \<exists>rs. \<Sqinter> insert s ss = s0 \<star> rs \<and> set rs \<subseteq> rset
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<exists>rs. \<Sqinter> insert s ss = s0 \<star> rs \<and> set rs \<subseteq> rset

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma strongly_accepts_imp_accepts:
  "\<lbrakk>strongly_accepts \<F> S M; infinite M\<rbrakk> \<Longrightarrow> accepts \<F> S M"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>strongly_accepts \<F> S M; infinite M\<rbrakk> \<Longrightarrow> accepts \<F> S M
[PROOF STEP]
unfolding strongly_accepts_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>\<forall>N\<subseteq>M. rejects \<F> S N \<longrightarrow> finite N; infinite M\<rbrakk> \<Longrightarrow> accepts \<F> S M
[PROOF STEP]
by blast


[STATEMENT]
lemma kleene_trancl_induct:
  "A \<subseteq> X \<Longrightarrow> B O X \<subseteq> X \<Longrightarrow> X O C \<subseteq> X \<Longrightarrow> B\<^sup>+ O A O C\<^sup>+ \<subseteq> X"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>A \<subseteq> X; B O X \<subseteq> X; X O C \<subseteq> X\<rbrakk> \<Longrightarrow> B\<^sup>+ O A O C\<^sup>+ \<subseteq> X
[PROOF STEP]
using kleene_induct[of A X B C]
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>A \<subseteq> X; B O X \<subseteq> X; X O C \<subseteq> X\<rbrakk> \<Longrightarrow> B\<^sup>* O A O C\<^sup>* \<subseteq> X

goal (1 subgoal):
 1. \<lbrakk>A \<subseteq> X; B O X \<subseteq> X; X O C \<subseteq> X\<rbrakk> \<Longrightarrow> B\<^sup>+ O A O C\<^sup>+ \<subseteq> X
[PROOF STEP]
by (auto simp: rtrancl_eq_or_trancl)
     (meson relcomp.relcompI subsetD trancl_into_rtrancl)


[STATEMENT]
lemma convex_hull_finite:
  fixes S :: "'a::real_vector set"
  assumes "finite S"
  shows "convex hull S = {y. \<exists>u. (\<forall>x\<in>S. 0 \<le> u x) \<and> sum u S = 1 \<and> sum (\<lambda>x. u x *\<^sub>R x) S = y}"
  (is "?HULL = _")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. convex hull S = {y. \<exists>u. (\<forall>x\<in>S. 0 \<le> u x) \<and> sum u S = 1 \<and> (\<Sum>x\<in>S. u x *\<^sub>R x) = y}
[PROOF STEP]
proof (rule hull_unique [OF _ convexI]; clarify)
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x. x \<in> S \<Longrightarrow> \<exists>u. (\<forall>x\<in>S. 0 \<le> u x) \<and> sum u S = 1 \<and> (\<Sum>x\<in>S. u x *\<^sub>R x) = x
 2. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 3. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
fix x
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x. x \<in> S \<Longrightarrow> \<exists>u. (\<forall>x\<in>S. 0 \<le> u x) \<and> sum u S = 1 \<and> (\<Sum>x\<in>S. u x *\<^sub>R x) = x
 2. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 3. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
assume "x \<in> S"
[PROOF STATE]
proof (state)
this:
x \<in> S

goal (3 subgoals):
 1. \<And>x. x \<in> S \<Longrightarrow> \<exists>u. (\<forall>x\<in>S. 0 \<le> u x) \<and> sum u S = 1 \<and> (\<Sum>x\<in>S. u x *\<^sub>R x) = x
 2. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 3. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
x \<in> S
[PROOF STEP]
show "\<exists>u. (\<forall>x\<in>S. 0 \<le> u x) \<and> sum u S = 1 \<and> (\<Sum>x\<in>S. u x *\<^sub>R x) = x"
[PROOF STATE]
proof (prove)
using this:
x \<in> S

goal (1 subgoal):
 1. \<exists>u. (\<forall>x\<in>S. 0 \<le> u x) \<and> sum u S = 1 \<and> (\<Sum>x\<in>S. u x *\<^sub>R x) = x
[PROOF STEP]
by (rule_tac x="\<lambda>y. if x=y then 1 else 0" in exI) (auto simp: sum.delta'[OF assms] sum_delta''[OF assms])
[PROOF STATE]
proof (state)
this:
\<exists>u. (\<forall>x\<in>S. 0 \<le> u x) \<and> sum u S = 1 \<and> (\<Sum>x\<in>S. u x *\<^sub>R x) = x

goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
fix u v :: real
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
assume uv: "0 \<le> u" "0 \<le> v" "u + v = 1"
[PROOF STATE]
proof (state)
this:
0 \<le> u
0 \<le> v
u + v = 1

goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
fix ux
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
assume ux [rule_format]: "\<forall>x\<in>S. 0 \<le> ux x" "sum ux S = (1::real)"
[PROOF STATE]
proof (state)
this:
?x \<in> S \<Longrightarrow> 0 \<le> ux ?x
sum ux S = 1

goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
fix uy
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
assume uy [rule_format]: "\<forall>x\<in>S. 0 \<le> uy x" "sum uy S = (1::real)"
[PROOF STATE]
proof (state)
this:
?x \<in> S \<Longrightarrow> 0 \<le> uy ?x
sum uy S = 1

goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
have "0 \<le> u * ux x + v * uy x" if "x\<in>S" for x
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. 0 \<le> u * ux x + v * uy x
[PROOF STEP]
by (simp add: that uv ux(1) uy(1))
[PROOF STATE]
proof (state)
this:
?x \<in> S \<Longrightarrow> 0 \<le> u * ux ?x + v * uy ?x

goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
?x \<in> S \<Longrightarrow> 0 \<le> u * ux ?x + v * uy ?x

goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
have "(\<Sum>x\<in>S. u * ux x + v * uy x) = 1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Sum>x\<in>S. u * ux x + v * uy x) = 1
[PROOF STEP]
unfolding sum.distrib and sum_distrib_left[symmetric] ux(2) uy(2)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. u * 1 + v * 1 = 1
[PROOF STEP]
using uv(3)
[PROOF STATE]
proof (prove)
using this:
u + v = 1

goal (1 subgoal):
 1. u * 1 + v * 1 = 1
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<Sum>x\<in>S. u * ux x + v * uy x) = 1

goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(\<Sum>x\<in>S. u * ux x + v * uy x) = 1

goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
have "(\<Sum>x\<in>S. (u * ux x + v * uy x) *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ux x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. uy x *\<^sub>R x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Sum>x\<in>S. (u * ux x + v * uy x) *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ux x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. uy x *\<^sub>R x)
[PROOF STEP]
unfolding scaleR_left_distrib sum.distrib scaleR_scaleR[symmetric] scaleR_right.sum [symmetric]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. u *\<^sub>R (\<Sum>x\<in>S. ux x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. uy x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ux x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. uy x *\<^sub>R x)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<Sum>x\<in>S. (u * ux x + v * uy x) *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ux x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. uy x *\<^sub>R x)

goal (2 subgoals):
 1. \<And>x y u v ua ub. \<lbrakk>0 \<le> u; 0 \<le> v; u + v = 1; \<forall>x\<in>S. 0 \<le> ua x; \<forall>x\<in>S. 0 \<le> ub x; sum ua S = 1; sum ub S = 1\<rbrakk> \<Longrightarrow> \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ua x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. ub x *\<^sub>R x)
 2. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
?x \<in> S \<Longrightarrow> 0 \<le> u * ux ?x + v * uy ?x
(\<Sum>x\<in>S. u * ux x + v * uy x) = 1
(\<Sum>x\<in>S. (u * ux x + v * uy x) *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ux x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. uy x *\<^sub>R x)
[PROOF STEP]
show "\<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and>
             (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ux x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. uy x *\<^sub>R x)"
[PROOF STATE]
proof (prove)
using this:
?x \<in> S \<Longrightarrow> 0 \<le> u * ux ?x + v * uy ?x
(\<Sum>x\<in>S. u * ux x + v * uy x) = 1
(\<Sum>x\<in>S. (u * ux x + v * uy x) *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ux x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. uy x *\<^sub>R x)

goal (1 subgoal):
 1. \<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ux x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. uy x *\<^sub>R x)
[PROOF STEP]
by (rule_tac x="\<lambda>x. u * ux x + v * uy x" in exI, auto)
[PROOF STATE]
proof (state)
this:
\<exists>uc. (\<forall>x\<in>S. 0 \<le> uc x) \<and> sum uc S = 1 \<and> (\<Sum>x\<in>S. uc x *\<^sub>R x) = u *\<^sub>R (\<Sum>x\<in>S. ux x *\<^sub>R x) + v *\<^sub>R (\<Sum>x\<in>S. uy x *\<^sub>R x)

goal (1 subgoal):
 1. \<And>t' x u. \<lbrakk>S \<subseteq> t'; convex t'; \<forall>x\<in>S. 0 \<le> u x; sum u S = 1\<rbrakk> \<Longrightarrow> (\<Sum>x\<in>S. u x *\<^sub>R x) \<in> t'
[PROOF STEP]
qed (use assms in \<open>auto simp: convex_explicit\<close>)


[STATEMENT]
lemma hd_in_verts_if_set_eq: "set xs = verts G \<Longrightarrow> hd xs \<in> verts G"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. set xs = verts G \<Longrightarrow> hd xs \<in> verts G
[PROOF STEP]
using verts_nempty set_empty2[of xs]
[PROOF STATE]
proof (prove)
using this:
verts G \<noteq> {}
({} = set xs) = (xs = [])

goal (1 subgoal):
 1. set xs = verts G \<Longrightarrow> hd xs \<in> verts G
[PROOF STEP]
by force


[STATEMENT]
lemma measurable_sets:
  "f \<in> measurable M A \<Longrightarrow> S \<in> sets A \<Longrightarrow> f -` S \<inter> space M \<in> sets M"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>f \<in> M \<rightarrow>\<^sub>M A; S \<in> sets A\<rbrakk> \<Longrightarrow> f -` S \<inter> space M \<in> sets M
[PROOF STEP]
unfolding measurable_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>f \<in> {f \<in> space M \<rightarrow> space A. \<forall>y\<in>sets A. f -` y \<inter> space M \<in> sets M}; S \<in> sets A\<rbrakk> \<Longrightarrow> f -` S \<inter> space M \<in> sets M
[PROOF STEP]
by auto


[STATEMENT]
lemma eventually_filtercomap_nhds:
  "eventually P (filtercomap f (nhds x)) \<longleftrightarrow> (\<exists>S. open S \<and> x \<in> S \<and> (\<forall>x. f x \<in> S \<longrightarrow> P x))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. eventually P (filtercomap f (nhds x)) = (\<exists>S. open S \<and> x \<in> S \<and> (\<forall>x. f x \<in> S \<longrightarrow> P x))
[PROOF STEP]
unfolding eventually_filtercomap eventually_nhds
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<exists>Q. (\<exists>S. open S \<and> x \<in> S \<and> Ball S Q) \<and> (\<forall>x. Q (f x) \<longrightarrow> P x)) = (\<exists>S. open S \<and> x \<in> S \<and> (\<forall>x. f x \<in> S \<longrightarrow> P x))
[PROOF STEP]
by auto


[STATEMENT]
lemma gen_g_impl_rel_sv[relator_props]:
  "\<And>Rm Rv Re Rv0. \<lbrakk>single_valued Rv; single_valued Re; single_valued Rv0; single_valued Rm \<rbrakk> \<Longrightarrow>
  single_valued (\<langle>Rm,Rv,Re,Rv0\<rangle>gen_g_impl_rel_ext)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>Rm Rv Re Rv0. \<lbrakk>single_valued Rv; single_valued Re; single_valued Rv0; single_valued Rm\<rbrakk> \<Longrightarrow> single_valued (\<langle>Rm, Rv, Re, Rv0\<rangle>gen_g_impl_rel_ext)
[PROOF STEP]
unfolding gen_g_impl_rel_ext_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>Rm Rv Re Rv0. \<lbrakk>single_valued Rv; single_valued Re; single_valued Rv0; single_valued Rm\<rbrakk> \<Longrightarrow> single_valued {(\<lparr>gi_V = Vi, gi_E = Ei, gi_V0 = V0i, \<dots> = mi\<rparr>, \<lparr>g_V = V, g_E = E, g_V0 = V0, \<dots> = m\<rparr>) |Vi Ei V0i mi V E V0 m. (Vi, V) \<in> Rv \<and> (Ei, E) \<in> Re \<and> (V0i, V0) \<in> Rv0 \<and> (mi, m) \<in> Rm}
[PROOF STEP]
apply (auto
    intro!: single_valuedI
    dest: single_valuedD slg_rel_sv list_set_rel_sv)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma collision_within_less:
  assumes "s\<^sub>o \<le> ego.s_stop" "ego.s_stop < other.s_stop"
  shows "collision {0..} \<longleftrightarrow> collision {0 <..< min ego.t_stop other.t_stop}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. collision {0..} = collision {0<..<min ego.t_stop other.t_stop}
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. collision {0..} = collision {0<..<min ego.t_stop other.t_stop}
[PROOF STEP]
note collision_within_eq[OF assms]
[PROOF STATE]
proof (state)
this:
collision {0..} = collision {0..<min ego.t_stop other.t_stop}

goal (1 subgoal):
 1. collision {0..} = collision {0<..<min ego.t_stop other.t_stop}
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
collision {0..} = collision {0..<min ego.t_stop other.t_stop}

goal (1 subgoal):
 1. collision {0..} = collision {0<..<min ego.t_stop other.t_stop}
[PROOF STEP]
have "collision {0 ..< min ego.t_stop other.t_stop} \<longleftrightarrow>
    collision ({0 ..< min ego.t_stop other.t_stop} - {0})"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. collision {0..<min ego.t_stop other.t_stop} = collision ({0..<min ego.t_stop other.t_stop} - {0})
[PROOF STEP]
using hyps assms
[PROOF STATE]
proof (prove)
using this:
0 \<le> v\<^sub>e
0 \<le> v\<^sub>o
a\<^sub>e < 0
a\<^sub>o < 0
s\<^sub>e < s\<^sub>o
s\<^sub>o \<le> ego.s_stop
ego.s_stop < other.s_stop

goal (1 subgoal):
 1. collision {0..<min ego.t_stop other.t_stop} = collision ({0..<min ego.t_stop other.t_stop} - {0})
[PROOF STEP]
by (intro collision_excluded) (auto simp: ego.s_def other.s_def)
[PROOF STATE]
proof (state)
this:
collision {0..<min ego.t_stop other.t_stop} = collision ({0..<min ego.t_stop other.t_stop} - {0})

goal (1 subgoal):
 1. collision {0..} = collision {0<..<min ego.t_stop other.t_stop}
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
collision {0..<min ego.t_stop other.t_stop} = collision ({0..<min ego.t_stop other.t_stop} - {0})

goal (1 subgoal):
 1. collision {0..} = collision {0<..<min ego.t_stop other.t_stop}
[PROOF STEP]
have "{0 ..< min ego.t_stop other.t_stop} - {0} = {0 <..< min ego.t_stop other.t_stop}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {0..<min ego.t_stop other.t_stop} - {0} = {0<..<min ego.t_stop other.t_stop}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
{0..<min ego.t_stop other.t_stop} - {0} = {0<..<min ego.t_stop other.t_stop}

goal (1 subgoal):
 1. collision {0..} = collision {0<..<min ego.t_stop other.t_stop}
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
collision {0..} = collision {0<..<min ego.t_stop other.t_stop}
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
collision {0..} = collision {0<..<min ego.t_stop other.t_stop}

goal (1 subgoal):
 1. collision {0..} = collision {0<..<min ego.t_stop other.t_stop}
[PROOF STEP]
unfolding collision_def
[PROOF STATE]
proof (prove)
using this:
(\<exists>t\<in>{0..}. ego.s t = other.s t) = (\<exists>t\<in>{0<..<min ego.t_stop other.t_stop}. ego.s t = other.s t)

goal (1 subgoal):
 1. (\<exists>t\<in>{0..}. ego.s t = other.s t) = (\<exists>t\<in>{0<..<min ego.t_stop other.t_stop}. ego.s t = other.s t)
[PROOF STEP]
by (safe;
      force
        simp: ego.s_def other.s_def movement.p_def ego.t_stop_def other.t_stop_def
        split: if_splits)
[PROOF STATE]
proof (state)
this:
collision {0..} = collision {0<..<min ego.t_stop other.t_stop}

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma Limsup_greatest: "(\<And>P. eventually P F \<Longrightarrow> x \<le> (SUP x\<in>Collect P. f x)) \<Longrightarrow> Limsup F f \<ge> x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>P. eventually P F \<Longrightarrow> x \<le> Sup (f ` Collect P)) \<Longrightarrow> x \<le> Limsup F f
[PROOF STEP]
by (auto intro!: INF_greatest simp: Limsup_def)


[STATEMENT]
lemma star_of_approx_iff [simp]: "star_of x \<approx> star_of y \<longleftrightarrow> x = y"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (star_of x \<approx> star_of y) = (x = y)
[PROOF STEP]
by (metis approx_def right_minus_eq star_of_Infinitesimal_iff_0 star_of_simps(2))


[STATEMENT]
lemma integrable_map_pmf_eq [simp]:
  fixes g :: "'a \<Rightarrow> 'b::{banach, second_countable_topology}"
  shows "integrable (map_pmf f p) g \<longleftrightarrow> integrable (measure_pmf p) (\<lambda>x. g (f x))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. integrable (measure_pmf (map_pmf f p)) g = integrable (measure_pmf p) (\<lambda>x. g (f x))
[PROOF STEP]
by (subst map_pmf_rep_eq, subst integrable_distr_eq) auto


[STATEMENT]
lemma adj_idem2:
  fixes f :: "'a::order \<Rightarrow> 'b::preorder"
  shows "f \<stileturn> g \<Longrightarrow> (g \<circ> f) \<circ> (g \<circ> f) = g \<circ> f"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. f \<stileturn> g \<Longrightarrow> g \<circ> f \<circ> (g \<circ> f) = g \<circ> f
[PROOF STEP]
by (simp add: adj_cancel_eq2 rewriteL_comp_comp)


[STATEMENT]
lemma st_inverse: "x \<in> HFinite \<Longrightarrow> st x \<noteq> 0 \<Longrightarrow> st (inverse x) = inverse (st x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>x \<in> HFinite; st x \<noteq> 0\<rbrakk> \<Longrightarrow> st (inverse x) = inverse (st x)
[PROOF STEP]
by (simp add: approx_inverse st_SReal st_approx_self st_not_Infinitesimal st_unique)


[STATEMENT]
lemma hnfSummandsRemove:
  fixes P :: pi
  and   Q :: pi

  assumes "P \<in> summands Q"
  and     "uhnf Q"

  shows "(summands Q) - {P' | P'. P' \<in> summands Q \<and> P' \<equiv>\<^sub>e P} = (summands Q) - {P}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. summands Q - {P' |P'. P' \<in> summands Q \<and> P' \<equiv>\<^sub>e P} = summands Q - {P}
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
P \<in> summands Q
uhnf Q

goal (1 subgoal):
 1. summands Q - {P' |P'. P' \<in> summands Q \<and> P' \<equiv>\<^sub>e P} = summands Q - {P}
[PROOF STEP]
by(auto intro: Refl simp add: uhnf_def)


[STATEMENT]
lemma HomCHomOp: "HomC\<^bsub>C\<^esub>[g,X] = Hom\<^bsub>Op C\<^esub>[X,g]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. HomC\<^bsub>C\<^esub>[g,X] = Hom\<^bsub>Op C\<^esub>[X,g]
[PROOF STEP]
apply (simp add:  HomFtorContra'_def
                      HomFtor'_def HomFtorMapContra_def HomFtorMap_def mor2ZF_Op ZF2mor_Op Hom_Op)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ZFfun (Hom\<^bsub>C\<^esub> cod\<^bsub>C\<^esub> g X) (Hom\<^bsub>C\<^esub> dom\<^bsub>C\<^esub> g X) (\<lambda>f. m2z\<^bsub>C\<^esub>g ;;\<^bsub>C\<^esub> (z2m\<^bsub>C\<^esub>f)) = ZFfun (Hom\<^bsub>C\<^esub> dom\<^bsub>Op C\<^esub> g X) (Hom\<^bsub>C\<^esub> cod\<^bsub>Op C\<^esub> g X) (\<lambda>f. m2z\<^bsub>C\<^esub>z2m\<^bsub>C\<^esub>f ;;\<^bsub>Op C\<^esub> g)
[PROOF STEP]
by (simp add: OppositeCategory_def)


[STATEMENT]
lemma of_nat_less_top: "of_nat i < (top::ennreal)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. of_nat i < top
[PROOF STEP]
using less_le_trans[of "of_nat i" "of_nat (Suc i)" "top::ennreal"]
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>of_nat i < of_nat (Suc i); of_nat (Suc i) \<le> top\<rbrakk> \<Longrightarrow> of_nat i < top

goal (1 subgoal):
 1. of_nat i < top
[PROOF STEP]
by simp


[STATEMENT]
lemma bit_word_rotl_iff [bit_simps]:
  \<open>bit (word_rotl m w) n \<longleftrightarrow>
    n < LENGTH('a) \<and> bit w ((n + (LENGTH('a) - m mod LENGTH('a))) mod LENGTH('a))\<close>
  for w :: \<open>'a::len word\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. bit (word_rotl m w) n = (n < LENGTH('a) \<and> bit w ((n + (LENGTH('a) - m mod LENGTH('a))) mod LENGTH('a)))
[PROOF STEP]
by (simp add: word_rotl_eq_word_rotr bit_word_rotr_iff)


[STATEMENT]
lemma invertible_mat[simp]: "c \<noteq> 0 \<Longrightarrow> invertible (mat c)" for c :: "'a::division_ring"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. c \<noteq> (0::'a) \<Longrightarrow> invertible (mat c)
[PROOF STEP]
using invertibleI mat_inverse_simps(1) mat_inverse_simps(2)
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?A ** ?B = mat (1::?'a); ?B ** ?A = mat (1::?'a)\<rbrakk> \<Longrightarrow> invertible ?A
?c \<noteq> (0::?'a) \<Longrightarrow> mat (inverse ?c) ** mat ?c = mat (1::?'a)
?c \<noteq> (0::?'a) \<Longrightarrow> mat ?c ** mat (inverse ?c) = mat (1::?'a)

goal (1 subgoal):
 1. c \<noteq> (0::'a) \<Longrightarrow> invertible (mat c)
[PROOF STEP]
by blast


[STATEMENT]
lemma le_st_iff: "(F \<le> G) = (\<forall>x. fun F x \<le> fun G x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (F \<le> G) = (\<forall>x. fun F x \<le> fun G x)
[PROOF STEP]
by transfer (rule less_eq_st_rep_iff)


[STATEMENT]
lemma completely_specified_io_targets :
  assumes "completely_specified M"
  shows "\<forall> q \<in> io_targets M io (initial M) . \<forall> x \<in> (inputs M) . \<exists> t \<in> transitions M . t_source t = q \<and> t_input t = x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>q\<in>io_targets M io (FSM.initial M). \<forall>x\<in>FSM.inputs M. \<exists>t\<in>FSM.transitions M. t_source t = q \<and> t_input t = x
[PROOF STEP]
by (meson assms completely_specified.elims(2) io_targets_states subsetD)


[STATEMENT]
lemma prod_sum_distrib_lists:
  fixes P and S :: "'a set" and f :: "'a \<Rightarrow> _::semiring_0" assumes "finite S"
  shows "(\<Sum>ms\<in>{ms. set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P i (ms!i))}. \<Prod>x<n. f (ms ! x)) =
         (\<Prod>i<n. \<Sum>m\<in>{m\<in>S. P i m}. f m)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P i (ms ! i)). \<Prod>x<n. f (ms ! x)) = (\<Prod>i<n. \<Sum>m | m \<in> S \<and> P i m. f m)
[PROOF STEP]
proof (induct n arbitrary: P)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>P. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = 0 \<and> (\<forall>i<0. P i (ms ! i)). \<Prod>x<0. f (ms ! x)) = (\<Prod>i<0. sum f {m \<in> S. P i m})
 2. \<And>n P. (\<And>P. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P i (ms ! i)). \<Prod>x<n. f (ms ! x)) = (\<Prod>i<n. sum f {m \<in> S. P i m})) \<Longrightarrow> (\<Sum>ms | set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i)). \<Prod>x<Suc n. f (ms ! x)) = (\<Prod>i<Suc n. sum f {m \<in> S. P i m})
[PROOF STEP]
case 0
[PROOF STATE]
proof (state)
this:

goal (2 subgoals):
 1. \<And>P. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = 0 \<and> (\<forall>i<0. P i (ms ! i)). \<Prod>x<0. f (ms ! x)) = (\<Prod>i<0. sum f {m \<in> S. P i m})
 2. \<And>n P. (\<And>P. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P i (ms ! i)). \<Prod>x<n. f (ms ! x)) = (\<Prod>i<n. sum f {m \<in> S. P i m})) \<Longrightarrow> (\<Sum>ms | set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i)). \<Prod>x<Suc n. f (ms ! x)) = (\<Prod>i<Suc n. sum f {m \<in> S. P i m})
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = 0 \<and> (\<forall>i<0. P i (ms ! i)). \<Prod>x<0. f (ms ! x)) = (\<Prod>i<0. sum f {m \<in> S. P i m})
[PROOF STEP]
by (simp cong: conj_cong)
[PROOF STATE]
proof (state)
this:
(\<Sum>ms | set ms \<subseteq> S \<and> length ms = 0 \<and> (\<forall>i<0. P i (ms ! i)). \<Prod>x<0. f (ms ! x)) = (\<Prod>i<0. sum f {m \<in> S. P i m})

goal (1 subgoal):
 1. \<And>n P. (\<And>P. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P i (ms ! i)). \<Prod>x<n. f (ms ! x)) = (\<Prod>i<n. sum f {m \<in> S. P i m})) \<Longrightarrow> (\<Sum>ms | set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i)). \<Prod>x<Suc n. f (ms ! x)) = (\<Prod>i<Suc n. sum f {m \<in> S. P i m})
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>n P. (\<And>P. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P i (ms ! i)). \<Prod>x<n. f (ms ! x)) = (\<Prod>i<n. sum f {m \<in> S. P i m})) \<Longrightarrow> (\<Sum>ms | set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i)). \<Prod>x<Suc n. f (ms ! x)) = (\<Prod>i<Suc n. sum f {m \<in> S. P i m})
[PROOF STEP]
case (Suc n)
[PROOF STATE]
proof (state)
this:
(\<Sum>ms | set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. ?P i (ms ! i)). \<Prod>x<n. f (ms ! x)) = (\<Prod>i<n. sum f {m \<in> S. ?P i m})

goal (1 subgoal):
 1. \<And>n P. (\<And>P. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P i (ms ! i)). \<Prod>x<n. f (ms ! x)) = (\<Prod>i<n. sum f {m \<in> S. P i m})) \<Longrightarrow> (\<Sum>ms | set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i)). \<Prod>x<Suc n. f (ms ! x)) = (\<Prod>i<Suc n. sum f {m \<in> S. P i m})
[PROOF STEP]
have *: "{ms. set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i))} =
    (\<lambda>(xs, x). x#xs) ` ({ms. set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P (Suc i) (ms ! i))} \<times> {m\<in>S. P 0 m})"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {ms. set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i))} = (\<lambda>(xs, x). x # xs) ` ({ms. set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P (Suc i) (ms ! i))} \<times> {m \<in> S. P 0 m})
[PROOF STEP]
apply (auto simp: image_iff length_Suc_conv)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>y ys. \<lbrakk>\<forall>i<Suc (length ys). P i ((y # ys) ! i); n = length ys; y \<in> S; set ys \<subseteq> S\<rbrakk> \<Longrightarrow> P 0 y
 2. \<And>y ys i. \<lbrakk>\<forall>i<Suc (length ys). P i ((y # ys) ! i); n = length ys; y \<in> S; set ys \<subseteq> S; i < length ys\<rbrakk> \<Longrightarrow> P (Suc i) (ys ! i)
 3. \<And>a b i. \<lbrakk>set a \<subseteq> S; b \<in> S; P 0 b; \<forall>i<length a. P (Suc i) (a ! i); n = length a; i < Suc (length a)\<rbrakk> \<Longrightarrow> P i ((b # a) ! i)
[PROOF STEP]
apply force+
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b i. \<lbrakk>set a \<subseteq> S; b \<in> S; P 0 b; \<forall>i<length a. P (Suc i) (a ! i); n = length a; i < Suc (length a)\<rbrakk> \<Longrightarrow> P i ((b # a) ! i)
[PROOF STEP]
apply (case_tac i)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>a b i. \<lbrakk>set a \<subseteq> S; b \<in> S; P 0 b; \<forall>i<length a. P (Suc i) (a ! i); n = length a; i < Suc (length a); i = 0\<rbrakk> \<Longrightarrow> P i ((b # a) ! i)
 2. \<And>a b i nat. \<lbrakk>set a \<subseteq> S; b \<in> S; P 0 b; \<forall>i<length a. P (Suc i) (a ! i); n = length a; i < Suc (length a); i = Suc nat\<rbrakk> \<Longrightarrow> P i ((b # a) ! i)
[PROOF STEP]
by force+
[PROOF STATE]
proof (state)
this:
{ms. set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i))} = (\<lambda>(xs, x). x # xs) ` ({ms. set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P (Suc i) (ms ! i))} \<times> {m \<in> S. P 0 m})

goal (1 subgoal):
 1. \<And>n P. (\<And>P. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P i (ms ! i)). \<Prod>x<n. f (ms ! x)) = (\<Prod>i<n. sum f {m \<in> S. P i m})) \<Longrightarrow> (\<Sum>ms | set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i)). \<Prod>x<Suc n. f (ms ! x)) = (\<Prod>i<Suc n. sum f {m \<in> S. P i m})
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Sum>ms | set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i)). \<Prod>x<Suc n. f (ms ! x)) = (\<Prod>i<Suc n. sum f {m \<in> S. P i m})
[PROOF STEP]
unfolding *
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Sum>ms\<in>(\<lambda>(xs, x). x # xs) ` ({ms. set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P (Suc i) (ms ! i))} \<times> {m \<in> S. P 0 m}). \<Prod>x<Suc n. f (ms ! x)) = (\<Prod>i<Suc n. sum f {m \<in> S. P i m})
[PROOF STEP]
using Suc[of "\<lambda>i. P (Suc i)"]
[PROOF STATE]
proof (prove)
using this:
(\<Sum>ms | set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P (Suc i) (ms ! i)). \<Prod>x<n. f (ms ! x)) = (\<Prod>i<n. sum f {m \<in> S. P (Suc i) m})

goal (1 subgoal):
 1. (\<Sum>ms\<in>(\<lambda>(xs, x). x # xs) ` ({ms. set ms \<subseteq> S \<and> length ms = n \<and> (\<forall>i<n. P (Suc i) (ms ! i))} \<times> {m \<in> S. P 0 m}). \<Prod>x<Suc n. f (ms ! x)) = (\<Prod>i<Suc n. sum f {m \<in> S. P i m})
[PROOF STEP]
by (simp add: sum.reindex sum_cartesian_product'
      lessThan_Suc_eq_insert_0 prod.reindex sum_distrib_right[symmetric] sum_distrib_left[symmetric])
[PROOF STATE]
proof (state)
this:
(\<Sum>ms | set ms \<subseteq> S \<and> length ms = Suc n \<and> (\<forall>i<Suc n. P i (ms ! i)). \<Prod>x<Suc n. f (ms ! x)) = (\<Prod>i<Suc n. sum f {m \<in> S. P i m})

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma l4_3_1:
  assumes "Bet A B C" and
    "Bet A' B' C'" and
    "Cong A B A' B'" and
    "Cong A C A' C'"
  shows "Cong B C B' C'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Cong B C B' C'
[PROOF STEP]
by (meson assms(1) assms(2) assms(3) assms(4) between_symmetry cong_4321 l4_3)


[STATEMENT]
lemma isCont_cot' [simp,continuous_intros]:
  "isCont f a \<Longrightarrow> sin (f a) \<noteq> 0 \<Longrightarrow> isCont (\<lambda>x. cot (f x)) a"
  for a :: "'a::{real_normed_field,banach}" and f :: "'a \<Rightarrow> 'a"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>isCont f a; sin (f a) \<noteq> (0::'a)\<rbrakk> \<Longrightarrow> isCont (\<lambda>x. cot (f x)) a
[PROOF STEP]
by (rule isCont_o2 [OF _ isCont_cot])


[STATEMENT]
lemma eventually_filtercomap_nhds:
  "eventually P (filtercomap f (nhds x)) \<longleftrightarrow> (\<exists>S. open S \<and> x \<in> S \<and> (\<forall>x. f x \<in> S \<longrightarrow> P x))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. eventually P (filtercomap f (nhds x)) = (\<exists>S. open S \<and> x \<in> S \<and> (\<forall>x. f x \<in> S \<longrightarrow> P x))
[PROOF STEP]
unfolding eventually_filtercomap eventually_nhds
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<exists>Q. (\<exists>S. open S \<and> x \<in> S \<and> Ball S Q) \<and> (\<forall>x. Q (f x) \<longrightarrow> P x)) = (\<exists>S. open S \<and> x \<in> S \<and> (\<forall>x. f x \<in> S \<longrightarrow> P x))
[PROOF STEP]
by auto


[STATEMENT]
lemma SIod_sub_sub:
     "\<lbrakk>S \<subseteq> T; T \<subseteq> carrier D\<rbrakk> \<Longrightarrow> SIod (SIod D T) S = SIod D S"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>S \<subseteq> T; T \<subseteq> carrier D\<rbrakk> \<Longrightarrow> SIod (SIod D T) S = SIod D S
[PROOF STEP]
apply (simp add:SIod_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>S \<subseteq> T; T \<subseteq> carrier D\<rbrakk> \<Longrightarrow> {(a, b). (a, b) \<in> rel D \<and> a \<in> T \<and> b \<in> T \<and> a \<in> S \<and> b \<in> S} = {(a, b). (a, b) \<in> rel D \<and> a \<in> S \<and> b \<in> S}
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma One_Redex:
  assumes a: "App (Lam [x].t) s \<longrightarrow>\<^sub>1 r" "x\<sharp>(s,r)"
  shows "(\<exists>t' s'. r = App (Lam [x].t') s' \<and> t \<longrightarrow>\<^sub>1 t' \<and> s \<longrightarrow>\<^sub>1 s') \<or>
         (\<exists>t' s'. r = t'[x::=s'] \<and> t \<longrightarrow>\<^sub>1 t' \<and> s \<longrightarrow>\<^sub>1 s')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<exists>t' s'. r = App (Lam [x].t') s' \<and>  t \<longrightarrow>\<^sub>1 t' \<and>  s \<longrightarrow>\<^sub>1 s') \<or> (\<exists>t' s'. r = t'[x::=s'] \<and>  t \<longrightarrow>\<^sub>1 t' \<and>  s \<longrightarrow>\<^sub>1 s')
[PROOF STEP]
using a
[PROOF STATE]
proof (prove)
using this:
 App (Lam [x].t) s \<longrightarrow>\<^sub>1 r
x \<sharp> (s, r)

goal (1 subgoal):
 1. (\<exists>t' s'. r = App (Lam [x].t') s' \<and>  t \<longrightarrow>\<^sub>1 t' \<and>  s \<longrightarrow>\<^sub>1 s') \<or> (\<exists>t' s'. r = t'[x::=s'] \<and>  t \<longrightarrow>\<^sub>1 t' \<and>  s \<longrightarrow>\<^sub>1 s')
[PROOF STEP]
by (cases rule: One.strong_cases)
   (auto dest: One_Lam simp add: lam.inject abs_fresh alpha fresh_prod)


[STATEMENT]
lemma a2_eq [simp]: "ad (x \<cdot> d y) = ad (x \<cdot> y)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ad (x \<cdot> d y) = ad (x \<cdot> y)
[PROOF STEP]
proof (rule order.antisym)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. ad (x \<cdot> d y) \<le> ad (x \<cdot> y)
 2. ad (x \<cdot> y) \<le> ad (x \<cdot> d y)
[PROOF STEP]
show "ad (x \<cdot> y) \<le> ad (x \<cdot> d y)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ad (x \<cdot> y) \<le> ad (x \<cdot> d y)
[PROOF STEP]
by (simp add: ans_d_def local.less_eq_def)
[PROOF STATE]
proof (state)
this:
ad (x \<cdot> y) \<le> ad (x \<cdot> d y)

goal (1 subgoal):
 1. ad (x \<cdot> d y) \<le> ad (x \<cdot> y)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ad (x \<cdot> d y) \<le> ad (x \<cdot> y)
[PROOF STEP]
show "ad (x \<cdot> d y) \<le> ad (x \<cdot> y)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ad (x \<cdot> d y) \<le> ad (x \<cdot> y)
[PROOF STEP]
by (metis a_gla1 a_mul_d ans1 d1_a mult_assoc)
[PROOF STATE]
proof (state)
this:
ad (x \<cdot> d y) \<le> ad (x \<cdot> y)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma conj_distrib3: "c \<sqsubseteq> c;c \<Longrightarrow> c \<iinter> (d\<^sub>0 ; d\<^sub>1) \<sqsubseteq> (c \<iinter> d\<^sub>0);(c \<iinter> d\<^sub>1)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. c \<sqsubseteq> c ; c \<Longrightarrow> c \<iinter> d\<^sub>0 ; d\<^sub>1 \<sqsubseteq> (c \<iinter> d\<^sub>0) ; (c \<iinter> d\<^sub>1)
variables:
(\<iinter>), (;) :: 'b \<Rightarrow> 'b \<Rightarrow> 'b
c, d\<^sub>0, d\<^sub>1 :: 'b
type variables:
'b :: refinement_lattice
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. c \<sqsubseteq> c ; c \<Longrightarrow> c \<iinter> d\<^sub>0 ; d\<^sub>1 \<sqsubseteq> (c \<iinter> d\<^sub>0) ; (c \<iinter> d\<^sub>1)
variables:
(\<iinter>), (;) :: 'b \<Rightarrow> 'b \<Rightarrow> 'b
c, d\<^sub>0, d\<^sub>1 :: 'b
type variables:
'b :: refinement_lattice
[PROOF STEP]
assume "c \<sqsubseteq> c;c"
[PROOF STATE]
proof (state)
this:
(c::'b::refinement_lattice) \<sqsubseteq> c ; c

goal (1 subgoal):
 1. c \<sqsubseteq> c ; c \<Longrightarrow> c \<iinter> d\<^sub>0 ; d\<^sub>1 \<sqsubseteq> (c \<iinter> d\<^sub>0) ; (c \<iinter> d\<^sub>1)
variables:
(\<iinter>), (;) :: 'b \<Rightarrow> 'b \<Rightarrow> 'b
c, d\<^sub>0, d\<^sub>1 :: 'b
type variables:
'b :: refinement_lattice
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(c::'b::refinement_lattice) \<sqsubseteq> c ; c
[PROOF STEP]
have "c \<iinter> (d\<^sub>0;d\<^sub>1) \<sqsubseteq> (c;c) \<iinter> (d\<^sub>0;d\<^sub>1)"
[PROOF STATE]
proof (prove)
using this:
(c::'b::refinement_lattice) \<sqsubseteq> c ; c

goal (1 subgoal):
 1. c \<iinter> d\<^sub>0 ; d\<^sub>1 \<sqsubseteq> c ; c \<iinter> d\<^sub>0 ; d\<^sub>1
variables:
c, d\<^sub>0, d\<^sub>1 :: 'b
(\<iinter>), (;) :: 'b \<Rightarrow> 'b \<Rightarrow> 'b
type variables:
'b :: refinement_lattice
[PROOF STEP]
by (metis conj_mono order.refl)
[PROOF STATE]
proof (state)
this:
(c::'b::refinement_lattice) \<iinter> (d\<^sub>0::'b::refinement_lattice) ; (d\<^sub>1::'b::refinement_lattice) \<sqsubseteq> c ; c \<iinter> d\<^sub>0 ; d\<^sub>1

goal (1 subgoal):
 1. c \<sqsubseteq> c ; c \<Longrightarrow> c \<iinter> d\<^sub>0 ; d\<^sub>1 \<sqsubseteq> (c \<iinter> d\<^sub>0) ; (c \<iinter> d\<^sub>1)
variables:
(\<iinter>), (;) :: 'b \<Rightarrow> 'b \<Rightarrow> 'b
c, d\<^sub>0, d\<^sub>1 :: 'b
type variables:
'b :: refinement_lattice
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
(c::'b::refinement_lattice) \<iinter> (d\<^sub>0::'b::refinement_lattice) ; (d\<^sub>1::'b::refinement_lattice) \<sqsubseteq> c ; c \<iinter> d\<^sub>0 ; d\<^sub>1

goal (1 subgoal):
 1. c \<iinter> d\<^sub>0 ; d\<^sub>1 \<sqsubseteq> (c \<iinter> d\<^sub>0) ; (c \<iinter> d\<^sub>1)
variables:
c, d\<^sub>0, d\<^sub>1 :: 'b
(\<iinter>), (;) :: 'b \<Rightarrow> 'b \<Rightarrow> 'b
type variables:
'b :: refinement_lattice
[PROOF STEP]
by (metis sequential_interchange refine_trans)
[PROOF STATE]
proof (state)
this:
(c::'b::refinement_lattice) \<iinter> (d\<^sub>0::'b::refinement_lattice) ; (d\<^sub>1::'b::refinement_lattice) \<sqsubseteq> (c \<iinter> d\<^sub>0) ; (c \<iinter> d\<^sub>1)

goal:
No subgoals!
variables:
(\<iinter>), (;) :: 'b \<Rightarrow> 'b \<Rightarrow> 'b
c, d\<^sub>0, d\<^sub>1 :: 'b
type variables:
'b :: refinement_lattice
[PROOF STEP]
qed