[STATEMENT]
lemma Qp_funs_add'':
  assumes "f \<in> (carrier (Fun\<^bsub>n\<^esub> Q\<^sub>p))"
  assumes "g \<in> (carrier (Fun\<^bsub>n\<^esub> Q\<^sub>p))"
  shows "(f \<oplus>\<^bsub>Fun\<^bsub>n\<^esub> Q\<^sub>p\<^esub> g) = (\<lambda> x \<in> carrier (Q\<^sub>p\<^bsup>n\<^esup>). f x \<oplus>\<^bsub>Q\<^sub>p\<^esub> g x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. f \<oplus>\<^bsub>function_ring (carrier (Q\<^sub>p\<^bsup>n\<^esup>)) Q\<^sub>p\<^esub> g = (\<lambda>x\<in>carrier (Q\<^sub>p\<^bsup>n\<^esup>). f x \<oplus> g x)
[PROOF STEP]
unfolding function_ring_def function_add_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. f \<oplus>\<^bsub>\<lparr>carrier = carrier (Q\<^sub>p\<^bsup>n\<^esup>) \<rightarrow>\<^sub>E carrier Q\<^sub>p, monoid.mult = function_mult (carrier (Q\<^sub>p\<^bsup>n\<^esup>)) Q\<^sub>p, one = function_one (carrier (Q\<^sub>p\<^bsup>n\<^esup>)) Q\<^sub>p, zero = function_zero (carrier (Q\<^sub>p\<^bsup>n\<^esup>)) Q\<^sub>p, add = \<lambda>f g. \<lambda>x\<in>carrier (Q\<^sub>p\<^bsup>n\<^esup>). f x \<oplus> g x, smult = function_scalar_mult (carrier (Q\<^sub>p\<^bsup>n\<^esup>)) Q\<^sub>p\<rparr>\<^esub> g = (\<lambda>x\<in>carrier (Q\<^sub>p\<^bsup>n\<^esup>). f x \<oplus> g x)
[PROOF STEP]
using ring_record_simps(12)
[PROOF STATE]
proof (prove)
using this:
(\<oplus>\<^bsub>\<lparr>carrier = ?carrier, monoid.mult = ?mult, one = ?one, zero = ?zero, add = ?add, \<dots> = ?more\<rparr>\<^esub>) = ?add

goal (1 subgoal):
 1. f \<oplus>\<^bsub>\<lparr>carrier = carrier (Q\<^sub>p\<^bsup>n\<^esup>) \<rightarrow>\<^sub>E carrier Q\<^sub>p, monoid.mult = function_mult (carrier (Q\<^sub>p\<^bsup>n\<^esup>)) Q\<^sub>p, one = function_one (carrier (Q\<^sub>p\<^bsup>n\<^esup>)) Q\<^sub>p, zero = function_zero (carrier (Q\<^sub>p\<^bsup>n\<^esup>)) Q\<^sub>p, add = \<lambda>f g. \<lambda>x\<in>carrier (Q\<^sub>p\<^bsup>n\<^esup>). f x \<oplus> g x, smult = function_scalar_mult (carrier (Q\<^sub>p\<^bsup>n\<^esup>)) Q\<^sub>p\<rparr>\<^esub> g = (\<lambda>x\<in>carrier (Q\<^sub>p\<^bsup>n\<^esup>). f x \<oplus> g x)
[PROOF STEP]
by metis


[STATEMENT]
lemma card_Mi_le_floor_div_2_Vi:
  assumes "OSC L E \<and> matching V E M \<and> i > 1"
  shows "card (matching_i i V E M L) \<le> (card (V_i i V E M L)) div 2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. card (matching_i i V E M L) \<le> card (V_i i V E M L) div 2
[PROOF STEP]
using card_Mi_twice_card_Vi[OF assms]
[PROOF STATE]
proof (prove)
using this:
2 * card (matching_i i V E M L) = card (V_i i V E M L)

goal (1 subgoal):
 1. card (matching_i i V E M L) \<le> card (V_i i V E M L) div 2
[PROOF STEP]
by arith


[STATEMENT]
lemma orthogonal_sum:
  fixes v :: "real^'n"
  assumes "\<And>w. w\<in>S \<Longrightarrow> orthogonal v w"
  shows "orthogonal v (\<Sum>w\<in>S. c w *s w)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. orthogonal v (\<Sum>w\<in>S. c w *s w)
[PROOF STEP]
by (metis (no_types, lifting) assms orthogonal_clauses(1,2) orthogonal_rvsum scalar_equiv sum.infinite)


[STATEMENT]
theorem admissability_conditions:
"\<r> * (\<k> - 1) = \<Lambda> * (\<v> - 1)"
"\<v> * \<r> = \<b> * \<k>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<r> * (\<k> - 1) = \<Lambda> * (\<v> - 1) &&& \<v> * \<r> = \<b> * \<k>
[PROOF STEP]
using necessary_condition_one necessary_condition_two
[PROOF STATE]
proof (prove)
using this:
\<r> * (\<k> - 1) = \<Lambda> * (\<v> - 1)
\<v> * \<r> = \<b> * \<k>

goal (1 subgoal):
 1. \<r> * (\<k> - 1) = \<Lambda> * (\<v> - 1) &&& \<v> * \<r> = \<b> * \<k>
[PROOF STEP]
by auto


[STATEMENT]
lemma dvd_by_all: "\<forall>M::nat. \<exists>N>0. \<forall>m. 0 < m \<and> m \<le> M \<longrightarrow> m dvd N"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>M. \<exists>N>0. \<forall>m. 0 < m \<and> m \<le> M \<longrightarrow> m dvd N
[PROOF STEP]
using dvd_by_all2
[PROOF STATE]
proof (prove)
using this:
\<exists>N>0. \<forall>m. 0 < m \<and> m \<le> ?M \<longrightarrow> m dvd N

goal (1 subgoal):
 1. \<forall>M. \<exists>N>0. \<forall>m. 0 < m \<and> m \<le> M \<longrightarrow> m dvd N
[PROOF STEP]
by blast


[STATEMENT]
lemma aless_zless: "(ant m < ant n) = (m<n)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (ant m < ant n) = (m < n)
[PROOF STEP]
by (simp add: ale ant_def linorder_not_le [symmetric])


[STATEMENT]
lemma DERIV_fun_sin: "DERIV g x :> m \<Longrightarrow> DERIV (\<lambda>x. sin (g x)) x :> cos (g x) * m"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (g has_field_derivative m) (at x) \<Longrightarrow> ((\<lambda>x. sin (g x)) has_field_derivative cos (g x) * m) (at x)
[PROOF STEP]
by (fact derivative_intros)


[STATEMENT]
lemma unitary11_inv:
  assumes "k \<noteq> 0" and "M = k *\<^sub>s\<^sub>m (a, b, cnj b, cnj a)" and "mat_det (a, b, cnj b, cnj a) \<noteq> 0"
  shows "\<exists> k' a' b'. k' \<noteq> 0 \<and> mat_inv M = k' *\<^sub>s\<^sub>m (a', b', cnj b', cnj a') \<and> mat_det (a', b', cnj b', cnj a') \<noteq> 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>k' a' b'. k' \<noteq> 0 \<and> mat_inv M = k' *\<^sub>s\<^sub>m (a', b', cnj b', cnj a') \<and> mat_det (a', b', cnj b', cnj a') \<noteq> 0
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
k \<noteq> 0
M = k *\<^sub>s\<^sub>m (a, b, cnj b, cnj a)
mat_det (a, b, cnj b, cnj a) \<noteq> 0

goal (1 subgoal):
 1. \<exists>k' a' b'. k' \<noteq> 0 \<and> mat_inv M = k' *\<^sub>s\<^sub>m (a', b', cnj b', cnj a') \<and> mat_det (a', b', cnj b', cnj a') \<noteq> 0
[PROOF STEP]
by (subst assms, subst mat_inv_mult_sm[OF assms(1)])
     (rule_tac x="1/(k * mat_det (a, b, cnj b, cnj a))" in exI, rule_tac x="cnj a" in exI, rule_tac x="-b" in exI, simp add: field_simps)


[STATEMENT]
lemma eventually_eventually:
  "eventually (\<lambda>y. eventually P (nhds y)) (nhds x) = eventually P (nhds x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>\<^sub>F y in nhds x. eventually P (nhds y)) = eventually P (nhds x)
[PROOF STEP]
by (auto simp: eventually_nhds)


[STATEMENT]
theorem p5: "(p \<or> q) \<longrightarrow> (p \<or> r) \<Longrightarrow> p \<or> (q \<longrightarrow> r)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. p \<or> q \<longrightarrow> p \<or> r \<Longrightarrow> p \<or> (q \<longrightarrow> r)
[PROOF STEP]
by auto2


[STATEMENT]
lemma vconverse_vtimes: "(A \<times>\<^sub>\<circ> B)\<inverse>\<^sub>\<circ> = (B \<times>\<^sub>\<circ> A)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (A \<times>\<^sub>\<circ> B)\<inverse>\<^sub>\<circ> = B \<times>\<^sub>\<circ> A
[PROOF STEP]
by auto


[STATEMENT]
lemma trans_ile_iadd1: "i \<le> (j::enat) \<Longrightarrow> i \<le> j + m"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. i \<le> j \<Longrightarrow> i \<le> j + m
[PROOF STEP]
by (rule order_trans[OF _ ile_add1])


[STATEMENT]
lemma size_mset_tree: "tree_invar t \<Longrightarrow>
  size (tree_to_multiset t) = (2::nat)^(rank t)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. tree_invar t \<Longrightarrow> size (tree_to_multiset t) = 2 ^ rank t
[PROOF STEP]
by (cases t) (simp only: tree_rank_estimate BinomialTree.sel(3))


[STATEMENT]
lemma (in psemicategory) psmc_smc_prod_vunion_Comp:
  assumes "vdisjnt J K"
    and "J \<subseteq>\<^sub>\<circ> I"
    and "K \<subseteq>\<^sub>\<circ> I"
    and "g : b \<mapsto>\<^bsub>(\<Prod>\<^sub>S\<^sub>M\<^sub>Cj\<in>\<^sub>\<circ>J. \<AA> j)\<^esub> c"
    and "g' : b' \<mapsto>\<^bsub>(\<Prod>\<^sub>S\<^sub>M\<^sub>Ck\<in>\<^sub>\<circ>K. \<AA> k)\<^esub> c'"
    and "f : a \<mapsto>\<^bsub>(\<Prod>\<^sub>S\<^sub>M\<^sub>Cj\<in>\<^sub>\<circ>J. \<AA> j)\<^esub> b"
    and "f' : a' \<mapsto>\<^bsub>(\<Prod>\<^sub>S\<^sub>M\<^sub>Ck\<in>\<^sub>\<circ>K. \<AA> k)\<^esub> b'"
  shows "(g \<circ>\<^sub>A\<^bsub>(\<Prod>\<^sub>S\<^sub>M\<^sub>Cj\<in>\<^sub>\<circ>J. \<AA> j)\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>(\<Prod>\<^sub>S\<^sub>M\<^sub>Cj\<in>\<^sub>\<circ>K. \<AA> j)\<^esub> f') =
    g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>(\<Prod>\<^sub>S\<^sub>M\<^sub>Cj\<in>\<^sub>\<circ>J \<union>\<^sub>\<circ> K. \<AA> j)\<^esub> f \<union>\<^sub>\<circ> f'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
interpret J\<AA>: psemicategory \<alpha> J \<AA>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. psemicategory \<alpha> J \<AA>
[PROOF STEP]
using assms(2)
[PROOF STATE]
proof (prove)
using this:
J \<subseteq>\<^sub>\<circ> I

goal (1 subgoal):
 1. psemicategory \<alpha> J \<AA>
[PROOF STEP]
by (simp add: psmc_vsubset_index_psemicategory)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
interpret K\<AA>: psemicategory \<alpha> K \<AA>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. psemicategory \<alpha> K \<AA>
[PROOF STEP]
using assms(3)
[PROOF STATE]
proof (prove)
using this:
K \<subseteq>\<^sub>\<circ> I

goal (1 subgoal):
 1. psemicategory \<alpha> K \<AA>
[PROOF STEP]
by (simp add: psmc_vsubset_index_psemicategory)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
interpret JK\<AA>: psemicategory \<alpha> \<open>J \<union>\<^sub>\<circ> K\<close> \<AA>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. psemicategory \<alpha> (J \<union>\<^sub>\<circ> K) \<AA>
[PROOF STEP]
using assms(2,3)
[PROOF STATE]
proof (prove)
using this:
J \<subseteq>\<^sub>\<circ> I
K \<subseteq>\<^sub>\<circ> I

goal (1 subgoal):
 1. psemicategory \<alpha> (J \<union>\<^sub>\<circ> K) \<AA>
[PROOF STEP]
by (simp add: psmc_vsubset_index_psemicategory)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
interpret J\<AA>': semicategory \<alpha> \<open>smc_prod J \<AA>\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. semicategory \<alpha> (smc_prod J \<AA>)
[PROOF STEP]
by (rule J\<AA>.psmc_semicategory_smc_prod)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
interpret K\<AA>': semicategory \<alpha> \<open>smc_prod K \<AA>\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. semicategory \<alpha> (smc_prod K \<AA>)
[PROOF STEP]
by (rule K\<AA>.psmc_semicategory_smc_prod)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
interpret JK\<AA>': semicategory \<alpha> \<open>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. semicategory \<alpha> (smc_prod (J \<union>\<^sub>\<circ> K) \<AA>)
[PROOF STEP]
by (rule JK\<AA>.psmc_semicategory_smc_prod)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
note gg' = psmc_smc_prod_vunion_is_arr[OF assms(1-3,4,5)]
    and ff' = psmc_smc_prod_vunion_is_arr[OF assms(1-3,6,7)]
[PROOF STATE]
proof (state)
this:
g \<union>\<^sub>\<circ> g' : b \<union>\<^sub>\<circ> b' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> c \<union>\<^sub>\<circ> c'
f \<union>\<^sub>\<circ> f' : a \<union>\<^sub>\<circ> a' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> b \<union>\<^sub>\<circ> b'

goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
note gD = J\<AA>.smc_prod_is_arrD[OF assms(4)]
    and g'D = K\<AA>.smc_prod_is_arrD[OF assms(5)]
    and fD = J\<AA>.smc_prod_is_arrD[OF assms(6)]
    and f'D = K\<AA>.smc_prod_is_arrD[OF assms(7)]
[PROOF STATE]
proof (state)
this:
vsv g
\<D>\<^sub>\<circ> g = J
vsv b
\<D>\<^sub>\<circ> b = J
vsv c
\<D>\<^sub>\<circ> c = J
?i \<in>\<^sub>\<circ> J \<Longrightarrow> g\<lparr>?i\<rparr> : b\<lparr>?i\<rparr> \<mapsto>\<^bsub>\<AA> ?i\<^esub> c\<lparr>?i\<rparr>
vsv g'
\<D>\<^sub>\<circ> g' = K
vsv b'
\<D>\<^sub>\<circ> b' = K
vsv c'
\<D>\<^sub>\<circ> c' = K
?i \<in>\<^sub>\<circ> K \<Longrightarrow> g'\<lparr>?i\<rparr> : b'\<lparr>?i\<rparr> \<mapsto>\<^bsub>\<AA> ?i\<^esub> c'\<lparr>?i\<rparr>
vsv f
\<D>\<^sub>\<circ> f = J
vsv a
\<D>\<^sub>\<circ> a = J
vsv b
\<D>\<^sub>\<circ> b = J
?i \<in>\<^sub>\<circ> J \<Longrightarrow> f\<lparr>?i\<rparr> : a\<lparr>?i\<rparr> \<mapsto>\<^bsub>\<AA> ?i\<^esub> b\<lparr>?i\<rparr>
vsv f'
\<D>\<^sub>\<circ> f' = K
vsv a'
\<D>\<^sub>\<circ> a' = K
vsv b'
\<D>\<^sub>\<circ> b' = K
?i \<in>\<^sub>\<circ> K \<Longrightarrow> f'\<lparr>?i\<rparr> : a'\<lparr>?i\<rparr> \<mapsto>\<^bsub>\<AA> ?i\<^esub> b'\<lparr>?i\<rparr>

goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
from assms(4,6)
[PROOF STATE]
proof (chain)
picking this:
g : b \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c
f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> b
[PROOF STEP]
have gf:
    "g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>(\<Prod>\<^sub>S\<^sub>M\<^sub>Cj\<in>\<^sub>\<circ>J. \<AA> j)\<^esub> c"
[PROOF STATE]
proof (prove)
using this:
g : b \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c
f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> b

goal (1 subgoal):
 1. g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c
[PROOF STEP]
by (auto intro: smc_cs_intros)
[PROOF STATE]
proof (state)
this:
g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c

goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
from assms(5,7)
[PROOF STATE]
proof (chain)
picking this:
g' : b' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'
f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> b'
[PROOF STEP]
have g'f':
    "g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>(\<Prod>\<^sub>S\<^sub>M\<^sub>Ck\<in>\<^sub>\<circ>K. \<AA> k)\<^esub> c'"
[PROOF STATE]
proof (prove)
using this:
g' : b' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'
f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> b'

goal (1 subgoal):
 1. g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'
[PROOF STEP]
by (auto intro: smc_cs_intros)
[PROOF STATE]
proof (state)
this:
g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'

goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
from gf
[PROOF STATE]
proof (chain)
picking this:
g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c
[PROOF STEP]
have "g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f \<in>\<^sub>\<circ> smc_prod J \<AA>\<lparr>Arr\<rparr>"
[PROOF STATE]
proof (prove)
using this:
g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c

goal (1 subgoal):
 1. g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f \<in>\<^sub>\<circ> smc_prod J \<AA>\<lparr>Arr\<rparr>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f \<in>\<^sub>\<circ> smc_prod J \<AA>\<lparr>Arr\<rparr>

goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
from g'f'
[PROOF STATE]
proof (chain)
picking this:
g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'
[PROOF STEP]
have "g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' \<in>\<^sub>\<circ> smc_prod K \<AA>\<lparr>Arr\<rparr>"
[PROOF STATE]
proof (prove)
using this:
g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'

goal (1 subgoal):
 1. g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' \<in>\<^sub>\<circ> smc_prod K \<AA>\<lparr>Arr\<rparr>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' \<in>\<^sub>\<circ> smc_prod K \<AA>\<lparr>Arr\<rparr>

goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
from gg' ff'
[PROOF STATE]
proof (chain)
picking this:
g \<union>\<^sub>\<circ> g' : b \<union>\<^sub>\<circ> b' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> c \<union>\<^sub>\<circ> c'
f \<union>\<^sub>\<circ> f' : a \<union>\<^sub>\<circ> a' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> b \<union>\<^sub>\<circ> b'
[PROOF STEP]
have gg'_ff':
    "g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f' :
      a \<union>\<^sub>\<circ> a' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> c \<union>\<^sub>\<circ> c'"
[PROOF STATE]
proof (prove)
using this:
g \<union>\<^sub>\<circ> g' : b \<union>\<^sub>\<circ> b' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> c \<union>\<^sub>\<circ> c'
f \<union>\<^sub>\<circ> f' : a \<union>\<^sub>\<circ> a' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> b \<union>\<^sub>\<circ> b'

goal (1 subgoal):
 1. g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f' : a \<union>\<^sub>\<circ> a' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> c \<union>\<^sub>\<circ> c'
[PROOF STEP]
by (simp add: smc_cs_intros)
[PROOF STATE]
proof (state)
this:
g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f' : a \<union>\<^sub>\<circ> a' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> c \<union>\<^sub>\<circ> c'

goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'
[PROOF STEP]
proof(rule smc_prod_Arr_cong[of _ \<open>J \<union>\<^sub>\<circ> K\<close> \<AA>])
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') \<in>\<^sub>\<circ> smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<lparr>Arr\<rparr>
 2. g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f' \<in>\<^sub>\<circ> smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<lparr>Arr\<rparr>
 3. \<And>i. i \<in>\<^sub>\<circ> J \<union>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
from gf g'f' assms(1)
[PROOF STATE]
proof (chain)
picking this:
g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c
g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'
J \<inter>\<^sub>\<circ> K = []\<^sub>\<circ>
[PROOF STEP]
show
      "(g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') \<in>\<^sub>\<circ>
        smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<lparr>Arr\<rparr>"
[PROOF STATE]
proof (prove)
using this:
g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c
g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'
J \<inter>\<^sub>\<circ> K = []\<^sub>\<circ>

goal (1 subgoal):
 1. (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') \<in>\<^sub>\<circ> smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<lparr>Arr\<rparr>
[PROOF STEP]
by (auto intro: smc_prod_vunion_Arr_in_Arr)
[PROOF STATE]
proof (state)
this:
(g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') \<in>\<^sub>\<circ> smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<lparr>Arr\<rparr>

goal (2 subgoals):
 1. g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f' \<in>\<^sub>\<circ> smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<lparr>Arr\<rparr>
 2. \<And>i. i \<in>\<^sub>\<circ> J \<union>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
from gg'_ff'
[PROOF STATE]
proof (chain)
picking this:
g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f' : a \<union>\<^sub>\<circ> a' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> c \<union>\<^sub>\<circ> c'
[PROOF STEP]
show
      "g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f' \<in>\<^sub>\<circ> smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<lparr>Arr\<rparr>"
[PROOF STATE]
proof (prove)
using this:
g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f' : a \<union>\<^sub>\<circ> a' \<mapsto>\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> c \<union>\<^sub>\<circ> c'

goal (1 subgoal):
 1. g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f' \<in>\<^sub>\<circ> smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<lparr>Arr\<rparr>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f' \<in>\<^sub>\<circ> smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<lparr>Arr\<rparr>

goal (1 subgoal):
 1. \<And>i. i \<in>\<^sub>\<circ> J \<union>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
fix i
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>i. i \<in>\<^sub>\<circ> J \<union>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
assume prems: "i \<in>\<^sub>\<circ> J \<union>\<^sub>\<circ> K"
[PROOF STATE]
proof (state)
this:
i \<in>\<^sub>\<circ> J \<union>\<^sub>\<circ> K

goal (1 subgoal):
 1. \<And>i. i \<in>\<^sub>\<circ> J \<union>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
i \<in>\<^sub>\<circ> J \<union>\<^sub>\<circ> K
[PROOF STEP]
consider (iJ) \<open>i \<in>\<^sub>\<circ> J\<close> | (iK) \<open>i \<in>\<^sub>\<circ> K\<close>
[PROOF STATE]
proof (prove)
using this:
i \<in>\<^sub>\<circ> J \<union>\<^sub>\<circ> K

goal (1 subgoal):
 1. \<lbrakk>i \<in>\<^sub>\<circ> J \<Longrightarrow> thesis; i \<in>\<^sub>\<circ> K \<Longrightarrow> thesis\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<lbrakk>i \<in>\<^sub>\<circ> J \<Longrightarrow> ?thesis; i \<in>\<^sub>\<circ> K \<Longrightarrow> ?thesis\<rbrakk> \<Longrightarrow> ?thesis

goal (1 subgoal):
 1. \<And>i. i \<in>\<^sub>\<circ> J \<union>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>i \<in>\<^sub>\<circ> J \<Longrightarrow> ?thesis; i \<in>\<^sub>\<circ> K \<Longrightarrow> ?thesis\<rbrakk> \<Longrightarrow> ?thesis
[PROOF STEP]
show
      "((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> =
        (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>i \<in>\<^sub>\<circ> J \<Longrightarrow> ?thesis; i \<in>\<^sub>\<circ> K \<Longrightarrow> ?thesis\<rbrakk> \<Longrightarrow> ?thesis

goal (1 subgoal):
 1. ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
proof cases
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. i \<in>\<^sub>\<circ> J \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
 2. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
case iJ
[PROOF STATE]
proof (state)
this:
i \<in>\<^sub>\<circ> J

goal (2 subgoals):
 1. i \<in>\<^sub>\<circ> J \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
 2. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
have [simp]:
        "((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> =
          g\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f\<lparr>i\<rparr>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = g\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f\<lparr>i\<rparr>
[PROOF STEP]
proof
        (
          fold smc_prod_Comp_app_component[OF assms(4,6) iJ],
          rule vsv_vunion_app_left
        )
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. vsv (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)
 2. vsv (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')
 3. \<D>\<^sub>\<circ> (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<inter>\<^sub>\<circ> \<D>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = []\<^sub>\<circ>
 4. i \<in>\<^sub>\<circ> \<D>\<^sub>\<circ> (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)
[PROOF STEP]
from gf
[PROOF STATE]
proof (chain)
picking this:
g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c
[PROOF STEP]
show "vsv (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)"
[PROOF STATE]
proof (prove)
using this:
g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c

goal (1 subgoal):
 1. vsv (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
vsv (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)

goal (3 subgoals):
 1. vsv (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')
 2. \<D>\<^sub>\<circ> (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<inter>\<^sub>\<circ> \<D>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = []\<^sub>\<circ>
 3. i \<in>\<^sub>\<circ> \<D>\<^sub>\<circ> (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)
[PROOF STEP]
from g'f'
[PROOF STATE]
proof (chain)
picking this:
g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'
[PROOF STEP]
show "vsv (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')"
[PROOF STATE]
proof (prove)
using this:
g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'

goal (1 subgoal):
 1. vsv (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
vsv (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')

goal (2 subgoals):
 1. \<D>\<^sub>\<circ> (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<inter>\<^sub>\<circ> \<D>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = []\<^sub>\<circ>
 2. i \<in>\<^sub>\<circ> \<D>\<^sub>\<circ> (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)
[PROOF STEP]
qed
        (
          use assms(4-7) in
            \<open>simp_all add: iJ assms(1) smc_prod_Comp_app_vdomain\<close>
        )
[PROOF STATE]
proof (state)
this:
((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = g\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f\<lparr>i\<rparr>

goal (2 subgoals):
 1. i \<in>\<^sub>\<circ> J \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
 2. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
have gg'_i: "(g \<union>\<^sub>\<circ> g')\<lparr>i\<rparr> = g\<lparr>i\<rparr>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (g \<union>\<^sub>\<circ> g')\<lparr>i\<rparr> = g\<lparr>i\<rparr>
[PROOF STEP]
by (simp add: iJ assms(1) gD(1,2) g'D(1,2))
[PROOF STATE]
proof (state)
this:
(g \<union>\<^sub>\<circ> g')\<lparr>i\<rparr> = g\<lparr>i\<rparr>

goal (2 subgoals):
 1. i \<in>\<^sub>\<circ> J \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
 2. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
have ff'_i: "(f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = f\<lparr>i\<rparr>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = f\<lparr>i\<rparr>
[PROOF STEP]
by (simp add: iJ assms(1) fD(1,2) f'D(1,2))
[PROOF STATE]
proof (state)
this:
(f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = f\<lparr>i\<rparr>

goal (2 subgoals):
 1. i \<in>\<^sub>\<circ> J \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
 2. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
have [simp]:
        "(g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = g\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f\<lparr>i\<rparr>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = g\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f\<lparr>i\<rparr>
[PROOF STEP]
by (fold gg'_i ff'_i)
          (rule smc_prod_Comp_app_component[OF gg' ff' prems])
[PROOF STATE]
proof (state)
this:
(g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = g\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f\<lparr>i\<rparr>

goal (2 subgoals):
 1. i \<in>\<^sub>\<circ> J \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
 2. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>

goal (1 subgoal):
 1. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
case iK
[PROOF STATE]
proof (state)
this:
i \<in>\<^sub>\<circ> K

goal (1 subgoal):
 1. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
have [simp]:
        "((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> =
          g'\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f'\<lparr>i\<rparr>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = g'\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f'\<lparr>i\<rparr>
[PROOF STEP]
proof
        (
          fold smc_prod_Comp_app_component[OF assms(5,7) iK],
          rule vsv_vunion_app_right
        )
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. vsv (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)
 2. vsv (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')
 3. \<D>\<^sub>\<circ> (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<inter>\<^sub>\<circ> \<D>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = []\<^sub>\<circ>
 4. i \<in>\<^sub>\<circ> \<D>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')
[PROOF STEP]
from gf
[PROOF STATE]
proof (chain)
picking this:
g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c
[PROOF STEP]
show "vsv (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)"
[PROOF STATE]
proof (prove)
using this:
g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f : a \<mapsto>\<^bsub>smc_prod J \<AA>\<^esub> c

goal (1 subgoal):
 1. vsv (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
vsv (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f)

goal (3 subgoals):
 1. vsv (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')
 2. \<D>\<^sub>\<circ> (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<inter>\<^sub>\<circ> \<D>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = []\<^sub>\<circ>
 3. i \<in>\<^sub>\<circ> \<D>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')
[PROOF STEP]
from g'f'
[PROOF STATE]
proof (chain)
picking this:
g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'
[PROOF STEP]
show "vsv (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')"
[PROOF STATE]
proof (prove)
using this:
g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f' : a' \<mapsto>\<^bsub>smc_prod K \<AA>\<^esub> c'

goal (1 subgoal):
 1. vsv (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
vsv (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')

goal (2 subgoals):
 1. \<D>\<^sub>\<circ> (g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<inter>\<^sub>\<circ> \<D>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = []\<^sub>\<circ>
 2. i \<in>\<^sub>\<circ> \<D>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f')
[PROOF STEP]
qed
        (
          use assms(4-7) in
            \<open>simp_all add: iK smc_prod_Comp_app_vdomain assms(1)\<close>
        )
[PROOF STATE]
proof (state)
this:
((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = g'\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f'\<lparr>i\<rparr>

goal (1 subgoal):
 1. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
have gg'_i: "(g \<union>\<^sub>\<circ> g')\<lparr>i\<rparr> = g'\<lparr>i\<rparr>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (g \<union>\<^sub>\<circ> g')\<lparr>i\<rparr> = g'\<lparr>i\<rparr>
[PROOF STEP]
by (simp add: iK assms(1) gD(1,2) g'D(1,2))
[PROOF STATE]
proof (state)
this:
(g \<union>\<^sub>\<circ> g')\<lparr>i\<rparr> = g'\<lparr>i\<rparr>

goal (1 subgoal):
 1. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
have ff'_i: "(f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = f'\<lparr>i\<rparr>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = f'\<lparr>i\<rparr>
[PROOF STEP]
by (simp add: iK assms(1) fD(1,2) f'D(1,2))
[PROOF STATE]
proof (state)
this:
(f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = f'\<lparr>i\<rparr>

goal (1 subgoal):
 1. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
have [simp]:
        "(g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = g'\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f'\<lparr>i\<rparr>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = g'\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f'\<lparr>i\<rparr>
[PROOF STEP]
by (fold gg'_i ff'_i)
          (rule smc_prod_Comp_app_component[OF gg' ff' prems])
[PROOF STATE]
proof (state)
this:
(g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr> = g'\<lparr>i\<rparr> \<circ>\<^sub>A\<^bsub>\<AA> i\<^esub> f'\<lparr>i\<rparr>

goal (1 subgoal):
 1. i \<in>\<^sub>\<circ> K \<Longrightarrow> ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
((g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f'))\<lparr>i\<rparr> = (g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f')\<lparr>i\<rparr>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(g \<circ>\<^sub>A\<^bsub>smc_prod J \<AA>\<^esub> f) \<union>\<^sub>\<circ> (g' \<circ>\<^sub>A\<^bsub>smc_prod K \<AA>\<^esub> f') = g \<union>\<^sub>\<circ> g' \<circ>\<^sub>A\<^bsub>smc_prod (J \<union>\<^sub>\<circ> K) \<AA>\<^esub> f \<union>\<^sub>\<circ> f'

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma matrix_to_iarray_minus[code_unfold]: "matrix_to_iarray (A - B)
  = (matrix_to_iarray A) - (matrix_to_iarray B)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. matrix_to_iarray (A - B) = matrix_to_iarray A - matrix_to_iarray B
[PROOF STEP]
unfolding matrix_to_iarray_def o_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. IArray (map (\<lambda>x. vec_to_iarray ((A - B) $ mod_type_class.from_nat x)) [0..<CARD('c)]) = IArray (map (\<lambda>x. vec_to_iarray (A $ mod_type_class.from_nat x)) [0..<CARD('c)]) - IArray (map (\<lambda>x. vec_to_iarray (B $ mod_type_class.from_nat x)) [0..<CARD('c)])
[PROOF STEP]
by (simp add: minus_iarray_def Let_def vec_to_iarray_minus)


[STATEMENT]
lemma parts_union_2:
 "parts H \<union> parts H' \<subseteq> parts (H \<union> H')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. parts H \<union> parts H' \<subseteq> parts (H \<union> H')
[PROOF STEP]
by (rule subsetI, erule UnE, erule_tac [!] parts.induct, auto)


[STATEMENT]
lemma lemmaA_3_11: "(M -s T) \<inter>s S = (M \<inter>s S) -s T"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. M -s T \<inter>s S = M \<inter>s S -s T
[PROOF STEP]
unfolding diff_def intersect_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {#x \<in># {#x \<in># M. x \<notin> T#}. x \<in> S#} = {#x \<in># {#x \<in># M. x \<in> S#}. x \<notin> T#}
[PROOF STEP]
by (rule multiset_eqI) simp


[STATEMENT]
lemma (in weak_partial_order) lless_cong_r [trans]:
  assumes xy: "x \<sqsubset> y"
    and  yy': "y .= y'"
    and carr: "x \<in> carrier L" "y \<in> carrier L" "y' \<in> carrier L"
  shows "x \<sqsubset> y'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x \<sqsubset> y'
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
x \<sqsubset> y
y .= y'
x \<in> carrier L
y \<in> carrier L
y' \<in> carrier L

goal (1 subgoal):
 1. x \<sqsubset> y'
[PROOF STEP]
unfolding lless_def
[PROOF STATE]
proof (prove)
using this:
x \<sqsubseteq> y \<and> x .\<noteq> y
y .= y'
x \<in> carrier L
y \<in> carrier L
y' \<in> carrier L

goal (1 subgoal):
 1. x \<sqsubseteq> y' \<and> x .\<noteq> y'
[PROOF STEP]
by (auto intro: trans sym)


[STATEMENT]
lemma real_root_pow_pos2 [simp]: "0 < n \<Longrightarrow> 0 \<le> x \<Longrightarrow> root n x ^ n = x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>0 < n; 0 \<le> x\<rbrakk> \<Longrightarrow> root n x ^ n = x
[PROOF STEP]
by (auto simp add: order_le_less real_root_pow_pos)


[STATEMENT]
lemma Gamma_complex_of_real: "Gamma (complex_of_real x) = complex_of_real (Gamma x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Gamma (complex_of_real x) = complex_of_real (Gamma x)
[PROOF STEP]
unfolding Gamma_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. inverse (rGamma (complex_of_real x)) = complex_of_real (inverse (rGamma x))
[PROOF STEP]
by (simp add: rGamma_complex_of_real)


[STATEMENT]
lemma fimage_vunion_right: "r `\<^sub>\<bullet> (A \<union>\<^sub>\<circ> B) = r `\<^sub>\<bullet> A \<union>\<^sub>\<circ> r `\<^sub>\<bullet> B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. r `\<^sub>\<bullet> (A \<union>\<^sub>\<circ> B) = r `\<^sub>\<bullet> A \<union>\<^sub>\<circ> r `\<^sub>\<bullet> B
[PROOF STEP]
by auto


[STATEMENT]
lemma quantify_nfa_well_formed_aut:
  assumes "wf_nfa N (Suc n)"
  and "v \<le> n"
  shows "wf_nfa (quantify_nfa v N) n"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. wf_nfa (quantify_nfa v N) n
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. wf_nfa (quantify_nfa v N) n
[PROOF STEP]
from assms
[PROOF STATE]
proof (chain)
picking this:
wf_nfa N (Suc n)
v \<le> n
[PROOF STEP]
have 1: "list_all (bddh (Suc n)) (fst N)" and 2: "list_all (bdd_all (nfa_is_node N)) (fst N)"
[PROOF STATE]
proof (prove)
using this:
wf_nfa N (Suc n)
v \<le> n

goal (1 subgoal):
 1. list_all (bddh (Suc n)) (fst N) &&& list_all (bdd_all (nfa_is_node N)) (fst N)
[PROOF STEP]
by (simp add: wf_nfa_def)+
[PROOF STATE]
proof (state)
this:
list_all (bddh (Suc n)) (fst N)
list_all (bdd_all (nfa_is_node N)) (fst N)

goal (1 subgoal):
 1. wf_nfa (quantify_nfa v N) n
[PROOF STEP]
from 1 assms
[PROOF STATE]
proof (chain)
picking this:
list_all (bddh (Suc n)) (fst N)
wf_nfa N (Suc n)
v \<le> n
[PROOF STEP]
have 3: "list_all (bddh n) (fst (quantify_nfa v N))"
[PROOF STATE]
proof (prove)
using this:
list_all (bddh (Suc n)) (fst N)
wf_nfa N (Suc n)
v \<le> n

goal (1 subgoal):
 1. list_all (bddh n) (fst (quantify_nfa v N))
[PROOF STEP]
by (simp add: quantify_nfa_def bddh_quantify_bdd list_all_iff split_beta)
[PROOF STATE]
proof (state)
this:
list_all (bddh n) (fst (quantify_nfa v N))

goal (1 subgoal):
 1. wf_nfa (quantify_nfa v N) n
[PROOF STEP]
from 2
[PROOF STATE]
proof (chain)
picking this:
list_all (bdd_all (nfa_is_node N)) (fst N)
[PROOF STEP]
have "list_all (bdd_all (nfa_is_node N)) (fst (quantify_nfa v N))"
[PROOF STATE]
proof (prove)
using this:
list_all (bdd_all (nfa_is_node N)) (fst N)

goal (1 subgoal):
 1. list_all (bdd_all (nfa_is_node N)) (fst (quantify_nfa v N))
[PROOF STEP]
by (simp add: quantify_bdd_is_node list_all_iff split_beta quantify_nfa_def)
[PROOF STATE]
proof (state)
this:
list_all (bdd_all (nfa_is_node N)) (fst (quantify_nfa v N))

goal (1 subgoal):
 1. wf_nfa (quantify_nfa v N) n
[PROOF STEP]
hence "list_all (bdd_all (nfa_is_node (quantify_nfa v N))) (fst (quantify_nfa v N))"
[PROOF STATE]
proof (prove)
using this:
list_all (bdd_all (nfa_is_node N)) (fst (quantify_nfa v N))

goal (1 subgoal):
 1. list_all (bdd_all (nfa_is_node (quantify_nfa v N))) (fst (quantify_nfa v N))
[PROOF STEP]
by (simp add: quantify_nfa_def split_beta nfa_is_node_def)
[PROOF STATE]
proof (state)
this:
list_all (bdd_all (nfa_is_node (quantify_nfa v N))) (fst (quantify_nfa v N))

goal (1 subgoal):
 1. wf_nfa (quantify_nfa v N) n
[PROOF STEP]
with 3 assms
[PROOF STATE]
proof (chain)
picking this:
list_all (bddh n) (fst (quantify_nfa v N))
wf_nfa N (Suc n)
v \<le> n
list_all (bdd_all (nfa_is_node (quantify_nfa v N))) (fst (quantify_nfa v N))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
list_all (bddh n) (fst (quantify_nfa v N))
wf_nfa N (Suc n)
v \<le> n
list_all (bdd_all (nfa_is_node (quantify_nfa v N))) (fst (quantify_nfa v N))

goal (1 subgoal):
 1. wf_nfa (quantify_nfa v N) n
[PROOF STEP]
by (simp add: wf_nfa_def quantify_nfa_def split_beta)
[PROOF STATE]
proof (state)
this:
wf_nfa (quantify_nfa v N) n

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma lin_bound_argument:
  fixes A :: "('a :: {field}) mat"
  assumes "distinct (cols A)"
  assumes "A \<in> carrier_mat nr nc"
  assumes "\<And> f. A *\<^sub>v vec nc (\<lambda>i. f (col A i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in> (set (cols A)). f v = 0"
  shows "nc \<le> nr"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. nc \<le> nr
[PROOF STEP]
proof (intro lin_bound_arg_general[of "A" nr nc] vec_space.lin_comb_mat_lin_indpt_vs, simp_all add: assms)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. set (cols A) \<subseteq> carrier_vec nr
 2. \<And>f. mat_of_cols nr (cols A) *\<^sub>v vec (dim_col A) (\<lambda>i. f (cols A ! i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). f v = (0::'a)
[PROOF STEP]
show "set (cols A) \<subseteq> carrier_vec nr"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. set (cols A) \<subseteq> carrier_vec nr
[PROOF STEP]
using assms cols_dim
[PROOF STATE]
proof (prove)
using this:
distinct (cols A)
A \<in> carrier_mat nr nc
A *\<^sub>v vec nc (\<lambda>i. ?f (col A i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). ?f v = (0::'a)
set (cols ?A) \<subseteq> carrier_vec (dim_row ?A)

goal (1 subgoal):
 1. set (cols A) \<subseteq> carrier_vec nr
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
set (cols A) \<subseteq> carrier_vec nr

goal (1 subgoal):
 1. \<And>f. mat_of_cols nr (cols A) *\<^sub>v vec (dim_col A) (\<lambda>i. f (cols A ! i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). f v = (0::'a)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>f. mat_of_cols nr (cols A) *\<^sub>v vec (dim_col A) (\<lambda>i. f (cols A ! i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). f v = (0::'a)
[PROOF STEP]
have mA: "mat_of_cols nr (cols A) = A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. mat_of_cols nr (cols A) = A
[PROOF STEP]
using mat_of_cols_def assms
[PROOF STATE]
proof (prove)
using this:
mat_of_cols ?n ?cs = mat ?n (length ?cs) (\<lambda>(i, j). ?cs ! j $ i)
distinct (cols A)
A \<in> carrier_mat nr nc
A *\<^sub>v vec nc (\<lambda>i. ?f (col A i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). ?f v = (0::'a)

goal (1 subgoal):
 1. mat_of_cols nr (cols A) = A
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
mat_of_cols nr (cols A) = A

goal (1 subgoal):
 1. \<And>f. mat_of_cols nr (cols A) *\<^sub>v vec (dim_col A) (\<lambda>i. f (cols A ! i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). f v = (0::'a)
[PROOF STEP]
have "\<And> f. vec (dim_col A) (\<lambda>i. f (cols A ! i)) = vec nc (\<lambda>i. f (col A i))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>f. vec (dim_col A) (\<lambda>i. f (cols A ! i)) = vec nc (\<lambda>i. f (col A i))
[PROOF STEP]
proof (intro eq_vecI, simp_all add: assms)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>f i. i < nc \<Longrightarrow> vec (dim_col A) (\<lambda>i. f (cols A ! i)) $ i = f (col A i)
 2. dim_col A = nc
[PROOF STEP]
show "\<And>f i. i < nc \<Longrightarrow> vec (dim_col A) (\<lambda>i. f (cols A ! i)) $ i = f (col A i)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>f i. i < nc \<Longrightarrow> vec (dim_col A) (\<lambda>i. f (cols A ! i)) $ i = f (col A i)
[PROOF STEP]
using assms(2)
[PROOF STATE]
proof (prove)
using this:
A \<in> carrier_mat nr nc

goal (1 subgoal):
 1. \<And>f i. i < nc \<Longrightarrow> vec (dim_col A) (\<lambda>i. f (cols A ! i)) $ i = f (col A i)
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
?i < nc \<Longrightarrow> vec (dim_col A) (\<lambda>i. ?f (cols A ! i)) $ ?i = ?f (col A ?i)

goal (1 subgoal):
 1. dim_col A = nc
[PROOF STEP]
show "dim_col A = nc "
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. dim_col A = nc
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
distinct (cols A)
A \<in> carrier_mat nr nc
A *\<^sub>v vec nc (\<lambda>i. ?f (col A i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). ?f v = (0::'a)

goal (1 subgoal):
 1. dim_col A = nc
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
dim_col A = nc

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
vec (dim_col A) (\<lambda>i. ?f (cols A ! i)) = vec nc (\<lambda>i. ?f (col A i))

goal (1 subgoal):
 1. \<And>f. mat_of_cols nr (cols A) *\<^sub>v vec (dim_col A) (\<lambda>i. f (cols A ! i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). f v = (0::'a)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
vec (dim_col A) (\<lambda>i. ?f (cols A ! i)) = vec nc (\<lambda>i. ?f (col A i))
[PROOF STEP]
show "\<And>f. mat_of_cols nr (cols A) *\<^sub>v vec (dim_col A) (\<lambda>i. f (cols A ! i)) = 0\<^sub>v nr \<Longrightarrow>
      \<forall>v\<in>set (cols A). f v = 0"
[PROOF STATE]
proof (prove)
using this:
vec (dim_col A) (\<lambda>i. ?f (cols A ! i)) = vec nc (\<lambda>i. ?f (col A i))

goal (1 subgoal):
 1. \<And>f. mat_of_cols nr (cols A) *\<^sub>v vec (dim_col A) (\<lambda>i. f (cols A ! i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). f v = (0::'a)
[PROOF STEP]
using mA assms(3)
[PROOF STATE]
proof (prove)
using this:
vec (dim_col A) (\<lambda>i. ?f (cols A ! i)) = vec nc (\<lambda>i. ?f (col A i))
mat_of_cols nr (cols A) = A
A *\<^sub>v vec nc (\<lambda>i. ?f (col A i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). ?f v = (0::'a)

goal (1 subgoal):
 1. \<And>f. mat_of_cols nr (cols A) *\<^sub>v vec (dim_col A) (\<lambda>i. f (cols A ! i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). f v = (0::'a)
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
mat_of_cols nr (cols A) *\<^sub>v vec (dim_col A) (\<lambda>i. ?f1 (cols A ! i)) = 0\<^sub>v nr \<Longrightarrow> \<forall>v\<in>set (cols A). ?f1 v = (0::'a)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma list_succ_nth:
  assumes "distinct xs" "n < length xs" shows "list_succ xs (xs ! n) = xs ! (Suc n mod length xs)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. list_succ xs (xs ! n) = xs ! (Suc n mod length xs)
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
distinct xs
n < length xs

goal (1 subgoal):
 1. list_succ xs (xs ! n) = xs ! (Suc n mod length xs)
[PROOF STEP]
by (auto simp: list_succ_def index_nth_id)


[STATEMENT]
lemma take_closed:
  assumes "k \<le>n"
  assumes "x \<in> carrier (R\<^bsup>n\<^esup>)"
  shows "take k x \<in> carrier (R\<^bsup>k\<^esup>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. take k x \<in> carrier (R\<^bsup>k\<^esup>)
[PROOF STEP]
apply(rule cartesian_power_car_memI)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. length (take k x) = k
 2. set (take k x) \<subseteq> carrier R
[PROOF STEP]
apply (metis assms(1) assms(2) cartesian_power_car_memE length_take min.absorb_iff2)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. set (take k x) \<subseteq> carrier R
[PROOF STEP]
by (meson assms(2) cartesian_power_car_memE'' set_take_subset subset_trans)


[STATEMENT]
lemma pmf_K_st: "pmf (K_st d s) t = \<integral>a. pmf (K(s, a)) t \<partial>d s"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. pmf (K_st d s) t = measure_pmf.expectation (d s) (\<lambda>a. pmf (K (s, a)) t)
[PROOF STEP]
unfolding K_st_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. pmf (d s \<bind> (\<lambda>a. K (s, a))) t = measure_pmf.expectation (d s) (\<lambda>a. pmf (K (s, a)) t)
[PROOF STEP]
by (subst pmf_bind) auto


[STATEMENT]
lemma bl_or_aux_bin:
  "map2 (\<or>) (bin_to_bl_aux n v bs) (bin_to_bl_aux n w cs) =
    bin_to_bl_aux n (v OR w) (map2 (\<or>) bs cs)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. map2 (\<or>) (bin_to_bl_aux n v bs) (bin_to_bl_aux n w cs) = bin_to_bl_aux n (v OR w) (map2 (\<or>) bs cs)
[PROOF STEP]
by (induct n arbitrary: v w bs cs) simp_all


[STATEMENT]
lemma carrier_mult_of [simp]: "carrier (mult_of R) = carrier R - {\<zero>\<^bsub>R\<^esub>}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. carrier (mult_of R) = carrier R - {\<zero>\<^bsub>R\<^esub>}
[PROOF STEP]
by (simp add: mult_of_def)


[STATEMENT]
lemma Arg2pi_times:
  assumes "w \<noteq> 0" "z \<noteq> 0"
    shows "Arg2pi (w * z) = (if Arg2pi w + Arg2pi z < 2*pi then Arg2pi w + Arg2pi z
                            else (Arg2pi w + Arg2pi z) - 2*pi)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Arg2pi (w * z) = (if Arg2pi w + Arg2pi z < 2 * pi then Arg2pi w + Arg2pi z else Arg2pi w + Arg2pi z - 2 * pi)
[PROOF STEP]
using Arg2pi_add [OF assms]
[PROOF STATE]
proof (prove)
using this:
Arg2pi w + Arg2pi z = (if Arg2pi w + Arg2pi z < 2 * pi then Arg2pi (w * z) else Arg2pi (w * z) + 2 * pi)

goal (1 subgoal):
 1. Arg2pi (w * z) = (if Arg2pi w + Arg2pi z < 2 * pi then Arg2pi w + Arg2pi z else Arg2pi w + Arg2pi z - 2 * pi)
[PROOF STEP]
by auto


[STATEMENT]
lemma tendsto_compose_at:
  assumes f: "(f \<longlongrightarrow> y) F" and g: "(g \<longlongrightarrow> z) (at y)" and fg: "eventually (\<lambda>w. f w = y \<longrightarrow> g y = z) F"
  shows "((g \<circ> f) \<longlongrightarrow> z) F"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((g \<circ> f) \<longlongrightarrow> z) F
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ((g \<circ> f) \<longlongrightarrow> z) F
[PROOF STEP]
have "(\<forall>\<^sub>F a in F. f a \<noteq> y) \<or> g y = z"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<forall>\<^sub>F a in F. f a \<noteq> y) \<or> g y = z
[PROOF STEP]
using fg
[PROOF STATE]
proof (prove)
using this:
\<forall>\<^sub>F w in F. f w = y \<longrightarrow> g y = z

goal (1 subgoal):
 1. (\<forall>\<^sub>F a in F. f a \<noteq> y) \<or> g y = z
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
(\<forall>\<^sub>F a in F. f a \<noteq> y) \<or> g y = z

goal (1 subgoal):
 1. ((g \<circ> f) \<longlongrightarrow> z) F
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(\<forall>\<^sub>F a in F. f a \<noteq> y) \<or> g y = z

goal (1 subgoal):
 1. ((g \<circ> f) \<longlongrightarrow> z) F
[PROOF STEP]
have "(g \<longlongrightarrow> z) (filtermap f F) \<or> \<not> (\<forall>\<^sub>F a in F. f a \<noteq> y)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (g \<longlongrightarrow> z) (filtermap f F) \<or> \<not> (\<forall>\<^sub>F a in F. f a \<noteq> y)
[PROOF STEP]
by (metis (no_types) filterlim_atI filterlim_def tendsto_mono f g)
[PROOF STATE]
proof (state)
this:
(g \<longlongrightarrow> z) (filtermap f F) \<or> \<not> (\<forall>\<^sub>F a in F. f a \<noteq> y)

goal (1 subgoal):
 1. ((g \<circ> f) \<longlongrightarrow> z) F
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
(\<forall>\<^sub>F a in F. f a \<noteq> y) \<or> g y = z
(g \<longlongrightarrow> z) (filtermap f F) \<or> \<not> (\<forall>\<^sub>F a in F. f a \<noteq> y)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
(\<forall>\<^sub>F a in F. f a \<noteq> y) \<or> g y = z
(g \<longlongrightarrow> z) (filtermap f F) \<or> \<not> (\<forall>\<^sub>F a in F. f a \<noteq> y)

goal (1 subgoal):
 1. ((g \<circ> f) \<longlongrightarrow> z) F
[PROOF STEP]
by (metis (no_types) f filterlim_compose filterlim_filtermap g tendsto_at_iff_tendsto_nhds tendsto_compose_filtermap)
[PROOF STATE]
proof (state)
this:
((g \<circ> f) \<longlongrightarrow> z) F

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma "(if a then b else c) = (THE d. (a \<longrightarrow> (d = b)) \<and> (\<not> a \<longrightarrow> (d = c)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (if a then b else c) = (THE d. (a \<longrightarrow> d = b) \<and> (\<not> a \<longrightarrow> d = c))
[PROOF STEP]
nitpick [expect = none]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (if a then b else c) = (THE d. (a \<longrightarrow> d = b) \<and> (\<not> a \<longrightarrow> d = c))
[PROOF STEP]
by auto


[STATEMENT]
lemma continuous_closedin_preimage_constant:
  fixes f :: "_ \<Rightarrow> 'b::t1_space"
  shows "continuous_on S f \<Longrightarrow> closedin (top_of_set S) {x \<in> S. f x = a}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. continuous_on S f \<Longrightarrow> closedin (top_of_set S) {x \<in> S. f x = a}
[PROOF STEP]
using continuous_closedin_preimage[of S f "{a}"]
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>continuous_on S f; closed {a}\<rbrakk> \<Longrightarrow> closedin (top_of_set S) (S \<inter> f -` {a})

goal (1 subgoal):
 1. continuous_on S f \<Longrightarrow> closedin (top_of_set S) {x \<in> S. f x = a}
[PROOF STEP]
by (simp add: vimage_def Collect_conj_eq)


[STATEMENT]
lemma Limsup_within:
  fixes f :: "'a::metric_space \<Rightarrow> 'b::complete_lattice"
  shows "Limsup (at x within S) f = (INF e\<in>{0<..}. SUP y\<in>(S \<inter> ball x e - {x}). f y)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Limsup (at x within S) f = (INF e\<in>{0<..}. Sup (f ` (S \<inter> ball x e - {x})))
[PROOF STEP]
unfolding Limsup_def eventually_at
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (INF P\<in>{P. \<exists>d>0. \<forall>xa\<in>S. xa \<noteq> x \<and> dist xa x < d \<longrightarrow> P xa}. Sup (f ` Collect P)) = (INF e\<in>{0<..}. Sup (f ` (S \<inter> ball x e - {x})))
[PROOF STEP]
proof (rule INF_eq, simp_all add: Ball_def Bex_def, safe)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>i d. \<lbrakk>0 < d; \<forall>xa. xa \<in> S \<longrightarrow> xa \<noteq> x \<and> dist xa x < d \<longrightarrow> i xa\<rbrakk> \<Longrightarrow> \<exists>xa>0. Sup (f ` (S \<inter> ball x xa - {x})) \<le> Sup (f ` Collect i)
 2. \<And>j. 0 < j \<Longrightarrow> \<exists>xa. (\<exists>d>0. \<forall>xb. xb \<in> S \<longrightarrow> xb \<noteq> x \<and> dist xb x < d \<longrightarrow> xa xb) \<and> Sup (f ` Collect xa) \<le> Sup (f ` (S \<inter> ball x j - {x}))
[PROOF STEP]
fix P d
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>i d. \<lbrakk>0 < d; \<forall>xa. xa \<in> S \<longrightarrow> xa \<noteq> x \<and> dist xa x < d \<longrightarrow> i xa\<rbrakk> \<Longrightarrow> \<exists>xa>0. Sup (f ` (S \<inter> ball x xa - {x})) \<le> Sup (f ` Collect i)
 2. \<And>j. 0 < j \<Longrightarrow> \<exists>xa. (\<exists>d>0. \<forall>xb. xb \<in> S \<longrightarrow> xb \<noteq> x \<and> dist xb x < d \<longrightarrow> xa xb) \<and> Sup (f ` Collect xa) \<le> Sup (f ` (S \<inter> ball x j - {x}))
[PROOF STEP]
assume "0 < d" and "\<forall>y. y \<in> S \<longrightarrow> y \<noteq> x \<and> dist y x < d \<longrightarrow> P y"
[PROOF STATE]
proof (state)
this:
0 < d
\<forall>y. y \<in> S \<longrightarrow> y \<noteq> x \<and> dist y x < d \<longrightarrow> P y

goal (2 subgoals):
 1. \<And>i d. \<lbrakk>0 < d; \<forall>xa. xa \<in> S \<longrightarrow> xa \<noteq> x \<and> dist xa x < d \<longrightarrow> i xa\<rbrakk> \<Longrightarrow> \<exists>xa>0. Sup (f ` (S \<inter> ball x xa - {x})) \<le> Sup (f ` Collect i)
 2. \<And>j. 0 < j \<Longrightarrow> \<exists>xa. (\<exists>d>0. \<forall>xb. xb \<in> S \<longrightarrow> xb \<noteq> x \<and> dist xb x < d \<longrightarrow> xa xb) \<and> Sup (f ` Collect xa) \<le> Sup (f ` (S \<inter> ball x j - {x}))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
0 < d
\<forall>y. y \<in> S \<longrightarrow> y \<noteq> x \<and> dist y x < d \<longrightarrow> P y
[PROOF STEP]
have "S \<inter> ball x d - {x} \<subseteq> {x. P x}"
[PROOF STATE]
proof (prove)
using this:
0 < d
\<forall>y. y \<in> S \<longrightarrow> y \<noteq> x \<and> dist y x < d \<longrightarrow> P y

goal (1 subgoal):
 1. S \<inter> ball x d - {x} \<subseteq> {x. P x}
[PROOF STEP]
by (auto simp: dist_commute)
[PROOF STATE]
proof (state)
this:
S \<inter> ball x d - {x} \<subseteq> {x. P x}

goal (2 subgoals):
 1. \<And>i d. \<lbrakk>0 < d; \<forall>xa. xa \<in> S \<longrightarrow> xa \<noteq> x \<and> dist xa x < d \<longrightarrow> i xa\<rbrakk> \<Longrightarrow> \<exists>xa>0. Sup (f ` (S \<inter> ball x xa - {x})) \<le> Sup (f ` Collect i)
 2. \<And>j. 0 < j \<Longrightarrow> \<exists>xa. (\<exists>d>0. \<forall>xb. xb \<in> S \<longrightarrow> xb \<noteq> x \<and> dist xb x < d \<longrightarrow> xa xb) \<and> Sup (f ` Collect xa) \<le> Sup (f ` (S \<inter> ball x j - {x}))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
S \<inter> ball x d - {x} \<subseteq> {x. P x}
[PROOF STEP]
show "\<exists>r>0. Sup (f ` (S \<inter> ball x r - {x})) \<le> Sup (f ` (Collect P))"
[PROOF STATE]
proof (prove)
using this:
S \<inter> ball x d - {x} \<subseteq> {x. P x}

goal (1 subgoal):
 1. \<exists>r>0. Sup (f ` (S \<inter> ball x r - {x})) \<le> Sup (f ` Collect P)
[PROOF STEP]
by (intro exI[of _ d] SUP_mono conjI \<open>0 < d\<close>) auto
[PROOF STATE]
proof (state)
this:
\<exists>r>0. Sup (f ` (S \<inter> ball x r - {x})) \<le> Sup (f ` Collect P)

goal (1 subgoal):
 1. \<And>j. 0 < j \<Longrightarrow> \<exists>xa. (\<exists>d>0. \<forall>xb. xb \<in> S \<longrightarrow> xb \<noteq> x \<and> dist xb x < d \<longrightarrow> xa xb) \<and> Sup (f ` Collect xa) \<le> Sup (f ` (S \<inter> ball x j - {x}))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>j. 0 < j \<Longrightarrow> \<exists>xa. (\<exists>d>0. \<forall>xb. xb \<in> S \<longrightarrow> xb \<noteq> x \<and> dist xb x < d \<longrightarrow> xa xb) \<and> Sup (f ` Collect xa) \<le> Sup (f ` (S \<inter> ball x j - {x}))
[PROOF STEP]
fix d :: real
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>j. 0 < j \<Longrightarrow> \<exists>xa. (\<exists>d>0. \<forall>xb. xb \<in> S \<longrightarrow> xb \<noteq> x \<and> dist xb x < d \<longrightarrow> xa xb) \<and> Sup (f ` Collect xa) \<le> Sup (f ` (S \<inter> ball x j - {x}))
[PROOF STEP]
assume "0 < d"
[PROOF STATE]
proof (state)
this:
0 < d

goal (1 subgoal):
 1. \<And>j. 0 < j \<Longrightarrow> \<exists>xa. (\<exists>d>0. \<forall>xb. xb \<in> S \<longrightarrow> xb \<noteq> x \<and> dist xb x < d \<longrightarrow> xa xb) \<and> Sup (f ` Collect xa) \<le> Sup (f ` (S \<inter> ball x j - {x}))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
0 < d
[PROOF STEP]
show "\<exists>P. (\<exists>d>0. \<forall>xa. xa \<in> S \<longrightarrow> xa \<noteq> x \<and> dist xa x < d \<longrightarrow> P xa) \<and>
    Sup (f ` (Collect P)) \<le> Sup (f ` (S \<inter> ball x d - {x}))"
[PROOF STATE]
proof (prove)
using this:
0 < d

goal (1 subgoal):
 1. \<exists>P. (\<exists>d>0. \<forall>xa. xa \<in> S \<longrightarrow> xa \<noteq> x \<and> dist xa x < d \<longrightarrow> P xa) \<and> Sup (f ` Collect P) \<le> Sup (f ` (S \<inter> ball x d - {x}))
[PROOF STEP]
by (intro exI[of _ "\<lambda>y. y \<in> S \<inter> ball x d - {x}"])
       (auto intro!: SUP_mono exI[of _ d] simp: dist_commute)
[PROOF STATE]
proof (state)
this:
\<exists>P. (\<exists>d>0. \<forall>xa. xa \<in> S \<longrightarrow> xa \<noteq> x \<and> dist xa x < d \<longrightarrow> P xa) \<and> Sup (f ` Collect P) \<le> Sup (f ` (S \<inter> ball x d - {x}))

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma iMODb_cut_less1: "\<lbrakk> t \<in> [r, mod m, c]; r < t \<rbrakk> \<Longrightarrow>
  [r, mod m, c] \<down>< t = [r, mod m, (t - r) div m - Suc 0]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>t \<in> [ r, mod m, c ]; r < t\<rbrakk> \<Longrightarrow> [ r, mod m, c ] \<down>< t = [ r, mod m, (t - r) div m - Suc 0 ]
[PROOF STEP]
apply (case_tac "m = 0")
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>t \<in> [ r, mod m, c ]; r < t; m = 0\<rbrakk> \<Longrightarrow> [ r, mod m, c ] \<down>< t = [ r, mod m, (t - r) div m - Suc 0 ]
 2. \<lbrakk>t \<in> [ r, mod m, c ]; r < t; m \<noteq> 0\<rbrakk> \<Longrightarrow> [ r, mod m, c ] \<down>< t = [ r, mod m, (t - r) div m - Suc 0 ]
[PROOF STEP]
apply (simp add: iMODb_mod_0 iIN_0)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>t \<in> [ r, mod m, c ]; r < t; m \<noteq> 0\<rbrakk> \<Longrightarrow> [ r, mod m, c ] \<down>< t = [ r, mod m, (t - r) div m - Suc 0 ]
[PROOF STEP]
apply (simp add: iMODb_cut_less)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>t \<in> [ r, mod m, c ]; r < t; 0 < m\<rbrakk> \<Longrightarrow> (r + m * c < t \<longrightarrow> [ r, mod m, c ] = [ r, mod m, (t - r) div m - Suc 0 ]) \<and> (\<not> r + m * c < t \<longrightarrow> [ r, mod m, (t - Suc r) div m ] = [ r, mod m, (t - r) div m - Suc 0 ])
[PROOF STEP]
apply (simp add: mod_0_imp_diff_Suc_div_conv mod_eq_imp_diff_mod_0 iT_iff)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma moebius_comp:
  shows "moebius_pt (moebius_comp M1 M2) = moebius_pt M1 \<circ> moebius_pt M2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. moebius_pt (moebius_comp M1 M2) = moebius_pt M1 \<circ> moebius_pt M2
[PROOF STEP]
unfolding comp_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. moebius_pt (moebius_comp M1 M2) = (\<lambda>x. moebius_pt M1 (moebius_pt M2 x))
[PROOF STEP]
by (rule ext, transfer, transfer, simp)


[STATEMENT]
lemma f_nxt_mono1: "(\<And> x. paths (f x) \<subseteq> paths (f' x)) \<Longrightarrow> paths (f_nxt f T x x') \<subseteq> paths (f_nxt f' T x x')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>x. paths (f x) \<subseteq> paths (f' x)) \<Longrightarrow> paths (f_nxt f T x x') \<subseteq> paths (f_nxt f' T x x')
[PROOF STEP]
unfolding f_nxt_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>x. paths (f x) \<subseteq> paths (f' x)) \<Longrightarrow> paths ((if x \<in> T then f(x := TTree.empty) else f) x') \<subseteq> paths ((if x \<in> T then f'(x := TTree.empty) else f') x')
[PROOF STEP]
by auto


[STATEMENT]
lemma elements_four_block_mat:
  assumes c: "A \<in> carrier_mat nr1 nc1" "B \<in> carrier_mat nr1 nc2"
  "C \<in> carrier_mat nr2 nc1" "D \<in> carrier_mat nr2 nc2"
  shows
  "elements_mat (four_block_mat A B C D) \<subseteq>
   elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D"
   (is "elements_mat ?four \<subseteq> _")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. elements_mat (four_block_mat A B C D) \<subseteq> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
proof rule
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> elements_mat (four_block_mat A B C D) \<Longrightarrow> x \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
fix a
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> elements_mat (four_block_mat A B C D) \<Longrightarrow> x \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
assume "a \<in> elements_mat ?four"
[PROOF STATE]
proof (state)
this:
a \<in> elements_mat (four_block_mat A B C D)

goal (1 subgoal):
 1. \<And>x. x \<in> elements_mat (four_block_mat A B C D) \<Longrightarrow> x \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
a \<in> elements_mat (four_block_mat A B C D)
[PROOF STEP]
obtain i j
    where i4: "i < dim_row ?four" and j4: "j < dim_col ?four" and a: "a = ?four $$ (i, j)"
[PROOF STATE]
proof (prove)
using this:
a \<in> elements_mat (four_block_mat A B C D)

goal (1 subgoal):
 1. (\<And>i j. \<lbrakk>i < dim_row (four_block_mat A B C D); j < dim_col (four_block_mat A B C D); a = four_block_mat A B C D $$ (i, j)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
i < dim_row (four_block_mat A B C D)
j < dim_col (four_block_mat A B C D)
a = four_block_mat A B C D $$ (i, j)

goal (1 subgoal):
 1. \<And>x. x \<in> elements_mat (four_block_mat A B C D) \<Longrightarrow> x \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
show "a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
proof (cases "i < nr1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
 2. \<not> i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
i < nr1

goal (2 subgoals):
 1. i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
 2. \<not> i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
note i1 = this
[PROOF STATE]
proof (state)
this:
i < nr1

goal (2 subgoals):
 1. i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
 2. \<not> i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
proof (cases "j < nc1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
 2. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
j < nc1

goal (2 subgoals):
 1. j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
 2. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
j < nc1
[PROOF STEP]
have "a = A $$ (i,j)"
[PROOF STATE]
proof (prove)
using this:
j < nc1

goal (1 subgoal):
 1. a = A $$ (i, j)
[PROOF STEP]
using c i1 a
[PROOF STATE]
proof (prove)
using this:
j < nc1
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
i < nr1
a = four_block_mat A B C D $$ (i, j)

goal (1 subgoal):
 1. a = A $$ (i, j)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
a = A $$ (i, j)

goal (2 subgoals):
 1. j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
 2. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
a = A $$ (i, j)

goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
using c i1 True
[PROOF STATE]
proof (prove)
using this:
a = A $$ (i, j)
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
i < nr1
j < nc1

goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D

goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> j < nc1

goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<not> j < nc1
[PROOF STEP]
have "a = B $$ (i,j-nc1)"
[PROOF STATE]
proof (prove)
using this:
\<not> j < nc1

goal (1 subgoal):
 1. a = B $$ (i, j - nc1)
[PROOF STEP]
using c i1 a j4
[PROOF STATE]
proof (prove)
using this:
\<not> j < nc1
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
i < nr1
a = four_block_mat A B C D $$ (i, j)
j < dim_col (four_block_mat A B C D)

goal (1 subgoal):
 1. a = B $$ (i, j - nc1)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
a = B $$ (i, j - nc1)

goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
a = B $$ (i, j - nc1)

goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
have "j - nc1 < nc2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. j - nc1 < nc2
[PROOF STEP]
using c j4 False
[PROOF STATE]
proof (prove)
using this:
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
j < dim_col (four_block_mat A B C D)
\<not> j < nc1

goal (1 subgoal):
 1. j - nc1 < nc2
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
j - nc1 < nc2

goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
a = B $$ (i, j - nc1)
j - nc1 < nc2
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
a = B $$ (i, j - nc1)
j - nc1 < nc2

goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
using c i1
[PROOF STATE]
proof (prove)
using this:
a = B $$ (i, j - nc1)
j - nc1 < nc2
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
i < nr1

goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D

goal (1 subgoal):
 1. \<not> i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> i < nr1

goal (1 subgoal):
 1. \<not> i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
note i1 = this
[PROOF STATE]
proof (state)
this:
\<not> i < nr1

goal (1 subgoal):
 1. \<not> i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
have i2: "i - nr1 < nr2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. i - nr1 < nr2
[PROOF STEP]
using c i1 i4
[PROOF STATE]
proof (prove)
using this:
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
\<not> i < nr1
i < dim_row (four_block_mat A B C D)

goal (1 subgoal):
 1. i - nr1 < nr2
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
i - nr1 < nr2

goal (1 subgoal):
 1. \<not> i < nr1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
proof (cases "j < nc1")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
 2. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
j < nc1

goal (2 subgoals):
 1. j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
 2. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
j < nc1
[PROOF STEP]
have "a = C $$ (i-nr1,j)"
[PROOF STATE]
proof (prove)
using this:
j < nc1

goal (1 subgoal):
 1. a = C $$ (i - nr1, j)
[PROOF STEP]
using c i2 a i1
[PROOF STATE]
proof (prove)
using this:
j < nc1
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
i - nr1 < nr2
a = four_block_mat A B C D $$ (i, j)
\<not> i < nr1

goal (1 subgoal):
 1. a = C $$ (i - nr1, j)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
a = C $$ (i - nr1, j)

goal (2 subgoals):
 1. j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
 2. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
a = C $$ (i - nr1, j)

goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
using c i2 True
[PROOF STATE]
proof (prove)
using this:
a = C $$ (i - nr1, j)
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
i - nr1 < nr2
j < nc1

goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D

goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> j < nc1

goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<not> j < nc1
[PROOF STEP]
have "a = D $$ (i-nr1,j-nc1)"
[PROOF STATE]
proof (prove)
using this:
\<not> j < nc1

goal (1 subgoal):
 1. a = D $$ (i - nr1, j - nc1)
[PROOF STEP]
using c i2 a i1 j4
[PROOF STATE]
proof (prove)
using this:
\<not> j < nc1
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
i - nr1 < nr2
a = four_block_mat A B C D $$ (i, j)
\<not> i < nr1
j < dim_col (four_block_mat A B C D)

goal (1 subgoal):
 1. a = D $$ (i - nr1, j - nc1)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
a = D $$ (i - nr1, j - nc1)

goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
a = D $$ (i - nr1, j - nc1)

goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
have "j - nc1 < nc2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. j - nc1 < nc2
[PROOF STEP]
using c j4 False
[PROOF STATE]
proof (prove)
using this:
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
j < dim_col (four_block_mat A B C D)
\<not> j < nc1

goal (1 subgoal):
 1. j - nc1 < nc2
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
j - nc1 < nc2

goal (1 subgoal):
 1. \<not> j < nc1 \<Longrightarrow> a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
a = D $$ (i - nr1, j - nc1)
j - nc1 < nc2
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
a = D $$ (i - nr1, j - nc1)
j - nc1 < nc2

goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
using c i2
[PROOF STATE]
proof (prove)
using this:
a = D $$ (i - nr1, j - nc1)
j - nc1 < nc2
A \<in> carrier_mat nr1 nc1
B \<in> carrier_mat nr1 nc2
C \<in> carrier_mat nr2 nc1
D \<in> carrier_mat nr2 nc2
i - nr1 < nr2

goal (1 subgoal):
 1. a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
a \<in> elements_mat A \<union> elements_mat B \<union> elements_mat C \<union> elements_mat D

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma ffact_Suc_nat:
  "ffact (Suc n) m = m * ffact n (m - 1)"
    for m :: nat
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ffact (Suc n) m = m * ffact n (m - 1)
[PROOF STEP]
proof (cases "n \<le> m")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. n \<le> m \<Longrightarrow> ffact (Suc n) m = m * ffact n (m - 1)
 2. \<not> n \<le> m \<Longrightarrow> ffact (Suc n) m = m * ffact n (m - 1)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
n \<le> m

goal (2 subgoals):
 1. n \<le> m \<Longrightarrow> ffact (Suc n) m = m * ffact n (m - 1)
 2. \<not> n \<le> m \<Longrightarrow> ffact (Suc n) m = m * ffact n (m - 1)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
n \<le> m
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
n \<le> m

goal (1 subgoal):
 1. ffact (Suc n) m = m * ffact n (m - 1)
[PROOF STEP]
by (simp add: ffact_def pochhammer_prod algebra_simps prod.atLeast0_lessThan_Suc)
[PROOF STATE]
proof (state)
this:
ffact (Suc n) m = m * ffact n (m - 1)

goal (1 subgoal):
 1. \<not> n \<le> m \<Longrightarrow> ffact (Suc n) m = m * ffact n (m - 1)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> n \<le> m \<Longrightarrow> ffact (Suc n) m = m * ffact n (m - 1)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> n \<le> m

goal (1 subgoal):
 1. \<not> n \<le> m \<Longrightarrow> ffact (Suc n) m = m * ffact n (m - 1)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<not> n \<le> m
[PROOF STEP]
have "m < n"
[PROOF STATE]
proof (prove)
using this:
\<not> n \<le> m

goal (1 subgoal):
 1. m < n
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
m < n

goal (1 subgoal):
 1. \<not> n \<le> m \<Longrightarrow> ffact (Suc n) m = m * ffact n (m - 1)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
m < n
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
m < n

goal (1 subgoal):
 1. ffact (Suc n) m = m * ffact n (m - 1)
[PROOF STEP]
by (simp add: ffact_nat_triv)
[PROOF STATE]
proof (state)
this:
ffact (Suc n) m = m * ffact n (m - 1)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma smallomega':
  fixes c :: real assumes "c \<in> {0<..<exp 1}"
  shows "g \<in> \<omega>(\<lambda>x. c powr x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. g \<in> \<omega>((powr) c)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. g \<in> \<omega>((powr) c)
[PROOF STEP]
from assms
[PROOF STATE]
proof (chain)
picking this:
c \<in> {0<..<exp 1}
[PROOF STEP]
have "exp 1 > exp (ln c)"
[PROOF STATE]
proof (prove)
using this:
c \<in> {0<..<exp 1}

goal (1 subgoal):
 1. exp (ln c) < exp 1
[PROOF STEP]
by (subst exp_ln) auto
[PROOF STATE]
proof (state)
this:
exp (ln c) < exp 1

goal (1 subgoal):
 1. g \<in> \<omega>((powr) c)
[PROOF STEP]
hence "ln c < 1"
[PROOF STATE]
proof (prove)
using this:
exp (ln c) < exp 1

goal (1 subgoal):
 1. ln c < 1
[PROOF STEP]
by (subst (asm) exp_less_cancel_iff)
[PROOF STATE]
proof (state)
this:
ln c < 1

goal (1 subgoal):
 1. g \<in> \<omega>((powr) c)
[PROOF STEP]
hence "g \<in> \<omega>(\<lambda>x. exp ((1 - (1 - ln c)) * x))"
[PROOF STATE]
proof (prove)
using this:
ln c < 1

goal (1 subgoal):
 1. g \<in> \<omega>(\<lambda>x. exp ((1 - (1 - ln c)) * x))
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
ln c < 1
c \<in> {0<..<exp 1}

goal (1 subgoal):
 1. g \<in> \<omega>(\<lambda>x. exp ((1 - (1 - ln c)) * x))
[PROOF STEP]
by (intro smallomega) auto
[PROOF STATE]
proof (state)
this:
g \<in> \<omega>(\<lambda>x. exp ((1 - (1 - ln c)) * x))

goal (1 subgoal):
 1. g \<in> \<omega>((powr) c)
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
g \<in> \<omega>(\<lambda>x. exp ((1 - (1 - ln c)) * x))

goal (1 subgoal):
 1. g \<in> \<omega>((powr) c)
[PROOF STEP]
have "(\<lambda>x. exp ((1 - (1 - ln c)) * x)) = (\<lambda>x. c powr x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<lambda>x. exp ((1 - (1 - ln c)) * x)) = (powr) c
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
c \<in> {0<..<exp 1}

goal (1 subgoal):
 1. (\<lambda>x. exp ((1 - (1 - ln c)) * x)) = (powr) c
[PROOF STEP]
by (simp add: powr_def mult_ac)
[PROOF STATE]
proof (state)
this:
(\<lambda>x. exp ((1 - (1 - ln c)) * x)) = (powr) c

goal (1 subgoal):
 1. g \<in> \<omega>((powr) c)
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
g \<in> \<omega>((powr) c)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
g \<in> \<omega>((powr) c)

goal (1 subgoal):
 1. g \<in> \<omega>((powr) c)
[PROOF STEP]
.
[PROOF STATE]
proof (state)
this:
g \<in> \<omega>((powr) c)

goal:
No subgoals!
[PROOF STEP]
qed