[STATEMENT]
lemma dis_log_break:
  fixes d d' m m' :: nat
  assumes c: " \<^bold>g [^] d' \<otimes> (\<^bold>g [^] y) [^] m' = \<^bold>g [^] d \<otimes> (\<^bold>g [^] y) [^] m"
    and y_less_order: "y < order \<G>"
    and m_ge_m': "m > m'"
    and m: "m < order \<G>"
  shows "y = nat ((int d' - int d) * (fst (bezw ((m - m')) (order \<G>))) mod order \<G>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
have mm': "\<not> [m = m'] (mod order \<G>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. [m \<noteq> m'] (mod order \<G>)
[PROOF STEP]
using m m_ge_m' basic_trans_rules(19) cong_less_modulus_unique_nat
[PROOF STATE]
proof (prove)
using this:
m < order \<G>
m' < m
\<lbrakk>?x < ?y; ?y < ?z\<rbrakk> \<Longrightarrow> ?x < ?z
\<lbrakk>[?x = ?y] (mod ?m); ?x < ?m; ?y < ?m\<rbrakk> \<Longrightarrow> ?x = ?y

goal (1 subgoal):
 1. [m \<noteq> m'] (mod order \<G>)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
[m \<noteq> m'] (mod order \<G>)

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
hence gcd: "int (gcd ((m - m')) (order \<G>)) = 1"
[PROOF STATE]
proof (prove)
using this:
[m \<noteq> m'] (mod order \<G>)

goal (1 subgoal):
 1. int (gcd (m - m') (order \<G>)) = 1
[PROOF STEP]
using assms(3) assms(4) prime_field prime_order
[PROOF STATE]
proof (prove)
using this:
[m \<noteq> m'] (mod order \<G>)
m' < m
m < order \<G>
\<lbrakk>prime ?q; ?a < ?q; ?a \<noteq> 0\<rbrakk> \<Longrightarrow> coprime ?a ?q
prime (order \<G>)

goal (1 subgoal):
 1. int (gcd (m - m') (order \<G>)) = 1
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
int (gcd (m - m') (order \<G>)) = 1

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
have "\<^bold>g [^] (d + y * m) = \<^bold>g [^] (d' + y * m')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<^bold>g [^] (d + y * m) = \<^bold>g [^] (d' + y * m')
[PROOF STEP]
using c
[PROOF STATE]
proof (prove)
using this:
\<^bold>g [^] d' \<otimes> (\<^bold>g [^] y) [^] m' = \<^bold>g [^] d \<otimes> (\<^bold>g [^] y) [^] m

goal (1 subgoal):
 1. \<^bold>g [^] (d + y * m) = \<^bold>g [^] (d' + y * m')
[PROOF STEP]
by (simp add: nat_pow_mult nat_pow_pow)
[PROOF STATE]
proof (state)
this:
\<^bold>g [^] (d + y * m) = \<^bold>g [^] (d' + y * m')

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
hence "[d + y * m = d' + y * m'] (mod order \<G>)"
[PROOF STATE]
proof (prove)
using this:
\<^bold>g [^] (d + y * m) = \<^bold>g [^] (d' + y * m')

goal (1 subgoal):
 1. [d + y * m = d' + y * m'] (mod order \<G>)
[PROOF STEP]
by(simp add: pow_generator_eq_iff_cong finite_carrier)
[PROOF STATE]
proof (state)
this:
[d + y * m = d' + y * m'] (mod order \<G>)

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
hence "[int d + int y * int m = int d' + int y * int m'] (mod order \<G>)"
[PROOF STATE]
proof (prove)
using this:
[d + y * m = d' + y * m'] (mod order \<G>)

goal (1 subgoal):
 1. [int d + int y * int m = int d' + int y * int m'] (mod int (order \<G>))
[PROOF STEP]
using cong_int_iff
[PROOF STATE]
proof (prove)
using this:
[d + y * m = d' + y * m'] (mod order \<G>)
[int ?m = int ?q] (mod int ?n) = [?m = ?q] (mod ?n)

goal (1 subgoal):
 1. [int d + int y * int m = int d' + int y * int m'] (mod int (order \<G>))
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
[int d + int y * int m = int d' + int y * int m'] (mod int (order \<G>))

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
from cong_diff[OF this cong_refl, of "int d + int y * int m'"]
[PROOF STATE]
proof (chain)
picking this:
[int d + int y * int m - (int d + int y * int m') = int d' + int y * int m' - (int d + int y * int m')] (mod int (order \<G>))
[PROOF STEP]
have "[int y * int (m - m') = int d' - int d] (mod order \<G>)"
[PROOF STATE]
proof (prove)
using this:
[int d + int y * int m - (int d + int y * int m') = int d' + int y * int m' - (int d + int y * int m')] (mod int (order \<G>))

goal (1 subgoal):
 1. [int y * int (m - m') = int d' - int d] (mod int (order \<G>))
[PROOF STEP]
using m_ge_m'
[PROOF STATE]
proof (prove)
using this:
[int d + int y * int m - (int d + int y * int m') = int d' + int y * int m' - (int d + int y * int m')] (mod int (order \<G>))
m' < m

goal (1 subgoal):
 1. [int y * int (m - m') = int d' - int d] (mod int (order \<G>))
[PROOF STEP]
by(simp add: int_distrib of_nat_diff)
[PROOF STATE]
proof (state)
this:
[int y * int (m - m') = int d' - int d] (mod int (order \<G>))

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
hence *: "[int y * int (m - m') * (fst (bezw ((m - m')) (order \<G>))) = (int d' - int d) * (fst (bezw ((m - m')) (order \<G>)))] (mod order \<G>)"
[PROOF STATE]
proof (prove)
using this:
[int y * int (m - m') = int d' - int d] (mod int (order \<G>))

goal (1 subgoal):
 1. [int y * int (m - m') * Number_Theory_Aux.inverse (m - m') (order \<G>) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))
[PROOF STEP]
by (simp add: cong_scalar_right)
[PROOF STATE]
proof (state)
this:
[int y * int (m - m') * Number_Theory_Aux.inverse (m - m') (order \<G>) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
hence "[int y * (int (m - m') * (fst (bezw ((m - m')) (order \<G>)))) = (int d' - int d) * (fst (bezw ((m - m')) (order \<G>)))] (mod order \<G>)"
[PROOF STATE]
proof (prove)
using this:
[int y * int (m - m') * Number_Theory_Aux.inverse (m - m') (order \<G>) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))

goal (1 subgoal):
 1. [int y * (int (m - m') * Number_Theory_Aux.inverse (m - m') (order \<G>)) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))
[PROOF STEP]
by (simp add: more_arith_simps(11))
[PROOF STATE]
proof (state)
this:
[int y * (int (m - m') * Number_Theory_Aux.inverse (m - m') (order \<G>)) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
hence "[int y * 1 = (int d' - int d) * (fst (bezw ((m - m')) (order \<G>)))] (mod order \<G>)"
[PROOF STATE]
proof (prove)
using this:
[int y * (int (m - m') * Number_Theory_Aux.inverse (m - m') (order \<G>)) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))

goal (1 subgoal):
 1. [int y * 1 = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))
[PROOF STEP]
using inverse gcd
[PROOF STATE]
proof (prove)
using this:
[int y * (int (m - m') * Number_Theory_Aux.inverse (m - m') (order \<G>)) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))
gcd ?x ?q = 1 \<Longrightarrow> [int ?x * Number_Theory_Aux.inverse ?x ?q = 1] (mod int ?q)
int (gcd (m - m') (order \<G>)) = 1

goal (1 subgoal):
 1. [int y * 1 = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))
[PROOF STEP]
by (smt Groups.mult_ac(2) Number_Theory_Aux.inverse Totient.of_nat_eq_1_iff * cong_def int_ops(9) mod_mult_right_eq mod_one_cancel)
[PROOF STATE]
proof (state)
this:
[int y * 1 = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
hence "[int y = (int d' - int d) * (fst (bezw ((m - m')) (order \<G>)))] (mod order \<G>)"
[PROOF STATE]
proof (prove)
using this:
[int y * 1 = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))

goal (1 subgoal):
 1. [int y = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
[int y = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
hence "y mod order \<G> = (int d' - int d) * (fst (bezw ((m - m')) (order \<G>))) mod order \<G>"
[PROOF STATE]
proof (prove)
using this:
[int y = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))

goal (1 subgoal):
 1. int (y mod order \<G>) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>)
[PROOF STEP]
using cong_def zmod_int
[PROOF STATE]
proof (prove)
using this:
[int y = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>)] (mod int (order \<G>))
[?b = ?c] (mod ?a) = (?b mod ?a = ?c mod ?a)
int (?a mod ?b) = int ?a mod int ?b

goal (1 subgoal):
 1. int (y mod order \<G>) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
int (y mod order \<G>) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>)

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
int (y mod order \<G>) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>)

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
using y_less_order
[PROOF STATE]
proof (prove)
using this:
int (y mod order \<G>) = (int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>)
y < order \<G>

goal (1 subgoal):
 1. y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
y = nat ((int d' - int d) * Number_Theory_Aux.inverse (m - m') (order \<G>) mod int (order \<G>))

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma Bernstein_Poly_independent: assumes "c \<noteq> d"
  shows "poly_vs.independent {Bernstein_Poly x p c d | x. x \<in> {..p}}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. poly_vs.independent {Bernstein_Poly x p c d |x. x \<in> {..p}}
[PROOF STEP]
proof (rule poly_vs.card_le_dim_spanning)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. {Bernstein_Poly x p c d |x. x \<in> {..p}} \<subseteq> ?V
 2. ?V \<subseteq> poly_vs.span {Bernstein_Poly x p c d |x. x \<in> {..p}}
 3. finite {Bernstein_Poly x p c d |x. x \<in> {..p}}
 4. card {Bernstein_Poly x p c d |x. x \<in> {..p}} \<le> poly_vs.dim ?V
[PROOF STEP]
show "{Bernstein_Poly x p c d |x. x \<in> {.. p}} \<subseteq> {x. degree x \<le> p}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {Bernstein_Poly x p c d |x. x \<in> {..p}} \<subseteq> {x. degree x \<le> p}
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
c \<noteq> d

goal (1 subgoal):
 1. {Bernstein_Poly x p c d |x. x \<in> {..p}} \<subseteq> {x. degree x \<le> p}
[PROOF STEP]
by (auto simp: degree_Bernstein Bernstein_Poly_eq_rescale_01 degree_pcompose)
[PROOF STATE]
proof (state)
this:
{Bernstein_Poly x p c d |x. x \<in> {..p}} \<subseteq> {x. degree x \<le> p}

goal (3 subgoals):
 1. {x. degree x \<le> p} \<subseteq> poly_vs.span {Bernstein_Poly x p c d |x. x \<in> {..p}}
 2. finite {Bernstein_Poly x p c d |x. x \<in> {..p}}
 3. card {Bernstein_Poly x p c d |x. x \<in> {..p}} \<le> poly_vs.dim {x. degree x \<le> p}
[PROOF STEP]
show "{x. degree x \<le> p} \<subseteq> poly_vs.span {Bernstein_Poly x p c d |x. x \<in> {..p}}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {x. degree x \<le> p} \<subseteq> poly_vs.span {Bernstein_Poly x p c d |x. x \<in> {..p}}
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
c \<noteq> d

goal (1 subgoal):
 1. {x. degree x \<le> p} \<subseteq> poly_vs.span {Bernstein_Poly x p c d |x. x \<in> {..p}}
[PROOF STEP]
by (auto simp: Bernstein_Poly_span1)
[PROOF STATE]
proof (state)
this:
{x. degree x \<le> p} \<subseteq> poly_vs.span {Bernstein_Poly x p c d |x. x \<in> {..p}}

goal (2 subgoals):
 1. finite {Bernstein_Poly x p c d |x. x \<in> {..p}}
 2. card {Bernstein_Poly x p c d |x. x \<in> {..p}} \<le> poly_vs.dim {x. degree x \<le> p}
[PROOF STEP]
show "finite {Bernstein_Poly x p c d |x. x \<in> {..p}}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. finite {Bernstein_Poly x p c d |x. x \<in> {..p}}
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
finite {Bernstein_Poly x p c d |x. x \<in> {..p}}

goal (1 subgoal):
 1. card {Bernstein_Poly x p c d |x. x \<in> {..p}} \<le> poly_vs.dim {x. degree x \<le> p}
[PROOF STEP]
show "card {Bernstein_Poly x p c d |x. x \<in> {..p}} \<le> poly_vs.dim {x. degree x \<le> p}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. card {Bernstein_Poly x p c d |x. x \<in> {..p}} \<le> poly_vs.dim {x. degree x \<le> p}
[PROOF STEP]
apply (rule le_trans)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. card {Bernstein_Poly x p c d |x. x \<in> {..p}} \<le> ?j
 2. ?j \<le> poly_vs.dim {x. degree x \<le> p}
[PROOF STEP]
apply (subst image_Collect[symmetric], rule card_image_le, force)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. card {x. x \<in> {..p}} \<le> poly_vs.dim {x. degree x \<le> p}
[PROOF STEP]
by (force simp: dim_degree)
[PROOF STATE]
proof (state)
this:
card {Bernstein_Poly x p c d |x. x \<in> {..p}} \<le> poly_vs.dim {x. degree x \<le> p}

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma transpose_transpose_id[simp]: "transpose_matrix (transpose_matrix A) = A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. transpose_matrix (transpose_matrix A) = A
[PROOF STEP]
by (simp add: transpose_matrix_def)


[STATEMENT]
lemma stoch_proc_filt_filt_equiv:
  assumes "filt_equiv F M N"
  shows "stoch_proc_filt M f P n = stoch_proc_filt N f P n"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. stoch_proc_filt M f P n = stoch_proc_filt N f P n
[PROOF STEP]
using assms filt_equiv_space filt_equiv_sets
[PROOF STATE]
proof (prove)
using this:
filt_equiv F M N
filt_equiv ?F ?M ?N \<Longrightarrow> space ?M = space ?N
filt_equiv ?F ?M ?N \<Longrightarrow> sets ?M = sets ?N

goal (1 subgoal):
 1. stoch_proc_filt M f P n = stoch_proc_filt N f P n
[PROOF STEP]
unfolding stoch_proc_filt_def
[PROOF STATE]
proof (prove)
using this:
filt_equiv F M N
filt_equiv ?F ?M ?N \<Longrightarrow> space ?M = space ?N
filt_equiv ?F ?M ?N \<Longrightarrow> sets ?M = sets ?N

goal (1 subgoal):
 1. gen_subalgebra M (sigma_sets (space M) (\<Union>i\<in>{m. m \<le> n}. {f i -` A \<inter> space M |A. A \<in> sets P})) = gen_subalgebra N (sigma_sets (space N) (\<Union>i\<in>{m. m \<le> n}. {f i -` A \<inter> space N |A. A \<in> sets P}))
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>filt_equiv F M N; \<And>F M N. filt_equiv F M N \<Longrightarrow> space M = space N; \<And>F M N. filt_equiv F M N \<Longrightarrow> sets M = sets N\<rbrakk> \<Longrightarrow> gen_subalgebra M (sigma_sets (space M) (\<Union>i\<in>{m. m \<le> n}. {f i -` A \<inter> space M |A. A \<in> sets P})) = gen_subalgebra N (sigma_sets (space N) (\<Union>i\<in>{m. m \<le> n}. {f i -` A \<inter> space N |A. A \<in> sets P}))
[PROOF STEP]
have "space N = space M"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. space N = space M
[PROOF STEP]
by (metis assms filt_equiv_space)
[PROOF STATE]
proof (state)
this:
space N = space M

goal (1 subgoal):
 1. \<lbrakk>filt_equiv F M N; \<And>F M N. filt_equiv F M N \<Longrightarrow> space M = space N; \<And>F M N. filt_equiv F M N \<Longrightarrow> sets M = sets N\<rbrakk> \<Longrightarrow> gen_subalgebra M (sigma_sets (space M) (\<Union>i\<in>{m. m \<le> n}. {f i -` A \<inter> space M |A. A \<in> sets P})) = gen_subalgebra N (sigma_sets (space N) (\<Union>i\<in>{m. m \<le> n}. {f i -` A \<inter> space N |A. A \<in> sets P}))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
space N = space M
[PROOF STEP]
show "gen_subalgebra M (sigma_sets (space M) (\<Union>n\<in>{na. na \<le> n}. {f n -` C \<inter> space M |C. C \<in> sets P})) =
    gen_subalgebra N (sigma_sets (space N) (\<Union>n\<in>{na. na \<le> n}. {f n -` C \<inter> space N |C. C \<in> sets P}))"
[PROOF STATE]
proof (prove)
using this:
space N = space M

goal (1 subgoal):
 1. gen_subalgebra M (sigma_sets (space M) (\<Union>n\<in>{na. na \<le> n}. {f n -` C \<inter> space M |C. C \<in> sets P})) = gen_subalgebra N (sigma_sets (space N) (\<Union>n\<in>{na. na \<le> n}. {f n -` C \<inter> space N |C. C \<in> sets P}))
[PROOF STEP]
by (simp add: gen_subalgebra_def)
[PROOF STATE]
proof (state)
this:
gen_subalgebra M (sigma_sets (space M) (\<Union>n\<in>{na. na \<le> n}. {f n -` C \<inter> space M |C. C \<in> sets P})) = gen_subalgebra N (sigma_sets (space N) (\<Union>n\<in>{na. na \<le> n}. {f n -` C \<inter> space N |C. C \<in> sets P}))

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma length_sequence_of:
  assumes "bij_betw enum {0..<card A} A"
  assumes "f \<in> A \<rightarrow>\<^sub>E B"
  shows "length (sequence_of A enum f) = card A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. length (sequence_of A enum f) = card A
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
bij_betw enum {0..<card A} A
f \<in> A \<rightarrow>\<^sub>E B

goal (1 subgoal):
 1. length (sequence_of A enum f) = card A
[PROOF STEP]
unfolding sequence_of_def
[PROOF STATE]
proof (prove)
using this:
bij_betw enum {0..<card A} A
f \<in> A \<rightarrow>\<^sub>E B

goal (1 subgoal):
 1. length (map (\<lambda>n. f (enum n)) [0..<card A]) = card A
[PROOF STEP]
by simp


[STATEMENT]
lemma Ker_equality:
  "Ker = {a | a. a \<in> G \<and> \<eta> a = \<one>'}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Ker = {a |a. a \<in> G \<and> \<eta> a = \<one>'}
[PROOF STEP]
unfolding Ker_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<eta> -` {\<one>'} \<inter> G = {a |a. a \<in> G \<and> \<eta> a = \<one>'}
[PROOF STEP]
by auto


[STATEMENT]
lemma hypext_power_Hyperdual:
  "(*h* (\<lambda>x. x ^ n)) (Hyperdual a b c d) =
        a ^ n *\<^sub>H ba + (of_nat n * b * a ^ (n - 1)) *\<^sub>H e1 + (of_nat n * c * a ^ (n - 1)) *\<^sub>H e2 +
        (d * (of_nat n * a ^ (n - 1)) + b * c * (of_nat n * of_nat (n - 1) * a ^ (n - 2))) *\<^sub>H e12"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (*h* (\<lambda>x. x ^ n)) (Hyperdual a b c d) = a ^ n *\<^sub>H ba + (of_nat n * b * a ^ (n - 1)) *\<^sub>H e1 + (of_nat n * c * a ^ (n - 1)) *\<^sub>H e2 + (d * (of_nat n * a ^ (n - 1)) + b * c * (of_nat n * of_nat (n - 1) * a ^ (n - 2))) *\<^sub>H e12
[PROOF STEP]
by (simp add: hypext_Hyperdual_eq_parts algebra_simps)


[STATEMENT]
lemma p_int_pow_factor_nat_pow:
  assumes "a \<in> carrier Q\<^sub>p"
  shows "(\<pp>[^](n::int) \<otimes> a)[^](k::nat) = \<pp>[^](n*k) \<otimes> a[^]k"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<pp> [^] n \<otimes> a) [^] k = \<pp> [^] (n * int k) \<otimes> a [^] k
[PROOF STEP]
using assms Qp.nat_pow_distrib Qp_p_int_nat_pow_pow p_intpow_closed(1)
[PROOF STATE]
proof (prove)
using this:
a \<in> carrier Q\<^sub>p
\<lbrakk>?x \<in> carrier Q\<^sub>p; ?y \<in> carrier Q\<^sub>p\<rbrakk> \<Longrightarrow> (?x \<otimes> ?y) [^] ?n = ?x [^] ?n \<otimes> ?y [^] ?n
\<pp> [^] (?n * int ?m) = (\<pp> [^] ?n) [^] ?m
\<pp> [^] ?n \<in> carrier Q\<^sub>p

goal (1 subgoal):
 1. (\<pp> [^] n \<otimes> a) [^] k = \<pp> [^] (n * int k) \<otimes> a [^] k
[PROOF STEP]
by presburger


[STATEMENT]
lemma "filterlim (\<lambda>x::real. exp (exp (exp x / (1 - 1/x))) -
                    exp (exp (exp x / (1 - 1/x - ln x powr (-ln x))))) at_bot at_top"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. LIM x at_top. exp (exp (exp x / (1 - 1 / x))) - exp (exp (exp x / (1 - 1 / x - ln x powr - ln x))) :> at_bot
[PROOF STEP]
by real_asymp


[STATEMENT]
lemma less_multiset\<^sub>H\<^sub>O_imp_less_multiset\<^sub>D\<^sub>M: "less_multiset\<^sub>H\<^sub>O M N \<Longrightarrow> less_multiset\<^sub>D\<^sub>M M N"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. less_multiset\<^sub>H\<^sub>O M N \<Longrightarrow> less_multiset\<^sub>D\<^sub>M M N
[PROOF STEP]
unfolding less_multiset\<^sub>D\<^sub>M_def less_multiset\<^sub>H\<^sub>O_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. M \<noteq> N \<and> (\<forall>y. count N y < count M y \<longrightarrow> (\<exists>x>y. count M x < count N x)) \<Longrightarrow> \<exists>X Y. X \<noteq> {#} \<and> X \<subseteq># N \<and> M = N - X + Y \<and> (\<forall>k. k \<in># Y \<longrightarrow> (\<exists>a. a \<in># X \<and> k < a))
[PROOF STEP]
unfolding multp\<^sub>D\<^sub>M_def[symmetric] multp\<^sub>H\<^sub>O_def[symmetric]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. multp\<^sub>H\<^sub>O (<) M N \<Longrightarrow> multp\<^sub>D\<^sub>M (<) M N
[PROOF STEP]
by (rule multp\<^sub>H\<^sub>O_imp_multp\<^sub>D\<^sub>M)


[STATEMENT]
lemma inverse_split:
  assumes "a \<in> carrier G" and "b \<in> carrier G"
  shows "inv (a \<otimes> b) = inv a \<otimes> inv b"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. inv (a \<otimes> b) = inv a \<otimes> inv b
[PROOF STEP]
by (simp add:  assms comm_group.inv_mult cyclic_group_commute group_comm_groupI)


[STATEMENT]
lemma poly_function_tuple_comp_constant:
  assumes "is_function_tuple R n fs"
  assumes "a \<in> carrier R"
  assumes "x \<in> carrier (R\<^bsup>n\<^esup>)"
  shows "poly_function_tuple_comp R n fs (coord_const a) x = a"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. poly_function_tuple_comp R n fs (R.indexed_const a) x = a
[PROOF STEP]
unfolding poly_function_tuple_comp_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>as. eval_at_point R as (R.indexed_const a)) \<circ> function_tuple_eval R n fs) x = a
[PROOF STEP]
using assms comp_apply function_tuple_eval_closed
[PROOF STATE]
proof (prove)
using this:
is_function_tuple R n fs
a \<in> carrier R
x \<in> carrier (R\<^bsup>n\<^esup>)
(?f \<circ> ?g) ?x = ?f (?g ?x)
\<lbrakk>is_function_tuple ?R ?n ?fs; ?x \<in> carrier (?R\<^bsup>?n\<^esup>)\<rbrakk> \<Longrightarrow> function_tuple_eval ?R ?n ?fs ?x \<in> carrier (?R\<^bsup>length ?fs\<^esup>)

goal (1 subgoal):
 1. ((\<lambda>as. eval_at_point R as (R.indexed_const a)) \<circ> function_tuple_eval R n fs) x = a
[PROOF STEP]
by (metis eval_at_point_const)


[STATEMENT]
theorem rank_col_rank:
  fixes A::"'a::{field}^'n::{mod_type}^'m::{mod_type}"
  shows "rank A = col_rank A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. rank A = col_rank A
[PROOF STEP]
unfolding rank_def row_rank_eq_col_rank
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. col_rank A = col_rank A
[PROOF STEP]
..


[STATEMENT]
lemma join_idem[simp]: "compatible x y \<Longrightarrow> x \<squnion> (x \<squnion> y) = x \<squnion> y"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. compatible x y \<Longrightarrow> x \<squnion> (x \<squnion> y) = x \<squnion> y
[PROOF STEP]
apply (subst join_assoc[symmetric])
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. compatible x y \<Longrightarrow> compatible x x
 2. compatible x y \<Longrightarrow> compatible x (x \<squnion> y)
 3. compatible x y \<Longrightarrow> compatible x y
 4. compatible x y \<Longrightarrow> x \<squnion> x \<squnion> y = x \<squnion> y
[PROOF STEP]
apply (rule compatible_refl)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. compatible x y \<Longrightarrow> compatible x (x \<squnion> y)
 2. compatible x y \<Longrightarrow> compatible x y
 3. compatible x y \<Longrightarrow> x \<squnion> x \<squnion> y = x \<squnion> y
[PROOF STEP]
apply (erule compatible_above1)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. compatible x y \<Longrightarrow> compatible x y
 2. compatible x y \<Longrightarrow> x \<squnion> x \<squnion> y = x \<squnion> y
[PROOF STEP]
apply assumption
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. compatible x y \<Longrightarrow> x \<squnion> x \<squnion> y = x \<squnion> y
[PROOF STEP]
apply (subst join_self)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. compatible x y \<Longrightarrow> x \<squnion> y = x \<squnion> y
[PROOF STEP]
apply rule
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma i_set0_mult_mod_0_div: "
  \<lbrakk> I \<in> i_set0_mult k; k mod d = 0 \<rbrakk> \<Longrightarrow> I \<oslash> d \<in> i_set0_mult (k div d)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>I \<in> i_set0_mult k; k mod d = 0\<rbrakk> \<Longrightarrow> I \<oslash> d \<in> i_set0_mult (k div d)
[PROOF STEP]
apply (simp add: i_set0_mult_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>I = {} \<or> I \<in> i_set_mult k; k mod d = 0\<rbrakk> \<Longrightarrow> I \<oslash> d = {} \<or> I \<oslash> d \<in> i_set_mult (k div d)
[PROOF STEP]
apply (elim disjE)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>k mod d = 0; I = {}\<rbrakk> \<Longrightarrow> I \<oslash> d = {} \<or> I \<oslash> d \<in> i_set_mult (k div d)
 2. \<lbrakk>k mod d = 0; I \<in> i_set_mult k\<rbrakk> \<Longrightarrow> I \<oslash> d = {} \<or> I \<oslash> d \<in> i_set_mult (k div d)
[PROOF STEP]
apply (simp add: iT_Div_empty)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>k mod d = 0; I \<in> i_set_mult k\<rbrakk> \<Longrightarrow> I \<oslash> d = {} \<or> I \<oslash> d \<in> i_set_mult (k div d)
[PROOF STEP]
apply (simp add: i_set_mult_mod_0_div)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma emeasure_eq_sum_singleton:
  assumes "finite S" "\<And>x. x \<in> S \<Longrightarrow> {x} \<in> sets M"
  shows "emeasure M S = (\<Sum>x\<in>S. emeasure M {x})"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. emeasure M S = (\<Sum>x\<in>S. emeasure M {x})
[PROOF STEP]
using sum_emeasure[of "\<lambda>x. {x}" S M] assms
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>(\<lambda>x. {x}) ` S \<subseteq> sets M; disjoint_family_on (\<lambda>x. {x}) S; finite S\<rbrakk> \<Longrightarrow> (\<Sum>i\<in>S. emeasure M {i}) = emeasure M (\<Union>i\<in>S. {i})
finite S
?x \<in> S \<Longrightarrow> {?x} \<in> sets M

goal (1 subgoal):
 1. emeasure M S = (\<Sum>x\<in>S. emeasure M {x})
[PROOF STEP]
by (auto simp: disjoint_family_on_def subset_eq)


[STATEMENT]
theorem tree_height_estimate_lower:
  "tree_invar t \<Longrightarrow> size (tree_to_multiset t) \<ge> (2::nat)^(height_tree t)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. tree_invar t \<Longrightarrow> 2 ^ height_tree t \<le> size (tree_to_multiset t)
[PROOF STEP]
apply (cases t, simp only:)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x1 x2 x3 x4. \<lbrakk>tree_invar (Node x1 x2 x3 x4); t = Node x1 x2 x3 x4\<rbrakk> \<Longrightarrow> 2 ^ height_tree (Node x1 x2 x3 x4) \<le> size (tree_to_multiset (Node x1 x2 x3 x4))
[PROOF STEP]
apply (frule tree_rank_estimate_lower)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x1 x2 x3 x4. \<lbrakk>tree_invar (Node x1 x2 x3 x4); t = Node x1 x2 x3 x4; 2 ^ x3 \<le> size (tree_to_multiset (Node x1 x2 x3 x4))\<rbrakk> \<Longrightarrow> 2 ^ height_tree (Node x1 x2 x3 x4) \<le> size (tree_to_multiset (Node x1 x2 x3 x4))
[PROOF STEP]
apply (frule tree_rank_height)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x1 x2 x3 x4. \<lbrakk>tree_invar (Node x1 x2 x3 x4); t = Node x1 x2 x3 x4; 2 ^ x3 \<le> size (tree_to_multiset (Node x1 x2 x3 x4)); height_tree (Node x1 x2 x3 x4) = x3\<rbrakk> \<Longrightarrow> 2 ^ height_tree (Node x1 x2 x3 x4) \<le> size (tree_to_multiset (Node x1 x2 x3 x4))
[PROOF STEP]
apply (simp only: )
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma homeomorphic_map_homology_iso:
  assumes "homeomorphic_map X Y f"
  shows "(hom_induced p X {} Y {} f) \<in> iso (homology_group p X) (homology_group p Y)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hom_induced p X {} Y {} f \<in> Group.iso (homology_group p X) (homology_group p Y)
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
homeomorphic_map X Y f

goal (1 subgoal):
 1. hom_induced p X {} Y {} f \<in> Group.iso (homology_group p X) (homology_group p Y)
[PROOF STEP]
apply (simp add: iso_def bij_betw_def flip: section_and_retraction_eq_homeomorphic_map)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. section_map X Y f \<and> retraction_map X Y f \<Longrightarrow> hom_induced p X {} Y {} f \<in> hom (homology_group p X) (homology_group p Y) \<and> inj_on (hom_induced p X {} Y {} f) (carrier (homology_group p X)) \<and> hom_induced p X {} Y {} f ` carrier (homology_group p X) = carrier (homology_group p Y)
[PROOF STEP]
by (metis inj_on_hom_induced_section_map surj_hom_induced_retraction_map hom_induced_hom)


[STATEMENT]
lemma ccSUP_union:
  "countable A \<Longrightarrow> countable B \<Longrightarrow> (SUP i\<in>A \<union> B. M i) = sup (SUP i\<in>A. M i) (SUP i\<in>B. M i)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>countable A; countable B\<rbrakk> \<Longrightarrow> Sup (M ` (A \<union> B)) = sup (Sup (M ` A)) (Sup (M ` B))
[PROOF STEP]
by (auto intro!: order.antisym ccSUP_mono intro: le_supI1 le_supI2 ccSUP_least ccSUP_upper)


[STATEMENT]
lemma emeasure_hit_C_not_0: "emeasure \<PP> {\<omega> \<in> space \<PP>. hit_C \<omega>} \<noteq> 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. emeasure \<PP> {\<omega> \<in> space \<PP>. hit_C \<omega>} \<noteq> 0
[PROOF STEP]
using p_H p_H_p_f_less_1
[PROOF STATE]
proof (prove)
using this:
0 < p_H
p_H < 1
p_H * p_f < 1

goal (1 subgoal):
 1. emeasure \<PP> {\<omega> \<in> space \<PP>. hit_C \<omega>} \<noteq> 0
[PROOF STEP]
unfolding Pr_hit_C T.emeasure_eq_measure
[PROOF STATE]
proof (prove)
using this:
0 < p_H
p_H < 1
p_H * p_f < 1

goal (1 subgoal):
 1. ennreal ((1 - p_H) / (1 - p_H * p_f)) \<noteq> 0
[PROOF STEP]
by auto


[STATEMENT]
lemma suminf_le_const: "summable f \<Longrightarrow> (\<And>n. sum f {..<n} \<le> x) \<Longrightarrow> suminf f \<le> x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>summable f; \<And>n. sum f {..<n} \<le> x\<rbrakk> \<Longrightarrow> suminf f \<le> x
[PROOF STEP]
by (metis LIMSEQ_le_const2 summable_LIMSEQ)


[STATEMENT]
lemma sin_monotone_2pi:
  assumes "- (pi/2) \<le> y" and "y < x" and "x \<le> pi/2"
  shows "sin y < sin x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sin y < sin x
[PROOF STEP]
unfolding sin_cos_eq
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cos (of_real pi / 2 - y) < cos (of_real pi / 2 - x)
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
- (pi / 2) \<le> y
y < x
x \<le> pi / 2

goal (1 subgoal):
 1. cos (of_real pi / 2 - y) < cos (of_real pi / 2 - x)
[PROOF STEP]
by (auto intro: cos_monotone_0_pi)


[STATEMENT]
lemma mat_diag_one[simp]: "mat_diag n (\<lambda> x. 1) = 1\<^sub>m n"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. mat_diag n (\<lambda>x. 1::'a) = 1\<^sub>m n
[PROOF STEP]
unfolding mat_diag_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. mat n n (\<lambda>(i, j). if i = j then 1::'a else (0::'a)) = 1\<^sub>m n
[PROOF STEP]
by auto


[STATEMENT]
lemma upto_enum_step_shift:
  "is_aligned p n \<Longrightarrow> ([p , p + 2 ^ m .e. p + 2 ^ n - 1]) = map ((+) p) [0, 2 ^ m .e. 2 ^ n - 1]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. is_aligned p n \<Longrightarrow> [p , p + 2 ^ m .e. p + 2 ^ n - 1] = map ((+) p) [0 , 2 ^ m .e. 2 ^ n - 1]
[PROOF STEP]
apply (erule is_aligned_get_word_bits)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>is_aligned p n; n < LENGTH('a)\<rbrakk> \<Longrightarrow> [p , p + 2 ^ m .e. p + 2 ^ n - 1] = map ((+) p) [0 , 2 ^ m .e. 2 ^ n - 1]
 2. \<lbrakk>p = 0; LENGTH('a) \<le> n\<rbrakk> \<Longrightarrow> [p , p + 2 ^ m .e. p + 2 ^ n - 1] = map ((+) p) [0 , 2 ^ m .e. 2 ^ n - 1]
[PROOF STEP]
prefer 2
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>p = 0; LENGTH('a) \<le> n\<rbrakk> \<Longrightarrow> [p , p + 2 ^ m .e. p + 2 ^ n - 1] = map ((+) p) [0 , 2 ^ m .e. 2 ^ n - 1]
 2. \<lbrakk>is_aligned p n; n < LENGTH('a)\<rbrakk> \<Longrightarrow> [p , p + 2 ^ m .e. p + 2 ^ n - 1] = map ((+) p) [0 , 2 ^ m .e. 2 ^ n - 1]
[PROOF STEP]
apply (simp add: map_idI)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>is_aligned p n; n < LENGTH('a)\<rbrakk> \<Longrightarrow> [p , p + 2 ^ m .e. p + 2 ^ n - 1] = map ((+) p) [0 , 2 ^ m .e. 2 ^ n - 1]
[PROOF STEP]
apply (clarsimp simp: upto_enum_step_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>is_aligned p n; n < LENGTH('a); p + 2 ^ n - 1 < p\<rbrakk> \<Longrightarrow> [0 .e. (2 ^ n - 1) div 2 ^ m] = []
[PROOF STEP]
apply (frule is_aligned_no_overflow)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>is_aligned p n; n < LENGTH('a); p + 2 ^ n - 1 < p; p \<le> p + 2 ^ n - 1\<rbrakk> \<Longrightarrow> [0 .e. (2 ^ n - 1) div 2 ^ m] = []
[PROOF STEP]
apply (simp add: linorder_not_le [symmetric])
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma finite_hom_components: "finite (hom_components p)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. finite (hom_components p)
[PROOF STEP]
unfolding hom_components_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. finite (hom_component p ` deg_pm ` keys p)
[PROOF STEP]
using finite_keys
[PROOF STATE]
proof (prove)
using this:
finite (keys ?f)

goal (1 subgoal):
 1. finite (hom_component p ` deg_pm ` keys p)
[PROOF STEP]
by (intro finite_imageI)


[STATEMENT]
lemma Suc_le_pred_conv: "0 < n \<Longrightarrow> (Suc m \<le> n) = (m \<le> n - Suc 0)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. 0 < n \<Longrightarrow> (Suc m \<le> n) = (m \<le> n - Suc 0)
[PROOF STEP]
by (safe, simp_all)


[STATEMENT]
lemma G_in_rell: "rell_G L1 L2 = (\<lambda>x y. \<exists>z. (set1_G z \<subseteq> {(x, y). L1 x y} \<and>
  set2_G z \<subseteq> {(x, y). L2 x y}) \<and> mapl_G fst fst z = x \<and> mapl_G snd snd z = y)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. rell_G L1 L2 = (\<lambda>x y. \<exists>z. (set1_G z \<subseteq> {(x, y). L1 x y} \<and> set2_G z \<subseteq> {(x, y). L2 x y}) \<and> mapl_G fst fst z = x \<and> mapl_G snd snd z = y)
[PROOF STEP]
using rell_G_compp_Grp
[PROOF STATE]
proof (prove)
using this:
rell_G ?L1.0 ?L2.0 = (Grp {x. set1_G x \<subseteq> {(x, y). ?L1.0 x y} \<and> set2_G x \<subseteq> {(x, y). ?L2.0 x y}} (mapl_G fst fst))\<inverse>\<inverse> OO Grp {x. set1_G x \<subseteq> {(x, y). ?L1.0 x y} \<and> set2_G x \<subseteq> {(x, y). ?L2.0 x y}} (mapl_G snd snd)

goal (1 subgoal):
 1. rell_G L1 L2 = (\<lambda>x y. \<exists>z. (set1_G z \<subseteq> {(x, y). L1 x y} \<and> set2_G z \<subseteq> {(x, y). L2 x y}) \<and> mapl_G fst fst z = x \<and> mapl_G snd snd z = y)
[PROOF STEP]
by (simp add: OO_Grp_alt)


[STATEMENT]
lemma lcf_eq_deg_eq_imp_ltrm_eq:
  assumes "p \<in> carrier P"
  assumes "q \<in> carrier P"
  assumes "degree p > 0"
  assumes "degree p = degree q"
  assumes "lcf p = lcf q"
  shows "ltrm p = ltrm q"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. monom P (p (deg R p)) (deg R p) = monom P (q (deg R q)) (deg R q)
[PROOF STEP]
using assms(4) assms(5)
[PROOF STATE]
proof (prove)
using this:
deg R p = deg R q
p (deg R p) = q (deg R q)

goal (1 subgoal):
 1. monom P (p (deg R p)) (deg R p) = monom P (q (deg R q)) (deg R q)
[PROOF STEP]
by (simp add: leading_term_def)


[STATEMENT]
lemma diameter_Max_alt: "diameter = Max ((\<lambda> v. eccentricity v) ` V)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. diameter = Max (eccentricity ` V)
[PROOF STEP]
unfolding diameter_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Sup (eccentricity ` V) = Max (eccentricity ` V)
[PROOF STEP]
using Sup_enat_def finV not_empty
[PROOF STATE]
proof (prove)
using this:
Sup ?A = (if ?A = {} then 0 else if finite ?A then Max ?A else \<infinity>)
finite V
V \<noteq> {}

goal (1 subgoal):
 1. Sup (eccentricity ` V) = Max (eccentricity ` V)
[PROOF STEP]
by auto


[STATEMENT]
lemma dg_prod_Cod_app_component_app[dg_cs_simps]:
  assumes "f \<in>\<^sub>\<circ> (\<Prod>\<^sub>D\<^sub>Gi\<in>\<^sub>\<circ>I. \<AA> i)\<lparr>Arr\<rparr>" and "i \<in>\<^sub>\<circ> I"
  shows "(\<Prod>\<^sub>D\<^sub>Gi\<in>\<^sub>\<circ>I. \<AA> i)\<lparr>Cod\<rparr>\<lparr>f\<rparr>\<lparr>i\<rparr> = \<AA> i\<lparr>Cod\<rparr>\<lparr>f\<lparr>i\<rparr>\<rparr>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. dg_prod I \<AA>\<lparr>Cod\<rparr>\<lparr>f\<rparr>\<lparr>i\<rparr> = \<AA> i\<lparr>Cod\<rparr>\<lparr>f\<lparr>i\<rparr>\<rparr>
[PROOF STEP]
using assms(2)
[PROOF STATE]
proof (prove)
using this:
i \<in>\<^sub>\<circ> I

goal (1 subgoal):
 1. dg_prod I \<AA>\<lparr>Cod\<rparr>\<lparr>f\<rparr>\<lparr>i\<rparr> = \<AA> i\<lparr>Cod\<rparr>\<lparr>f\<lparr>i\<rparr>\<rparr>
[PROOF STEP]
unfolding dg_prod_Cod_app[OF assms(1)]
[PROOF STATE]
proof (prove)
using this:
i \<in>\<^sub>\<circ> I

goal (1 subgoal):
 1. (\<lambda>i\<in>\<^sub>\<circ>I. \<AA> i\<lparr>Cod\<rparr>\<lparr>f\<lparr>i\<rparr>\<rparr>)\<lparr>i\<rparr> = \<AA> i\<lparr>Cod\<rparr>\<lparr>f\<lparr>i\<rparr>\<rparr>
[PROOF STEP]
by simp


[STATEMENT]
lemma vector_derivative_linepath_within:
    "x \<in> {0..1} \<Longrightarrow> vector_derivative (linepath a b) (at x within {0..1}) = b - a"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x \<in> {0..1} \<Longrightarrow> vector_derivative (linepath a b) (at x within {0..1}) = b - a
[PROOF STEP]
apply (rule vector_derivative_within_cbox [of 0 "1::real", simplified])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. x \<in> {0..1} \<Longrightarrow> 0 \<le> x \<and> x \<le> 1
 2. x \<in> {0..1} \<Longrightarrow> (linepath a b has_vector_derivative b - a) (at x within {0..1})
[PROOF STEP]
apply (auto simp: has_vector_derivative_linepath_within)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma singular_chain_add:
   "\<lbrakk>singular_chain p X a; singular_chain p X b\<rbrakk> \<Longrightarrow> singular_chain p X (a+b)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>singular_chain p X a; singular_chain p X b\<rbrakk> \<Longrightarrow> singular_chain p X (a + b)
[PROOF STEP]
unfolding singular_chain_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>Poly_Mapping.keys a \<subseteq> singular_simplex_set p X; Poly_Mapping.keys b \<subseteq> singular_simplex_set p X\<rbrakk> \<Longrightarrow> Poly_Mapping.keys (a + b) \<subseteq> singular_simplex_set p X
[PROOF STEP]
using keys_add [of a b]
[PROOF STATE]
proof (prove)
using this:
Poly_Mapping.keys (a + b) \<subseteq> Poly_Mapping.keys a \<union> Poly_Mapping.keys b

goal (1 subgoal):
 1. \<lbrakk>Poly_Mapping.keys a \<subseteq> singular_simplex_set p X; Poly_Mapping.keys b \<subseteq> singular_simplex_set p X\<rbrakk> \<Longrightarrow> Poly_Mapping.keys (a + b) \<subseteq> singular_simplex_set p X
[PROOF STEP]
by blast


[STATEMENT]
lemma dvd_div_gt0: "d dvd n \<Longrightarrow> n > 0 \<Longrightarrow> n div d > (0::nat)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>d dvd n; 0 < n\<rbrakk> \<Longrightarrow> 0 < n div d
[PROOF STEP]
by (auto elim: dvdE)


[STATEMENT]
lemma countable_var: "countable (UNIV :: var set)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. countable UNIV
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. countable UNIV
[PROOF STEP]
have 0: "(UNIV :: var set) \<noteq> {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. UNIV \<noteq> {}
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
UNIV \<noteq> {}

goal (1 subgoal):
 1. countable UNIV
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. countable UNIV
[PROOF STEP]
unfolding countable_card_of_nat
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. |UNIV| \<le>o |UNIV|
[PROOF STEP]
unfolding card_of_ordLeq2[symmetric, OF 0]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>g. surj g
[PROOF STEP]
apply(rule exI[of _ Variable])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. surj Variable
[PROOF STEP]
unfolding image_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {y. \<exists>x\<in>UNIV. y = Variable x} = UNIV
[PROOF STEP]
apply auto
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x. \<exists>xa. x = Variable xa
[PROOF STEP]
by (case_tac x, auto)
[PROOF STATE]
proof (state)
this:
countable UNIV

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma continuous_on_eq:
  "\<lbrakk>continuous_on s f; \<And>x. x \<in> s \<Longrightarrow> f x = g x\<rbrakk> \<Longrightarrow> continuous_on s g"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>continuous_on s f; \<And>x. x \<in> s \<Longrightarrow> f x = g x\<rbrakk> \<Longrightarrow> continuous_on s g
[PROOF STEP]
unfolding continuous_on_def tendsto_def eventually_at_topological
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>\<forall>x\<in>s. \<forall>S. open S \<longrightarrow> f x \<in> S \<longrightarrow> (\<exists>Sa. open Sa \<and> x \<in> Sa \<and> (\<forall>xa\<in>Sa. xa \<noteq> x \<longrightarrow> xa \<in> s \<longrightarrow> f xa \<in> S)); \<And>x. x \<in> s \<Longrightarrow> f x = g x\<rbrakk> \<Longrightarrow> \<forall>x\<in>s. \<forall>S. open S \<longrightarrow> g x \<in> S \<longrightarrow> (\<exists>Sa. open Sa \<and> x \<in> Sa \<and> (\<forall>xa\<in>Sa. xa \<noteq> x \<longrightarrow> xa \<in> s \<longrightarrow> g xa \<in> S))
[PROOF STEP]
by simp


[STATEMENT]
lemma combine_union_sets_disjoint:
  fixes X Y
  defines "Z \<equiv> X \<union> {x. x \<in> Y \<and> set x \<inter> \<Union>(set ` X) = {}}"
  assumes "\<forall>xs \<in> Y. \<forall>ys \<in> Y. xs = ys \<or> set xs \<inter> set ys = {}"
      and "\<forall>xs \<in> X. \<forall>ys \<in> X. xs = ys \<or> set xs \<inter> set ys = {}"
    shows "\<forall>xs \<in> Z. \<forall>ys \<in> Z. xs = ys \<or> set xs \<inter> set ys = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>xs\<in>Z. \<forall>ys\<in>Z. xs = ys \<or> set xs \<inter> set ys = {}
[PROOF STEP]
unfolding Z_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>xs\<in>X \<union> {x \<in> Y. set x \<inter> \<Union> (set ` X) = {}}. \<forall>ys\<in>X \<union> {x \<in> Y. set x \<inter> \<Union> (set ` X) = {}}. xs = ys \<or> set xs \<inter> set ys = {}
[PROOF STEP]
using assms(2,3)
[PROOF STATE]
proof (prove)
using this:
\<forall>xs\<in>Y. \<forall>ys\<in>Y. xs = ys \<or> set xs \<inter> set ys = {}
\<forall>xs\<in>X. \<forall>ys\<in>X. xs = ys \<or> set xs \<inter> set ys = {}

goal (1 subgoal):
 1. \<forall>xs\<in>X \<union> {x \<in> Y. set x \<inter> \<Union> (set ` X) = {}}. \<forall>ys\<in>X \<union> {x \<in> Y. set x \<inter> \<Union> (set ` X) = {}}. xs = ys \<or> set xs \<inter> set ys = {}
[PROOF STEP]
by force


[STATEMENT]
lemma bounded_path_image: "path g \<Longrightarrow> bounded(path_image g)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. path g \<Longrightarrow> bounded (path_image g)
[PROOF STEP]
by (simp add: compact_imp_bounded compact_path_image)


[STATEMENT]
lemma wellformed_alt_fst:  "{x, y} \<in> E \<Longrightarrow> x \<in> V"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {x, y} \<in> E \<Longrightarrow> x \<in> V
[PROOF STEP]
using wellformed
[PROOF STATE]
proof (prove)
using this:
?e \<in> E \<Longrightarrow> ?e \<subseteq> V

goal (1 subgoal):
 1. {x, y} \<in> E \<Longrightarrow> x \<in> V
[PROOF STEP]
by auto


[STATEMENT]
lemma diagvector_mult[simp]: "diagvector x ** diagvector y = diagvector (\<lambda> i. x i * y i)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. diagvector x ** diagvector y = diagvector (\<lambda>i. x i * y i)
[PROOF STEP]
unfolding diagvector_mult_left
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<chi>i j. x i * diagvector y $h i $h j) = diagvector (\<lambda>i. x i * y i)
[PROOF STEP]
unfolding diagvector_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<chi>i j. x i * (\<chi>i j. if i = j then y i else (0::'a)) $h i $h j) = (\<chi>i j. if i = j then x i * y i else (0::'a))
[PROOF STEP]
by (auto simp: vec_eq_iff)


[STATEMENT]
lemma set_of_map_alt_def: "set_of_map m = (\<lambda>k. (k, the (m k))) ` dom m"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. set_of_map m = (\<lambda>k. (k, the (m k))) ` dom m
[PROOF STEP]
unfolding set_of_map_def dom_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {(k, v) |k v. m k = Some v} = (\<lambda>k. (k, the (m k))) ` {a. m a \<noteq> None}
[PROOF STEP]
by auto


[STATEMENT]
lemma cis_pi_half[simp]: "cis (pi / 2) = \<i>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cis (pi / 2) = \<i>
[PROOF STEP]
by (simp add: cis.ctr complex_eq_iff)


[STATEMENT]
lemma fds_truncate_inverse:
  "fds_truncate m (inverse (fds_truncate m (f :: 'a :: field fds))) = fds_truncate m (inverse f)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fds_truncate m (inverse (fds_truncate m f)) = fds_truncate m (inverse f)
[PROOF STEP]
proof (rule fds_truncate_cong, goal_cases)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>0 < m; 0 < n; n \<le> m\<rbrakk> \<Longrightarrow> fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n
[PROOF STEP]
case (1 n)
[PROOF STATE]
proof (state)
this:
0 < m
0 < n
n \<le> m

goal (1 subgoal):
 1. \<And>n. \<lbrakk>0 < m; 0 < n; n \<le> m\<rbrakk> \<Longrightarrow> fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n
[PROOF STEP]
have *: "dirichlet_inverse (\<lambda>n. if n \<le> m then fds_nth f n else 0) (inverse (fds_nth f 1)) n =
             dirichlet_inverse (fds_nth f) (inverse (fds_nth f 1)) n"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. dirichlet_inverse (\<lambda>n. if n \<le> m then fds_nth f n else (0::'a)) (inverse (fds_nth f 1)) n = dirichlet_inverse (fds_nth f) (inverse (fds_nth f 1)) n
[PROOF STEP]
using 1
[PROOF STATE]
proof (prove)
using this:
0 < m
0 < n
n \<le> m

goal (1 subgoal):
 1. dirichlet_inverse (\<lambda>n. if n \<le> m then fds_nth f n else (0::'a)) (inverse (fds_nth f 1)) n = dirichlet_inverse (fds_nth f) (inverse (fds_nth f 1)) n
[PROOF STEP]
by (intro dirichlet_inverse_cong_simp) auto
[PROOF STATE]
proof (state)
this:
dirichlet_inverse (\<lambda>n. if n \<le> m then fds_nth f n else (0::'a)) (inverse (fds_nth f 1)) n = dirichlet_inverse (fds_nth f) (inverse (fds_nth f 1)) n

goal (1 subgoal):
 1. \<And>n. \<lbrakk>0 < m; 0 < n; n \<le> m\<rbrakk> \<Longrightarrow> fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n
[PROOF STEP]
proof (cases "fds_nth f 1 = 0")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. fds_nth f 1 = (0::'a) \<Longrightarrow> fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n
 2. fds_nth f 1 \<noteq> (0::'a) \<Longrightarrow> fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
fds_nth f 1 = (0::'a)

goal (2 subgoals):
 1. fds_nth f 1 = (0::'a) \<Longrightarrow> fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n
 2. fds_nth f 1 \<noteq> (0::'a) \<Longrightarrow> fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
fds_nth f 1 = (0::'a)

goal (1 subgoal):
 1. fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n
[PROOF STEP]
by (auto simp: inverse_fds_nonunit fds_nth_truncate)
[PROOF STATE]
proof (state)
this:
fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n

goal (1 subgoal):
 1. fds_nth f 1 \<noteq> (0::'a) \<Longrightarrow> fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n
[PROOF STEP]
qed (insert * 1, auto simp: inverse_fds_def fds_nth_fds' fds_nth_truncate Suc_le_eq)
[PROOF STATE]
proof (state)
this:
fds_nth (inverse (fds_truncate m f)) n = fds_nth (inverse f) n

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma inverts_mat_length:
  assumes "square_mat A" "inverts_mat A B" "inverts_mat B A"
  shows "dim_row B = dim_row A" "dim_col B = dim_col A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. dim_row B = dim_row A &&& dim_col B = dim_col A
[PROOF STEP]
apply (metis assms(1) assms(3) index_mult_mat(3) index_one_mat(3) inverts_mat_def square_mat.simps)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. dim_col B = dim_col A
[PROOF STEP]
by (metis assms(1) assms(2) index_mult_mat(3) index_one_mat(3) inverts_mat_def square_mat.simps)


[STATEMENT]
lemma cball_divide_subset_numeral: "cball x (e / numeral w) \<subseteq> cball x e"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cball x (e / numeral w) \<subseteq> cball x e
[PROOF STEP]
using cball_divide_subset one_le_numeral
[PROOF STATE]
proof (prove)
using this:
1 \<le> ?d \<Longrightarrow> cball ?x (?e / ?d) \<subseteq> cball ?x ?e
(1::?'a) \<le> numeral ?n

goal (1 subgoal):
 1. cball x (e / numeral w) \<subseteq> cball x e
[PROOF STEP]
by blast


[STATEMENT]
lemma f_neg [simp]: "v \<in> carrier M\<Longrightarrow>f (\<ominus>\<^bsub>M\<^esub> v) = \<ominus>\<^bsub>N\<^esub> f v"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. v \<in> carrier M \<Longrightarrow> f (\<ominus>\<^bsub>M\<^esub> v) = \<ominus>\<^bsub>N\<^esub> f v
[PROOF STEP]
by (simp flip: M.smult_minus_1 N.smult_minus_1)


[STATEMENT]
lemma (in cpx_sq_mat) make_pm_spectrum:
  assumes "A\<in> fc_mats"
  and "hermitian A"
  and "make_pm A = (p,M)"
shows "(\<lambda>i. meas_outcome_val (proj_meas_outcomes (make_pm A) i)) ` {..< p} = spectrum A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p} = spectrum A
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. (\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p} \<subseteq> spectrum A
 2. spectrum A \<subseteq> (\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p}
[PROOF STEP]
show "(\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p} \<subseteq>
    spectrum A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p} \<subseteq> spectrum A
[PROOF STEP]
using assms make_pm_eigenvalues make_pm_decomp
[PROOF STATE]
proof (prove)
using this:
A \<in> fc_mats
hermitian A
make_pm A = (p, M)
\<lbrakk>?A \<in> fc_mats; hermitian ?A; ?i < proj_meas_size (make_pm ?A)\<rbrakk> \<Longrightarrow> complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm ?A) ?i)) \<in> spectrum ?A
make_pm ?A = (proj_meas_size (make_pm ?A), proj_meas_outcomes (make_pm ?A))

goal (1 subgoal):
 1. (\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p} \<subseteq> spectrum A
[PROOF STEP]
by (metis (mono_tags, lifting) Pair_inject image_subsetI lessThan_iff)
[PROOF STATE]
proof (state)
this:
(\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p} \<subseteq> spectrum A

goal (1 subgoal):
 1. spectrum A \<subseteq> (\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p}
[PROOF STEP]
show "spectrum A \<subseteq>
    (\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. spectrum A \<subseteq> (\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p}
[PROOF STEP]
by (metis Pair_inject assms equalityE  make_pm_decomp spectrum_meas_outcome_val_eq)
[PROOF STATE]
proof (state)
this:
spectrum A \<subseteq> (\<lambda>x. complex_of_real (meas_outcome_val (proj_meas_outcomes (make_pm A) x))) ` {..<p}

goal:
No subgoals!
[PROOF STEP]
qed