[STATEMENT]
lemma supp_list_member:
  fixes x::"'a::fs" and l::"'a list"
  assumes "x \<in> set l"
  shows "supp x \<subseteq> supp l"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. supp x \<subseteq> supp l
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
x \<in> set l

goal (1 subgoal):
 1. supp x \<subseteq> supp l
[PROOF STEP]
apply(induct l, auto)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>la xa. \<lbrakk>x \<in> set la \<Longrightarrow> supp x \<subseteq> supp la; x \<in> set l; xa \<in> supp x\<rbrakk> \<Longrightarrow> xa \<in> supp (x # la)
 2. \<And>a la xa. \<lbrakk>supp x \<subseteq> supp la; x \<in> set l; xa \<in> supp x; x \<in> set la\<rbrakk> \<Longrightarrow> xa \<in> supp (a # la)
[PROOF STEP]
using supp_Cons
[PROOF STATE]
proof (prove)
using this:
supp (?x # ?xs) = supp ?x \<union> supp ?xs

goal (2 subgoals):
 1. \<And>la xa. \<lbrakk>x \<in> set la \<Longrightarrow> supp x \<subseteq> supp la; x \<in> set l; xa \<in> supp x\<rbrakk> \<Longrightarrow> xa \<in> supp (x # la)
 2. \<And>a la xa. \<lbrakk>supp x \<subseteq> supp la; x \<in> set l; xa \<in> supp x; x \<in> set la\<rbrakk> \<Longrightarrow> xa \<in> supp (a # la)
[PROOF STEP]
by auto


[STATEMENT]
lemma dg_prod_3_is_arrI'[dg_prod_cs_intros]:
  assumes "F = [f, f', f'']\<^sub>\<circ>"
    and "A = [a, a', a'']\<^sub>\<circ>"
    and "B = [b, b', b'']\<^sub>\<circ>"
    and "f : a \<mapsto>\<^bsub>\<AA>\<^esub> b"
    and "f' : a' \<mapsto>\<^bsub>\<BB>\<^esub> b'"
    and "f'' : a'' \<mapsto>\<^bsub>\<CC>\<^esub> b''"
  shows "F : A \<mapsto>\<^bsub>\<AA> \<times>\<^sub>D\<^sub>G\<^sub>3 \<BB> \<times>\<^sub>D\<^sub>G\<^sub>3 \<CC>\<^esub> B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. F : A \<mapsto>\<^bsub>\<AA> \<times>\<^sub>D\<^sub>G\<^sub>3 \<BB> \<times>\<^sub>D\<^sub>G\<^sub>3 \<CC>\<^esub> B
[PROOF STEP]
using assms(4,5,6)
[PROOF STATE]
proof (prove)
using this:
f : a \<mapsto>\<^bsub>\<AA>\<^esub> b
f' : a' \<mapsto>\<^bsub>\<BB>\<^esub> b'
f'' : a'' \<mapsto>\<^bsub>\<CC>\<^esub> b''

goal (1 subgoal):
 1. F : A \<mapsto>\<^bsub>\<AA> \<times>\<^sub>D\<^sub>G\<^sub>3 \<BB> \<times>\<^sub>D\<^sub>G\<^sub>3 \<CC>\<^esub> B
[PROOF STEP]
unfolding assms(1,2,3)
[PROOF STATE]
proof (prove)
using this:
f : a \<mapsto>\<^bsub>\<AA>\<^esub> b
f' : a' \<mapsto>\<^bsub>\<BB>\<^esub> b'
f'' : a'' \<mapsto>\<^bsub>\<CC>\<^esub> b''

goal (1 subgoal):
 1. [f, f', f'']\<^sub>\<circ> : [a, a', a'']\<^sub>\<circ> \<mapsto>\<^bsub>\<AA> \<times>\<^sub>D\<^sub>G\<^sub>3 \<BB> \<times>\<^sub>D\<^sub>G\<^sub>3 \<CC>\<^esub> [b, b', b'']\<^sub>\<circ>
[PROOF STEP]
by (rule dg_prod_3_is_arrI)


[STATEMENT]
lemma spans_image: "V \<subseteq> m1.span B \<Longrightarrow> f ` V \<subseteq> m2.span (f ` B)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. V \<subseteq> m1.span B \<Longrightarrow> f ` V \<subseteq> m2.span (f ` B)
[PROOF STEP]
by (metis image_mono span_image)


[STATEMENT]
lemma empty_set_less_eq_aux [simp]: "{} \<sqsubseteq>' A \<longleftrightarrow> finite A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ({} \<sqsubseteq>' A) = finite A
[PROOF STEP]
by(auto simp add: set_less_eq_aux_def finite_complement_partition)


[STATEMENT]
lemma atLeastLessThan_empty_iff2[simp]: "{} = {a\<le>\<^sub>a..<\<^sub>ab} \<longleftrightarrow> (\<not> a <\<^sub>a b)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ({} = {a\<le>\<^sub>a..<\<^sub>ab}) = (\<not> a <\<^sub>a b)
[PROOF STEP]
unfolding interval_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ({} = {a\<le>\<^sub>a..} \<inter> {..<\<^sub>ab}) = (\<not> a <\<^sub>a b)
[PROOF STEP]
by (auto simp: le_less_trans ord.lessThan_iff)


[STATEMENT]
lemma limit1: "filterlim (\<lambda>x::real. sqrt (4/x - 1) / (x - 4)) at_bot (at_left 4)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. LIM x at_left 4. sqrt (4 / x - 1) / (x - 4) :> at_bot
[PROOF STEP]
proof (rule lhopital_left)
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. ((\<lambda>x. sqrt (4 / x - 1)) \<longlongrightarrow> 0) (at_left 4)
 2. ((\<lambda>x. x - 4) \<longlongrightarrow> 0) (at_left 4)
 3. \<forall>\<^sub>F x in at_left 4. x - 4 \<noteq> 0
 4. \<forall>\<^sub>F x in at_left 4. ?g' x \<noteq> 0
 5. \<forall>\<^sub>F x in at_left 4. ((\<lambda>x. sqrt (4 / x - 1)) has_real_derivative ?f' x) (at x)
 6. \<forall>\<^sub>F x in at_left 4. ((\<lambda>x. x - 4) has_real_derivative ?g' x) (at x)
 7. LIM x at_left 4. ?f' x / ?g' x :> at_bot
[PROOF STEP]
show "((\<lambda>x::real. sqrt (4 / x - 1)) \<longlongrightarrow> 0) (at_left 4)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. sqrt (4 / x - 1)) \<longlongrightarrow> 0) (at_left 4)
[PROOF STEP]
by (force intro: tendsto_eq_intros)
[PROOF STATE]
proof (state)
this:
((\<lambda>x. sqrt (4 / x - 1)) \<longlongrightarrow> 0) (at_left 4)

goal (6 subgoals):
 1. ((\<lambda>x. x - 4) \<longlongrightarrow> 0) (at_left 4)
 2. \<forall>\<^sub>F x in at_left 4. x - 4 \<noteq> 0
 3. \<forall>\<^sub>F x in at_left 4. ?g' x \<noteq> 0
 4. \<forall>\<^sub>F x in at_left 4. ((\<lambda>x. sqrt (4 / x - 1)) has_real_derivative ?f' x) (at x)
 5. \<forall>\<^sub>F x in at_left 4. ((\<lambda>x. x - 4) has_real_derivative ?g' x) (at x)
 6. LIM x at_left 4. ?f' x / ?g' x :> at_bot
[PROOF STEP]
show "((\<lambda>x::real. x - 4) \<longlongrightarrow> 0) (at_left 4)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. x - 4) \<longlongrightarrow> 0) (at_left 4)
[PROOF STEP]
by (force intro: tendsto_eq_intros)
[PROOF STATE]
proof (state)
this:
((\<lambda>x. x - 4) \<longlongrightarrow> 0) (at_left 4)

goal (5 subgoals):
 1. \<forall>\<^sub>F x in at_left 4. x - 4 \<noteq> 0
 2. \<forall>\<^sub>F x in at_left 4. ?g' x \<noteq> 0
 3. \<forall>\<^sub>F x in at_left 4. ((\<lambda>x. sqrt (4 / x - 1)) has_real_derivative ?f' x) (at x)
 4. \<forall>\<^sub>F x in at_left 4. ((\<lambda>x. x - 4) has_real_derivative ?g' x) (at x)
 5. LIM x at_left 4. ?f' x / ?g' x :> at_bot
[PROOF STEP]
show "\<forall>\<^sub>F x in at_left 4. ((\<lambda>x. x - 4) has_real_derivative 1) (at x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>\<^sub>F x in at_left 4. ((\<lambda>x. x - 4) has_real_derivative 1) (at x)
[PROOF STEP]
by (intro always_eventually) (auto intro!: derivative_eq_intros)
[PROOF STATE]
proof (state)
this:
\<forall>\<^sub>F x in at_left 4. ((\<lambda>x. x - 4) has_real_derivative 1) (at x)

goal (4 subgoals):
 1. \<forall>\<^sub>F x in at_left 4. x - 4 \<noteq> 0
 2. \<forall>\<^sub>F x in at_left 4. 1 \<noteq> 0
 3. \<forall>\<^sub>F x in at_left 4. ((\<lambda>x. sqrt (4 / x - 1)) has_real_derivative ?f' x) (at x)
 4. LIM x at_left 4. ?f' x / 1 :> at_bot
[PROOF STEP]
show "\<forall>\<^sub>F x in at_left 4. ((\<lambda>x. sqrt (4/x - 1)) has_real_derivative
          -2 / (sqrt (4/x - 1) * x^2)) (at x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>\<^sub>F x in at_left 4. ((\<lambda>x. sqrt (4 / x - 1)) has_real_derivative - 2 / (sqrt (4 / x - 1) * x\<^sup>2)) (at x)
[PROOF STEP]
by (intro eventually_at_leftI[of 0])
       (auto intro!: derivative_eq_intros simp: field_simps power2_eq_square)
[PROOF STATE]
proof (state)
this:
\<forall>\<^sub>F x in at_left 4. ((\<lambda>x. sqrt (4 / x - 1)) has_real_derivative - 2 / (sqrt (4 / x - 1) * x\<^sup>2)) (at x)

goal (3 subgoals):
 1. \<forall>\<^sub>F x in at_left 4. x - 4 \<noteq> 0
 2. \<forall>\<^sub>F x in at_left 4. 1 \<noteq> 0
 3. LIM x at_left 4. - 2 / (sqrt (4 / x - 1) * x\<^sup>2) / 1 :> at_bot
[PROOF STEP]
have *: "((\<lambda>x::real. sqrt (4 / x - 1) * x\<^sup>2) \<longlongrightarrow> 0) (at_left 4)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. sqrt (4 / x - 1) * x\<^sup>2) \<longlongrightarrow> 0) (at_left 4)
[PROOF STEP]
by (force intro!: tendsto_eq_intros)
[PROOF STATE]
proof (state)
this:
((\<lambda>x. sqrt (4 / x - 1) * x\<^sup>2) \<longlongrightarrow> 0) (at_left 4)

goal (3 subgoals):
 1. \<forall>\<^sub>F x in at_left 4. x - 4 \<noteq> 0
 2. \<forall>\<^sub>F x in at_left 4. 1 \<noteq> 0
 3. LIM x at_left 4. - 2 / (sqrt (4 / x - 1) * x\<^sup>2) / 1 :> at_bot
[PROOF STEP]
have "filterlim (\<lambda>x. - (2 / (sqrt (4 / x - 1) * x\<^sup>2))) at_bot (at_left 4)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. LIM x at_left 4. - (2 / (sqrt (4 / x - 1) * x\<^sup>2)) :> at_bot
[PROOF STEP]
unfolding filterlim_uminus_at_top [symmetric]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. LIM x at_left 4. 2 / (sqrt (4 / x - 1) * x\<^sup>2) :> at_top
[PROOF STEP]
by (rule LIM_at_top_divide tendsto_const eventually_at_leftI[of 0] * | simp)+
[PROOF STATE]
proof (state)
this:
LIM x at_left 4. - (2 / (sqrt (4 / x - 1) * x\<^sup>2)) :> at_bot

goal (3 subgoals):
 1. \<forall>\<^sub>F x in at_left 4. x - 4 \<noteq> 0
 2. \<forall>\<^sub>F x in at_left 4. 1 \<noteq> 0
 3. LIM x at_left 4. - 2 / (sqrt (4 / x - 1) * x\<^sup>2) / 1 :> at_bot
[PROOF STEP]
thus "filterlim (\<lambda>x::real. - 2 / (sqrt (4 / x - 1) * x\<^sup>2) / 1) at_bot (at_left 4)"
[PROOF STATE]
proof (prove)
using this:
LIM x at_left 4. - (2 / (sqrt (4 / x - 1) * x\<^sup>2)) :> at_bot

goal (1 subgoal):
 1. LIM x at_left 4. - 2 / (sqrt (4 / x - 1) * x\<^sup>2) / 1 :> at_bot
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
LIM x at_left 4. - 2 / (sqrt (4 / x - 1) * x\<^sup>2) / 1 :> at_bot

goal (2 subgoals):
 1. \<forall>\<^sub>F x in at_left 4. x - 4 \<noteq> 0
 2. \<forall>\<^sub>F x in at_left 4. 1 \<noteq> 0
[PROOF STEP]
qed (auto intro: eventually_at_leftI[of 0])


[STATEMENT]
lemma is_distinguishing_formula_eqvt (*[eqvt]*):
    assumes "x distinguishes P from Q" shows "(p \<bullet> x) distinguishes (p \<bullet> P) from (p \<bullet> Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (p \<bullet> x) distinguishes (p \<bullet> P) from (p \<bullet> Q)
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
x distinguishes P from Q

goal (1 subgoal):
 1. (p \<bullet> x) distinguishes (p \<bullet> P) from (p \<bullet> Q)
[PROOF STEP]
unfolding is_distinguishing_formula_def
[PROOF STATE]
proof (prove)
using this:
P \<Turnstile> x \<and> \<not> Q \<Turnstile> x

goal (1 subgoal):
 1. p \<bullet> P \<Turnstile> p \<bullet> x \<and> \<not> p \<bullet> Q \<Turnstile> p \<bullet> x
[PROOF STEP]
by (metis permute_minus_cancel(2) FL_valid_eqvt)


[STATEMENT]
lemma pre_to_univ_poly_inv_hom_pvar_0:
  assumes "i < Suc n"
  assumes "j < i"
  shows "pre_to_univ_poly_inv_hom (Suc n) i (pvar R j) =
            pvar R j"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. pre_to_univ_poly_inv_hom (Suc n) i (pvar R j) = pvar R j
[PROOF STEP]
unfolding pre_to_univ_poly_inv_hom_def coord_ring_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. R.relabel_vars {..<Suc n - 1} {..<Suc n} (\<lambda>j. if j < i then j else j + 1) (pvar R j) = pvar R j
[PROOF STEP]
using R.relabel_vars_is_morphism(2)[of "\<lambda>j. if j < i then j else j + 1" "{..<n}" "{..< Suc n}" j]
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>(\<lambda>j. if j < i then j else j + 1) \<in> {..<n} \<rightarrow> {..<Suc n}; j \<in> {..<n}\<rbrakk> \<Longrightarrow> R.relabel_vars {..<n} {..<Suc n} (\<lambda>j. if j < i then j else j + 1) (pvar R j) = pvar R (if j < i then j else j + 1)

goal (1 subgoal):
 1. R.relabel_vars {..<Suc n - 1} {..<Suc n} (\<lambda>j. if j < i then j else j + 1) (pvar R j) = pvar R j
[PROOF STEP]
by (smt Pi_I add.commute add_diff_cancel_left' assms(1) assms(2)
      lessThan_iff less_Suc_eq less_trans_Suc not_less_eq plus_1_eq_Suc)


[STATEMENT]
lemma singleLiteralClausesEntailItsLiteral:
  fixes clause :: Clause and literal :: Literal
  assumes "length clause = 1" and "literal el clause"
  shows "clauseEntailsLiteral clause literal"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. clauseEntailsLiteral clause literal
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. clauseEntailsLiteral clause literal
[PROOF STEP]
from assms
[PROOF STATE]
proof (chain)
picking this:
length clause = 1
literal el clause
[PROOF STEP]
have onlyLiteral: "\<forall> l. l el clause \<longrightarrow> l = literal"
[PROOF STATE]
proof (prove)
using this:
length clause = 1
literal el clause

goal (1 subgoal):
 1. \<forall>l. l el clause \<longrightarrow> l = literal
[PROOF STEP]
using lengthOneImpliesOnlyElement[of "clause" "literal"]
[PROOF STATE]
proof (prove)
using this:
length clause = 1
literal el clause
\<lbrakk>length clause = 1; literal \<in> set clause\<rbrakk> \<Longrightarrow> \<forall>a'. a' \<in> set clause \<longrightarrow> a' = literal

goal (1 subgoal):
 1. \<forall>l. l el clause \<longrightarrow> l = literal
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>l. l el clause \<longrightarrow> l = literal

goal (1 subgoal):
 1. clauseEntailsLiteral clause literal
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
\<forall>l. l el clause \<longrightarrow> l = literal

goal (1 subgoal):
 1. clauseEntailsLiteral clause literal
[PROOF STEP]
fix valuation :: Valuation
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. clauseEntailsLiteral clause literal
[PROOF STEP]
assume "clauseTrue clause valuation"
[PROOF STATE]
proof (state)
this:
clauseTrue clause valuation

goal (1 subgoal):
 1. clauseEntailsLiteral clause literal
[PROOF STEP]
with onlyLiteral
[PROOF STATE]
proof (chain)
picking this:
\<forall>l. l el clause \<longrightarrow> l = literal
clauseTrue clause valuation
[PROOF STEP]
have "literalTrue literal valuation"
[PROOF STATE]
proof (prove)
using this:
\<forall>l. l el clause \<longrightarrow> l = literal
clauseTrue clause valuation

goal (1 subgoal):
 1. literalTrue literal valuation
[PROOF STEP]
by (auto simp add:clauseTrueIffContainsTrueLiteral)
[PROOF STATE]
proof (state)
this:
literalTrue literal valuation

goal (1 subgoal):
 1. clauseEntailsLiteral clause literal
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
clauseTrue clause ?valuation2 \<Longrightarrow> literalTrue literal ?valuation2

goal (1 subgoal):
 1. clauseEntailsLiteral clause literal
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
clauseTrue clause ?valuation2 \<Longrightarrow> literalTrue literal ?valuation2

goal (1 subgoal):
 1. clauseEntailsLiteral clause literal
[PROOF STEP]
by (simp add:clauseEntailsLiteral_def)
[PROOF STATE]
proof (state)
this:
clauseEntailsLiteral clause literal

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma insertion_sum: "insertion f (sum g A) = (\<Sum>x\<in>A. insertion f (g x))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. insertion f (sum g A) = (\<Sum>x\<in>A. insertion f (g x))
[PROOF STEP]
by (induction A rule: infinite_finite_induct) (auto simp: insertion_add)


[STATEMENT]
lemma merge_split_supset':
  assumes "r \<in> set (Sorting_Algorithms.merge cmp xs ys)"
  shows "\<exists>as bs as' bs'. as@r#bs = (Sorting_Algorithms.merge cmp xs ys)
          \<and> set bs' \<subseteq> set bs \<and> (as'@r#bs' = xs \<or> as'@r#bs' = ys)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>as bs as' bs'. as @ r # bs = Sorting_Algorithms.merge cmp xs ys \<and> set bs' \<subseteq> set bs \<and> (as' @ r # bs' = xs \<or> as' @ r # bs' = ys)
[PROOF STEP]
using merge_split_supset split_list[OF assms]
[PROOF STATE]
proof (prove)
using this:
?as @ ?r # ?bs = Sorting_Algorithms.merge ?cmp ?xs ?ys \<Longrightarrow> \<exists>bs' as'. set bs' \<subseteq> set ?bs \<and> (as' @ ?r # bs' = ?xs \<or> as' @ ?r # bs' = ?ys)
\<exists>ysa zs. Sorting_Algorithms.merge cmp xs ys = ysa @ r # zs

goal (1 subgoal):
 1. \<exists>as bs as' bs'. as @ r # bs = Sorting_Algorithms.merge cmp xs ys \<and> set bs' \<subseteq> set bs \<and> (as' @ r # bs' = xs \<or> as' @ r # bs' = ys)
[PROOF STEP]
by metis


[STATEMENT]
lemma cos_ge_zero: "-(pi/2) \<le> x \<Longrightarrow> x \<le> pi/2 \<Longrightarrow> 0 \<le> cos x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>- (pi / 2) \<le> x; x \<le> pi / 2\<rbrakk> \<Longrightarrow> 0 \<le> cos x
[PROOF STEP]
by (auto simp: order_le_less cos_gt_zero_pi)
    (metis cos_pi_half eq_divide_eq eq_numeral_simps(4))


[STATEMENT]
lemma wf_less_multiset: "wf {(M :: 'a multiset, N). M < N}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. wf {(M, N). M < N}
[PROOF STEP]
unfolding less_multiset_def multp_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. wf {(M, N). (M, N) \<in> mult {(x, y). x < y}}
[PROOF STEP]
by (auto intro: wf_mult wf)


[STATEMENT]
lemma map_IInf_func2:
  fixes F :: "'c::complete_lattice_with_dual upset \<Rightarrow> 'b::complete_lattice_with_dual upset"
  and G :: "'a::complete_lattice_with_dual upset \<Rightarrow> 'c upset"
  shows "map_IInf (F \<circ> G) = map_IInf F \<circ> map_IInf G"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. map_IInf (F \<circ> G) = map_IInf F \<circ> map_IInf G
[PROOF STEP]
unfolding map_IInf_def fun_eq_iff comp_def id_def us_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>x. IInf (F (G (Abs_upset (\<up> x)))) = IInf (F (Abs_upset (\<up> (IInf (G (Abs_upset (\<up> x)))))))
[PROOF STEP]
by (metis comp_apply id_apply us_IInf_inv us_def)


[STATEMENT]
lemma dom_map_graph: "dom f = Domain(map_graph f)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. dom f = Domain (map_graph f)
[PROOF STEP]
by (simp add: map_graph_def dom_def image_def)


[STATEMENT]
lemma Re_power_real [simp]: "Im x = 0 \<Longrightarrow> Re (x ^ n) = Re x ^ n "
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Im x = 0 \<Longrightarrow> Re (x ^ n) = Re x ^ n
[PROOF STEP]
by (induct n) simp_all


[STATEMENT]
lemma inj2_linear:
  fixes K V1 V2
  assumes h1: "vectorspace K V1" and h2: "vectorspace K V2"
  shows "linear_map K V2 (direct_sum V1 V2) (inj2 V1 V2)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. linear_map K V2 (direct_sum V1 V2) (inj2 V1 V2)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. linear_map K V2 (direct_sum V1 V2) (inj2 V1 V2)
[PROOF STEP]
from h1 h2
[PROOF STATE]
proof (chain)
picking this:
vectorspace K V1
vectorspace K V2
[PROOF STEP]
have mod: "mod_hom K V2 (direct_sum V1 V2) (inj2 V1 V2)"
[PROOF STATE]
proof (prove)
using this:
vectorspace K V1
vectorspace K V2

goal (1 subgoal):
 1. mod_hom K V2 (direct_sum V1 V2) (inj2 V1 V2)
[PROOF STEP]
by (unfold vectorspace_def, intro inj2_hom, auto)
[PROOF STATE]
proof (state)
this:
mod_hom K V2 (direct_sum V1 V2) (inj2 V1 V2)

goal (1 subgoal):
 1. linear_map K V2 (direct_sum V1 V2) (inj2 V1 V2)
[PROOF STEP]
from mod h1 h2
[PROOF STATE]
proof (chain)
picking this:
mod_hom K V2 (direct_sum V1 V2) (inj2 V1 V2)
vectorspace K V1
vectorspace K V2
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
mod_hom K V2 (direct_sum V1 V2) (inj2 V1 V2)
vectorspace K V1
vectorspace K V2

goal (1 subgoal):
 1. linear_map K V2 (direct_sum V1 V2) (inj2 V1 V2)
[PROOF STEP]
by (unfold linear_map_def vectorspace_def , auto, intro direct_sum_is_module, auto)
[PROOF STATE]
proof (state)
this:
linear_map K V2 (direct_sum V1 V2) (inj2 V1 V2)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma sum_p_i_H[simp]: "sum p_i H = 1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sum p_i H = 1
[PROOF STEP]
using C_smaller
[PROOF STATE]
proof (prove)
using this:
C \<subset> J

goal (1 subgoal):
 1. sum p_i H = 1
[PROOF STEP]
by (simp add: sum_diff p_i_distr)