[STATEMENT]
lemma adds_fun_iff: "f adds (g::'a \<Rightarrow> 'b) \<longleftrightarrow> (\<forall>x. f x adds g x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (f adds g) = (\<forall>x. f x adds g x)
[PROOF STEP]
unfolding adds_def plus_fun_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<exists>k. g = (\<lambda>x. f x + k x)) = (\<forall>x. \<exists>k. g x = f x + k)
[PROOF STEP]
by metis


[STATEMENT]
lemma card_set_ss_indicator:
  assumes "A \<subseteq> B"
  assumes "finite B"
  shows "card A = (\<Sum> p \<in> B. indicator A p)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
obtain C where ceq: "C = B - A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>C. C = B - A \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
C = B - A

goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
C = B - A
[PROOF STEP]
have beq: "B = A \<union> C"
[PROOF STATE]
proof (prove)
using this:
C = B - A

goal (1 subgoal):
 1. B = A \<union> C
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
C = B - A
A \<subseteq> B
finite B

goal (1 subgoal):
 1. B = A \<union> C
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
B = A \<union> C

goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
have bint: "A \<inter> C = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A \<inter> C = {}
[PROOF STEP]
using ceq
[PROOF STATE]
proof (prove)
using this:
C = B - A

goal (1 subgoal):
 1. A \<inter> C = {}
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
A \<inter> C = {}

goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
have finite: "finite A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. finite A
[PROOF STEP]
using assms finite_subset
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> B
finite B
\<lbrakk>?A \<subseteq> ?B; finite ?B\<rbrakk> \<Longrightarrow> finite ?A

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

goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
have zero: "\<And> p. p \<in> C \<Longrightarrow> indicator (A) p = 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>p. p \<in> C \<Longrightarrow> indicator A p = (0::'b)
[PROOF STEP]
by (simp add: ceq)
[PROOF STATE]
proof (state)
this:
?p \<in> C \<Longrightarrow> indicator A ?p = (0::?'b1)

goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
?p \<in> C \<Longrightarrow> indicator A ?p = (0::?'b1)
[PROOF STEP]
have "card A = (\<Sum> p \<in> A . indicator (A) p)"
[PROOF STATE]
proof (prove)
using this:
?p \<in> C \<Longrightarrow> indicator A ?p = (0::?'b1)

goal (1 subgoal):
 1. card A = sum (indicator A) A
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
card A = sum (indicator A) A

goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
card A = sum (indicator A) A

goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
have "... = (\<Sum> p \<in> A . indicator A p) + (\<Sum> p \<in> C . indicator A p)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sum (indicator A) A = sum (indicator A) A + sum (indicator A) C
[PROOF STEP]
using zero
[PROOF STATE]
proof (prove)
using this:
?p \<in> C \<Longrightarrow> indicator A ?p = (0::?'b1)

goal (1 subgoal):
 1. sum (indicator A) A = sum (indicator A) A + sum (indicator A) C
[PROOF STEP]
by (metis add_cancel_left_right sum.neutral)
[PROOF STATE]
proof (state)
this:
sum (indicator A) A = sum (indicator A) A + sum (indicator A) C

goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
card A = sum (indicator A) A + sum (indicator A) C
[PROOF STEP]
show "card A = (\<Sum> p \<in> B. indicator A p)"
[PROOF STATE]
proof (prove)
using this:
card A = sum (indicator A) A + sum (indicator A) C

goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
using beq bint assms
[PROOF STATE]
proof (prove)
using this:
card A = sum (indicator A) A + sum (indicator A) C
B = A \<union> C
A \<inter> C = {}
A \<subseteq> B
finite B

goal (1 subgoal):
 1. card A = sum (indicator A) B
[PROOF STEP]
by (metis add.commute ceq sum.subset_diff)
[PROOF STATE]
proof (state)
this:
card A = sum (indicator A) B

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma matrix_to_blinfun_comp: "matrix_to_blinfun ((m:: real^_^_) ** n) = (matrix_to_blinfun m) o\<^sub>L (matrix_to_blinfun n)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. matrix_to_blinfun (m ** n) = matrix_to_blinfun m o\<^sub>L matrix_to_blinfun n
[PROOF STEP]
by (auto intro!: blinfun_eqI simp: matrix_vector_mul_assoc[symmetric] matrix_to_blinfun_mult)


[STATEMENT]
lemma type_to_set:
  shows "class.nontriv TYPE('b)" (is ?a) and "n=CARD('b)" (is ?b)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. class.nontriv TYPE('b) &&& n = CARD('b)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. class.nontriv TYPE('b)
 2. n = CARD('b)
[PROOF STEP]
from local_typedef
[PROOF STATE]
proof (chain)
picking this:
\<exists>Rep Abs. type_definition Rep Abs {0..<int n}
[PROOF STEP]
obtain Rep::"('b \<Rightarrow> int)" and Abs
    where t: "type_definition Rep Abs {0..<n :: int}"
[PROOF STATE]
proof (prove)
using this:
\<exists>Rep Abs. type_definition Rep Abs {0..<int n}

goal (1 subgoal):
 1. (\<And>Rep Abs. type_definition Rep Abs {0..<int n} \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
type_definition Rep Abs {0..<int n}

goal (2 subgoals):
 1. class.nontriv TYPE('b)
 2. n = CARD('b)
[PROOF STEP]
have "card (UNIV :: 'b set) = card {0..<n}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. CARD('b) = card {0..<n}
[PROOF STEP]
using t type_definition.card
[PROOF STATE]
proof (prove)
using this:
type_definition Rep Abs {0..<int n}
type_definition ?Rep ?Abs ?A \<Longrightarrow> CARD(?'b) = card ?A

goal (1 subgoal):
 1. CARD('b) = card {0..<n}
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
CARD('b) = card {0..<n}

goal (2 subgoals):
 1. class.nontriv TYPE('b)
 2. n = CARD('b)
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
CARD('b) = card {0..<n}

goal (2 subgoals):
 1. class.nontriv TYPE('b)
 2. n = CARD('b)
[PROOF STEP]
have "... = n"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. card {0..<n} = n
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
card {0..<n} = n

goal (2 subgoals):
 1. class.nontriv TYPE('b)
 2. n = CARD('b)
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
CARD('b) = n
[PROOF STEP]
show ?b
[PROOF STATE]
proof (prove)
using this:
CARD('b) = n

goal (1 subgoal):
 1. n = CARD('b)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
n = CARD('b)

goal (1 subgoal):
 1. class.nontriv TYPE('b)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
n = CARD('b)
[PROOF STEP]
show ?a
[PROOF STATE]
proof (prove)
using this:
n = CARD('b)

goal (1 subgoal):
 1. class.nontriv TYPE('b)
[PROOF STEP]
unfolding class.nontriv_def
[PROOF STATE]
proof (prove)
using this:
n = CARD('b)

goal (1 subgoal):
 1. 1 < CARD('b)
[PROOF STEP]
using p
[PROOF STATE]
proof (prove)
using this:
n = CARD('b)
1 < n

goal (1 subgoal):
 1. 1 < CARD('b)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
class.nontriv TYPE('b)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma SK_simp:
  "SK c p b (Suc t) k = (S2 (steps c p (Suc t)) k) * b ^ (Suc t) + (SK c p b t k)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. SK c p b (Suc t) k = S2 (steps c p (Suc t)) k * b ^ Suc t + SK c p b t k
[PROOF STEP]
proof (induction t arbitrary: p c b k)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>p c b k. SK c p b (Suc 0) k = S2 (steps c p (Suc 0)) k * b ^ Suc 0 + SK c p b 0 k
 2. \<And>t p c b k. (\<And>p c b k. SK c p b (Suc t) k = S2 (steps c p (Suc t)) k * b ^ Suc t + SK c p b t k) \<Longrightarrow> SK c p b (Suc (Suc t)) k = S2 (steps c p (Suc (Suc t))) k * b ^ Suc (Suc t) + SK c p b (Suc t) k
[PROOF STEP]
case 0
[PROOF STATE]
proof (state)
this:

goal (2 subgoals):
 1. \<And>p c b k. SK c p b (Suc 0) k = S2 (steps c p (Suc 0)) k * b ^ Suc 0 + SK c p b 0 k
 2. \<And>t p c b k. (\<And>p c b k. SK c p b (Suc t) k = S2 (steps c p (Suc t)) k * b ^ Suc t + SK c p b t k) \<Longrightarrow> SK c p b (Suc (Suc t)) k = S2 (steps c p (Suc (Suc t))) k * b ^ Suc (Suc t) + SK c p b (Suc t) k
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. SK c p b (Suc 0) k = S2 (steps c p (Suc 0)) k * b ^ Suc 0 + SK c p b 0 k
[PROOF STEP]
by (auto simp: SK.simps)
[PROOF STATE]
proof (state)
this:
SK c p b (Suc 0) k = S2 (steps c p (Suc 0)) k * b ^ Suc 0 + SK c p b 0 k

goal (1 subgoal):
 1. \<And>t p c b k. (\<And>p c b k. SK c p b (Suc t) k = S2 (steps c p (Suc t)) k * b ^ Suc t + SK c p b t k) \<Longrightarrow> SK c p b (Suc (Suc t)) k = S2 (steps c p (Suc (Suc t))) k * b ^ Suc (Suc t) + SK c p b (Suc t) k
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>t p c b k. (\<And>p c b k. SK c p b (Suc t) k = S2 (steps c p (Suc t)) k * b ^ Suc t + SK c p b t k) \<Longrightarrow> SK c p b (Suc (Suc t)) k = S2 (steps c p (Suc (Suc t))) k * b ^ Suc (Suc t) + SK c p b (Suc t) k
[PROOF STEP]
case (Suc t p c b k)
[PROOF STATE]
proof (state)
this:
SK ?c ?p ?b (Suc t) ?k = S2 (steps ?c ?p (Suc t)) ?k * ?b ^ Suc t + SK ?c ?p ?b t ?k

goal (1 subgoal):
 1. \<And>t p c b k. (\<And>p c b k. SK c p b (Suc t) k = S2 (steps c p (Suc t)) k * b ^ Suc t + SK c p b t k) \<Longrightarrow> SK c p b (Suc (Suc t)) k = S2 (steps c p (Suc (Suc t))) k * b ^ Suc (Suc t) + SK c p b (Suc t) k
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. SK c p b (Suc (Suc t)) k = S2 (steps c p (Suc (Suc t))) k * b ^ Suc (Suc t) + SK c p b (Suc t) k
[PROOF STEP]
by (auto simp: Suc algebra_simps step_commutative SK_simp_aux)
[PROOF STATE]
proof (state)
this:
SK c p b (Suc (Suc t)) k = S2 (steps c p (Suc (Suc t))) k * b ^ Suc (Suc t) + SK c p b (Suc t) k

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma perp_inter_perp_in:
  assumes "A B Perp C D"
  shows "\<exists> P. Col A B P \<and> Col C D P \<and> P PerpAt A B C D"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>P. Col A B P \<and> Col C D P \<and> P PerpAt A B C D
[PROOF STEP]
by (meson Perp_def Tarski_neutral_dimensionless.perp_in_col Tarski_neutral_dimensionless_axioms assms)


[STATEMENT]
lemma sum_upto_altdef: "sum_upto f x = (\<Sum>i\<in>{0<..nat \<lfloor>x\<rfloor>}. f i)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sum_upto f x = sum f {0<..nat \<lfloor>x\<rfloor>}
[PROOF STEP]
unfolding sum_upto_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sum f {i. 0 < i \<and> real i \<le> x} = sum f {0<..nat \<lfloor>x\<rfloor>}
[PROOF STEP]
by (cases "x \<ge> 0"; intro sum.cong refl) (auto simp: le_nat_iff le_floor_iff)


[STATEMENT]
theorem se_mono_for_states_eq :
  assumes "states c1 = states c2"
  assumes "se c1 l c1'"
  assumes "se c2 l c2'"
  shows   "states c2' = states c1'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. states c2' = states c1'
[PROOF STEP]
using assms(1)
      se_mono_for_sub[OF assms(2,3)]
      se_mono_for_sub[OF assms(3,2)]
[PROOF STATE]
proof (prove)
using this:
states c1 = states c2
c2 \<sqsubseteq> c1 \<Longrightarrow> c2' \<sqsubseteq> c1'
c1 \<sqsubseteq> c2 \<Longrightarrow> c1' \<sqsubseteq> c2'

goal (1 subgoal):
 1. states c2' = states c1'
[PROOF STEP]
by (simp add : subsums_def)


[STATEMENT]
lemma Fourier_sum_offset_Fejer_kernel_half:
  fixes n::nat
  assumes f: "f absolutely_integrable_on {-pi..pi}"
    and periodic: "\<And>x. f(x + 2*pi) = f x" and "n > 0"
  shows "(\<Sum>r<n. \<Sum>k\<le>2*r. Fourier_coefficient f k * trigonometric_set k t) / n - l
       = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f(t + x) + f(t - x) - 2 * l)) / pi"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) / real n - l = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) / real n - l = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi
[PROOF STEP]
have "(\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l
       = (\<Sum>r<n. (\<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - l)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l = (\<Sum>r<n. (\<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - l)
[PROOF STEP]
by (simp add: sum_subtractf)
[PROOF STATE]
proof (state)
this:
(\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l = (\<Sum>r<n. (\<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - l)

goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) / real n - l = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
(\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l = (\<Sum>r<n. (\<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - l)

goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) / real n - l = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi
[PROOF STEP]
have "\<dots> = (\<Sum>r<n.
                      (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f(t + x) + f(t - x) - 2 * l)) / pi)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Sum>r<n. (\<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - l) = (\<Sum>r<n. (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) / pi)
[PROOF STEP]
by (simp add: Fourier_sum_offset_Dirichlet_kernel_half assms)
[PROOF STATE]
proof (state)
this:
(\<Sum>r<n. (\<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - l) = (\<Sum>r<n. (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) / pi)

goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) / real n - l = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
(\<Sum>r<n. (\<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - l) = (\<Sum>r<n. (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) / pi)

goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) / real n - l = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi
[PROOF STEP]
have "\<dots> = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f(t + x) + f(t - x) - 2 * l)) / pi)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<Sum>r<n. (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) / pi) = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (\<Sum>r<n. (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) / pi) = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)
[PROOF STEP]
have "integrable (lebesgue_on {0..pi}) (\<lambda>x. Dirichlet_kernel i x * (f(t + x) + f(t - x) - 2 * l))" for i
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. integrable (lebesgue_on {0..pi}) (\<lambda>x. Dirichlet_kernel i x * (f (t + x) + f (t - x) - 2 * l))
[PROOF STEP]
using absolutely_integrable_mult_Dirichlet_kernel_reflected_part2(2) f periodic
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?f absolutely_integrable_on {- pi..pi}; \<And>x. ?f (x + 2 * pi) = ?f x; ?d \<le> pi\<rbrakk> \<Longrightarrow> (\<lambda>x. Dirichlet_kernel ?n x * (?f (?t + x) + ?f (?t - x) - ?c)) absolutely_integrable_on {0..?d}
f absolutely_integrable_on {- pi..pi}
f (?x + 2 * pi) = f ?x

goal (1 subgoal):
 1. integrable (lebesgue_on {0..pi}) (\<lambda>x. Dirichlet_kernel i x * (f (t + x) + f (t - x) - 2 * l))
[PROOF STEP]
by (force simp: intro!: absolutely_integrable_imp_integrable)
[PROOF STATE]
proof (state)
this:
integrable (lebesgue_on {0..pi}) (\<lambda>x. Dirichlet_kernel ?i x * (f (t + x) + f (t - x) - 2 * l))

goal (1 subgoal):
 1. (\<Sum>r<n. (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) / pi) = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
integrable (lebesgue_on {0..pi}) (\<lambda>x. Dirichlet_kernel ?i x * (f (t + x) + f (t - x) - 2 * l))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
integrable (lebesgue_on {0..pi}) (\<lambda>x. Dirichlet_kernel ?i x * (f (t + x) + f (t - x) - 2 * l))

goal (1 subgoal):
 1. (\<Sum>r<n. (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) / pi) = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)
[PROOF STEP]
using \<open>n > 0\<close>
[PROOF STATE]
proof (prove)
using this:
integrable (lebesgue_on {0..pi}) (\<lambda>x. Dirichlet_kernel ?i x * (f (t + x) + f (t - x) - 2 * l))
0 < n

goal (1 subgoal):
 1. (\<Sum>r<n. (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) / pi) = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)
[PROOF STEP]
apply (simp add: Fejer_kernel_def flip: sum_divide_distrib)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>\<And>i. integrable (lebesgue_on {0..pi}) (\<lambda>x. Dirichlet_kernel i x * (f (t + x) + f (t - x) - 2 * l)); 0 < n\<rbrakk> \<Longrightarrow> (\<Sum>r<n. LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) = LINT x|lebesgue_on {0..pi}. (\<Sum>r<n. Dirichlet_kernel r x) * (f (t + x) + f (t - x) - 2 * l)
[PROOF STEP]
apply (simp add: sum_distrib_right flip: Bochner_Integration.integral_sum [symmetric])
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
(\<Sum>r<n. (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) / pi) = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<Sum>r<n. (LINT x|lebesgue_on {0..pi}. Dirichlet_kernel r x * (f (t + x) + f (t - x) - 2 * l)) / pi) = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)

goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) / real n - l = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
(\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)
[PROOF STEP]
have "(\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f(t + x) + f(t - x) - 2 * l)) / pi)"
[PROOF STATE]
proof (prove)
using this:
(\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)

goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)
[PROOF STEP]
.
[PROOF STATE]
proof (state)
this:
(\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)

goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) / real n - l = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi
[PROOF STEP]
with \<open>n > 0\<close>
[PROOF STATE]
proof (chain)
picking this:
0 < n
(\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
0 < n
(\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) - real n * l = real n * ((LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi)

goal (1 subgoal):
 1. (\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) / real n - l = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi
[PROOF STEP]
by (auto simp: mult.commute divide_simps)
[PROOF STATE]
proof (state)
this:
(\<Sum>r<n. \<Sum>k\<le>2 * r. Fourier_coefficient f k * trigonometric_set k t) / real n - l = (LINT x|lebesgue_on {0..pi}. Fejer_kernel n x * (f (t + x) + f (t - x) - 2 * l)) / pi

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma conjugate_unit_circle_set [simp]:
  shows "conjugate ` (circline_set unit_circle) = circline_set unit_circle"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. conjugate ` circline_set unit_circle = circline_set unit_circle
[PROOF STEP]
unfolding circline_set_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. conjugate ` Collect (on_circline unit_circle) = Collect (on_circline unit_circle)
[PROOF STEP]
by (auto simp add: image_iff, rule_tac x="conjugate x" in exI, simp)


[STATEMENT]
lemma le_iff_inf_bot: "x \<le> y \<longleftrightarrow> x \<sqinter> -y = \<bottom>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (x \<le> y) = (x \<sqinter> - y = \<bottom>)
[PROOF STEP]
by (metis inf_bot_iff_le compl_le_compl_iff inf_commute)


[STATEMENT]
lemma islimpt_approachable:
  fixes x :: "'a::metric_space"
  shows "x islimpt S \<longleftrightarrow> (\<forall>e>0. \<exists>x'\<in>S. x' \<noteq> x \<and> dist x' x < e)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x islimpt S = (\<forall>e>0. \<exists>x'\<in>S. x' \<noteq> x \<and> dist x' x < e)
[PROOF STEP]
unfolding islimpt_iff_eventually eventually_at
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<not> (\<exists>d>0. \<forall>xa\<in>UNIV. xa \<noteq> x \<and> dist xa x < d \<longrightarrow> xa \<notin> S)) = (\<forall>e>0. \<exists>x'\<in>S. x' \<noteq> x \<and> dist x' x < e)
[PROOF STEP]
by fast


[STATEMENT]
lemma mset_pos_mset_neg_disjoint[simp]: "set_mset (mset_pos \<Delta>) \<inter> set_mset (mset_neg \<Delta>) = {}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. set_mset (mset_pos \<Delta>) \<inter> set_mset (mset_neg \<Delta>) = {}
[PROOF STEP]
by (auto simp: member_mset_pos_iff_zcount member_mset_neg_iff_zcount)


[STATEMENT]
lemma quant_less_iff_magn_less [si_eq]:
  "x < y \<longleftrightarrow> \<lbrakk>x\<rbrakk>\<^sub>Q < \<lbrakk>y\<rbrakk>\<^sub>Q"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (x < y) = (\<lbrakk>x\<rbrakk>\<^sub>Q < \<lbrakk>y\<rbrakk>\<^sub>Q)
[PROOF STEP]
by (auto simp add: magQ_def; (transfer, simp))


[STATEMENT]
lemma f_nth_derivative_cases:
  "higher_differentiable_on UNIV f k \<and>
   (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and>
   (\<exists>p. real_polynomial_function p \<and>
      (\<forall>t>0. nth_derivative k f t 1 = p t / (t ^ (2 * k)) * exp(-inverse t)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t)))
[PROOF STEP]
proof (induction k)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. higher_differentiable_on UNIV f 0 \<and> (\<forall>t\<le>0. nth_derivative 0 f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative 0 f t 1 = p t / t ^ (2 * 0) * exp (- inverse t)))
 2. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
case 0
[PROOF STATE]
proof (state)
this:

goal (2 subgoals):
 1. higher_differentiable_on UNIV f 0 \<and> (\<forall>t\<le>0. nth_derivative 0 f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative 0 f t 1 = p t / t ^ (2 * 0) * exp (- inverse t)))
 2. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. higher_differentiable_on UNIV f 0 \<and> (\<forall>t\<le>0. nth_derivative 0 f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative 0 f t 1 = p t / t ^ (2 * 0) * exp (- inverse t)))
[PROOF STEP]
apply (auto simp: higher_differentiable_on.simps f_continuous)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>p. real_polynomial_function p \<and> (\<forall>t>0. f t = p t * exp (- inverse t))
[PROOF STEP]
by (auto simp: f_def)
[PROOF STATE]
proof (state)
this:
higher_differentiable_on UNIV f 0 \<and> (\<forall>t\<le>0. nth_derivative 0 f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative 0 f t 1 = p t / t ^ (2 * 0) * exp (- inverse t)))

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
case (Suc k)
[PROOF STATE]
proof (state)
this:
higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t)))

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
from Suc.IH
[PROOF STATE]
proof (chain)
picking this:
higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t)))
[PROOF STEP]
obtain pk where IH:
    "higher_differentiable_on UNIV f k"
    "\<And>t. t \<le> 0 \<Longrightarrow> nth_derivative k f t 1 = 0"
    "real_polynomial_function pk"
    "\<And>t. t > 0 \<Longrightarrow> nth_derivative k f t 1 = pk t / t ^ (2 * k) * exp (- inverse t)"
[PROOF STATE]
proof (prove)
using this:
higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t)))

goal (1 subgoal):
 1. (\<And>pk. \<lbrakk>higher_differentiable_on UNIV f k; \<And>t. t \<le> 0 \<Longrightarrow> nth_derivative k f t 1 = 0; real_polynomial_function pk; \<And>t. 0 < t \<Longrightarrow> nth_derivative k f t 1 = pk t / t ^ (2 * k) * exp (- inverse t)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
higher_differentiable_on UNIV f k
?t \<le> 0 \<Longrightarrow> nth_derivative k f ?t 1 = 0
real_polynomial_function pk
0 < ?t \<Longrightarrow> nth_derivative k f ?t 1 = pk ?t / ?t ^ (2 * k) * exp (- inverse ?t)

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
from f_nth_derivative_lt_0[of "Suc k"]
    local.f_nth_derivative_is_poly[of "Suc k"]
[PROOF STATE]
proof (chain)
picking this:
higher_differentiable_on {..<0} f (Suc k) \<and> (\<forall>t<0. nth_derivative (Suc k) f t 1 = 0)
higher_differentiable_on {0<..} f (Suc k) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
obtain p where neg: "higher_differentiable_on {..<0} f (Suc k)"
    and neg0: "(\<forall>t<0. nth_derivative (Suc k) f t 1 = 0)"
    and pos: "higher_differentiable_on {0<..} f (Suc k)"
    and p: "real_polynomial_function p"
    "\<And>t. t > 0 \<Longrightarrow> nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)"
[PROOF STATE]
proof (prove)
using this:
higher_differentiable_on {..<0} f (Suc k) \<and> (\<forall>t<0. nth_derivative (Suc k) f t 1 = 0)
higher_differentiable_on {0<..} f (Suc k) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))

goal (1 subgoal):
 1. (\<And>p. \<lbrakk>higher_differentiable_on {..<0} f (Suc k); \<forall>t<0. nth_derivative (Suc k) f t 1 = 0; higher_differentiable_on {0<..} f (Suc k); real_polynomial_function p; \<And>t. 0 < t \<Longrightarrow> nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
higher_differentiable_on {..<0} f (Suc k)
\<forall>t<0. nth_derivative (Suc k) f t 1 = 0
higher_differentiable_on {0<..} f (Suc k)
real_polynomial_function p
0 < ?t \<Longrightarrow> nth_derivative (Suc k) f ?t 1 = p ?t / ?t ^ (2 * Suc k) * exp (- inverse ?t)

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
higher_differentiable_on {..<0} f (Suc k)
\<forall>t<0. nth_derivative (Suc k) f t 1 = 0
higher_differentiable_on {0<..} f (Suc k)
real_polynomial_function p
0 < ?t \<Longrightarrow> nth_derivative (Suc k) f ?t 1 = p ?t / ?t ^ (2 * Suc k) * exp (- inverse ?t)

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
have at_within_eq_at_right: "(at 0 within {0..}) = at_right (0::real)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. at 0 within {0..} = at_right 0
[PROOF STEP]
apply (auto simp: filter_eq_iff eventually_at_filter )
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>P. \<forall>\<^sub>F x in nhds 0. x \<noteq> 0 \<longrightarrow> 0 \<le> x \<longrightarrow> P x \<Longrightarrow> \<forall>\<^sub>F x in nhds 0. x \<noteq> 0 \<longrightarrow> 0 < x \<longrightarrow> P x
 2. \<And>P. \<forall>\<^sub>F x in nhds 0. x \<noteq> 0 \<longrightarrow> 0 < x \<longrightarrow> P x \<Longrightarrow> \<forall>\<^sub>F x in nhds 0. x \<noteq> 0 \<longrightarrow> 0 \<le> x \<longrightarrow> P x
[PROOF STEP]
apply (simp add: eventually_mono)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>P. \<forall>\<^sub>F x in nhds 0. x \<noteq> 0 \<longrightarrow> 0 < x \<longrightarrow> P x \<Longrightarrow> \<forall>\<^sub>F x in nhds 0. x \<noteq> 0 \<longrightarrow> 0 \<le> x \<longrightarrow> P x
[PROOF STEP]
apply (simp add: eventually_mono)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
at 0 within {0..} = at_right 0

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
have [simp]: "{0..} - {0} = {0::real<..}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {0..} - {0} = {0<..}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
{0..} - {0} = {0<..}

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
have [simp]: "(at (0::real) within {0..}) \<noteq> bot"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. at 0 within {0..} \<noteq> bot
[PROOF STEP]
by (auto simp: at_within_eq_bot_iff)
[PROOF STATE]
proof (state)
this:
at 0 within {0..} \<noteq> bot

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
have k_th_has_derivative_at_left:
    "((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0 within {..0})"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0 within {..0})
[PROOF STEP]
apply (rule has_derivative_transform_within[OF _ zero_less_one])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. (?f has_derivative (\<lambda>x. 0)) (at 0 within {..0})
 2. 0 \<in> {..0}
 3. \<And>x'. \<lbrakk>x' \<in> {..0}; dist x' 0 < 1\<rbrakk> \<Longrightarrow> ?f x' = nth_derivative k f x' 1
[PROOF STEP]
prefer 2
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. 0 \<in> {..0}
 2. (?f has_derivative (\<lambda>x. 0)) (at 0 within {..0})
 3. \<And>x'. \<lbrakk>x' \<in> {..0}; dist x' 0 < 1\<rbrakk> \<Longrightarrow> ?f x' = nth_derivative k f x' 1
[PROOF STEP]
apply force
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. (?f has_derivative (\<lambda>x. 0)) (at 0 within {..0})
 2. \<And>x'. \<lbrakk>x' \<in> {..0}; dist x' 0 < 1\<rbrakk> \<Longrightarrow> ?f x' = nth_derivative k f x' 1
[PROOF STEP]
prefer 2
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>x'. \<lbrakk>x' \<in> {..0}; dist x' 0 < 1\<rbrakk> \<Longrightarrow> ?f x' = nth_derivative k f x' 1
 2. (?f has_derivative (\<lambda>x. 0)) (at 0 within {..0})
[PROOF STEP]
apply (simp add: IH)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x'. 0) has_derivative (\<lambda>x. 0)) (at 0 within {..0})
[PROOF STEP]
by (rule derivative_intros)
[PROOF STATE]
proof (state)
this:
((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0 within {..0})

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
have k_th_has_derivative_at_right:
    "((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0 within {0..})"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0 within {0..})
[PROOF STEP]
apply (rule has_derivative_transform_within[where
          f="\<lambda>x'. if x' = 0 then 0 else pk x' / x' ^ (2 * k) * exp (- inverse x')", OF _ zero_less_one])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. ((\<lambda>x'. if x' = 0 then 0 else pk x' / x' ^ (2 * k) * exp (- inverse x')) has_derivative (\<lambda>x. 0)) (at 0 within {0..})
 2. 0 \<in> {0..}
 3. \<And>x'. \<lbrakk>x' \<in> {0..}; dist x' 0 < 1\<rbrakk> \<Longrightarrow> (if x' = 0 then 0 else pk x' / x' ^ (2 * k) * exp (- inverse x')) = nth_derivative k f x' 1
[PROOF STEP]
subgoal
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x'. if x' = 0 then 0 else pk x' / x' ^ (2 * k) * exp (- inverse x')) has_derivative (\<lambda>x. 0)) (at 0 within {0..})
[PROOF STEP]
unfolding has_derivative_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. bounded_linear (\<lambda>x. 0) \<and> ((\<lambda>y. ((if y = 0 then 0 else pk y / y ^ (2 * k) * exp (- inverse y)) - (if netlimit (at 0 within {0..}) = 0 then 0 else pk (netlimit (at 0 within {0..})) / netlimit (at 0 within {0..}) ^ (2 * k) * exp (- inverse (netlimit (at 0 within {0..})))) - 0) /\<^sub>R norm (y - netlimit (at 0 within {0..}))) \<longlongrightarrow> 0) (at 0 within {0..})
[PROOF STEP]
apply (auto simp: Lim_ident_at)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>y. inverse \<bar>y\<bar> * (if y = 0 then 0 else pk y / y ^ (2 * k) * exp (- inverse y))) \<longlongrightarrow> 0) (at 0 within {0..})
[PROOF STEP]
apply (rule Lim_transform_eventually[where f="\<lambda>x. (pk x * (exp (- inverse x) / x ^ (2 * k + 1)))"])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. ((\<lambda>x. pk x * (exp (- inverse x) / x ^ (2 * k + 1))) \<longlongrightarrow> 0) (at 0 within {0..})
 2. \<forall>\<^sub>F x in at 0 within {0..}. pk x * (exp (- inverse x) / x ^ (2 * k + 1)) = inverse \<bar>x\<bar> * (if x = 0 then 0 else pk x / x ^ (2 * k) * exp (- inverse x))
[PROOF STEP]
apply (rule tendsto_eq_intros)
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. (pk \<longlongrightarrow> ?a6) (at 0 within {0..})
 2. ((\<lambda>x. exp (- inverse x) / x ^ (2 * k + 1)) \<longlongrightarrow> ?b6) (at 0 within {0..})
 3. ?a6 * ?b6 = 0
 4. \<forall>\<^sub>F x in at 0 within {0..}. pk x * (exp (- inverse x) / x ^ (2 * k + 1)) = inverse \<bar>x\<bar> * (if x = 0 then 0 else pk x / x ^ (2 * k) * exp (- inverse x))
[PROOF STEP]
apply (rule real_polynomial_function_tendsto[THEN tendsto_eq_rhs])
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. real_polynomial_function pk
 2. pk 0 = ?a6
 3. ((\<lambda>x. exp (- inverse x) / x ^ (2 * k + 1)) \<longlongrightarrow> ?b6) (at 0 within {0..})
 4. ?a6 * ?b6 = 0
 5. \<forall>\<^sub>F x in at 0 within {0..}. pk x * (exp (- inverse x) / x ^ (2 * k + 1)) = inverse \<bar>x\<bar> * (if x = 0 then 0 else pk x / x ^ (2 * k) * exp (- inverse x))
[PROOF STEP]
apply fact
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. pk 0 = ?a6
 2. ((\<lambda>x. exp (- inverse x) / x ^ (2 * k + 1)) \<longlongrightarrow> ?b6) (at 0 within {0..})
 3. ?a6 * ?b6 = 0
 4. \<forall>\<^sub>F x in at 0 within {0..}. pk x * (exp (- inverse x) / x ^ (2 * k + 1)) = inverse \<bar>x\<bar> * (if x = 0 then 0 else pk x / x ^ (2 * k) * exp (- inverse x))
[PROOF STEP]
apply (rule refl)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. ((\<lambda>x. exp (- inverse x) / x ^ (2 * k + 1)) \<longlongrightarrow> ?b6) (at 0 within {0..})
 2. pk 0 * ?b6 = 0
 3. \<forall>\<^sub>F x in at 0 within {0..}. pk x * (exp (- inverse x) / x ^ (2 * k + 1)) = inverse \<bar>x\<bar> * (if x = 0 then 0 else pk x / x ^ (2 * k) * exp (- inverse x))
[PROOF STEP]
apply (subst at_within_eq_at_right)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. ((\<lambda>x. exp (- inverse x) / x ^ (2 * k + 1)) \<longlongrightarrow> ?b6) (at_right 0)
 2. pk 0 * ?b6 = 0
 3. \<forall>\<^sub>F x in at 0 within {0..}. pk x * (exp (- inverse x) / x ^ (2 * k + 1)) = inverse \<bar>x\<bar> * (if x = 0 then 0 else pk x / x ^ (2 * k) * exp (- inverse x))
[PROOF STEP]
apply (rule exp_inv_limit_0_right_gen)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. pk 0 * 0 = 0
 2. \<forall>\<^sub>F x in at 0 within {0..}. pk x * (exp (- inverse x) / x ^ (2 * k + 1)) = inverse \<bar>x\<bar> * (if x = 0 then 0 else pk x / x ^ (2 * k) * exp (- inverse x))
[PROOF STEP]
apply (auto simp add: eventually_at_filter divide_simps)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. 0 \<in> {0..}
 2. \<And>x'. \<lbrakk>x' \<in> {0..}; dist x' 0 < 1\<rbrakk> \<Longrightarrow> (if x' = 0 then 0 else pk x' / x' ^ (2 * k) * exp (- inverse x')) = nth_derivative k f x' 1
[PROOF STEP]
subgoal
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. 0 \<in> {0..}
[PROOF STEP]
by force
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x'. \<lbrakk>x' \<in> {0..}; dist x' 0 < 1\<rbrakk> \<Longrightarrow> (if x' = 0 then 0 else pk x' / x' ^ (2 * k) * exp (- inverse x')) = nth_derivative k f x' 1
[PROOF STEP]
subgoal
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>x'_ \<in> {0..}; dist x'_ 0 < 1\<rbrakk> \<Longrightarrow> (if x'_ = 0 then 0 else pk x'_ / x'_ ^ (2 * k) * exp (- inverse x'_)) = nth_derivative k f x'_ 1
[PROOF STEP]
by (auto simp: IH(2) IH(4))
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0 within {0..})

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
have k_th_has_derivative: "((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0)
[PROOF STEP]
apply (rule has_derivative_at_left_at_right')
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. ((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0 within {..0})
 2. ((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0 within {0..})
[PROOF STEP]
apply (rule k_th_has_derivative_at_left)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0 within {0..})
[PROOF STEP]
apply (rule k_th_has_derivative_at_right)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0)

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
have nth_Suc_zero: "nth_derivative (Suc k) f 0 1 = 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. nth_derivative (Suc k) f 0 1 = 0
[PROOF STEP]
apply (auto simp: frechet_derivative_nth_derivative_commute[symmetric])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. frechet_derivative (\<lambda>x. nth_derivative k f x 1) (at 0) 1 = 0
[PROOF STEP]
apply (subst frechet_derivative_at')
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. ((\<lambda>x. nth_derivative k f x 1) has_derivative ?y) (at 0)
 2. ?y 1 = 0
[PROOF STEP]
apply (rule k_th_has_derivative)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. 0 = 0
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
nth_derivative (Suc k) f 0 1 = 0

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
nth_derivative (Suc k) f 0 1 = 0

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
have "higher_differentiable_on UNIV f (Suc k)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. higher_differentiable_on UNIV f (Suc k)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. higher_differentiable_on UNIV f (Suc k)
[PROOF STEP]
have "continuous_on UNIV (\<lambda>x. nth_derivative (Suc k) f x 1)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. continuous_on UNIV (\<lambda>x. nth_derivative (Suc k) f x 1)
[PROOF STEP]
unfolding continuous_on_eq_continuous_within
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>x\<in>UNIV. isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> UNIV \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
fix x::real
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> UNIV \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
consider "x < 0" | "x > 0" | "x = 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>x < 0 \<Longrightarrow> thesis; 0 < x \<Longrightarrow> thesis; x = 0 \<Longrightarrow> thesis\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
by arith
[PROOF STATE]
proof (state)
this:
\<lbrakk>x < 0 \<Longrightarrow> ?thesis; 0 < x \<Longrightarrow> ?thesis; x = 0 \<Longrightarrow> ?thesis\<rbrakk> \<Longrightarrow> ?thesis

goal (1 subgoal):
 1. \<And>x. x \<in> UNIV \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>x < 0 \<Longrightarrow> ?thesis; 0 < x \<Longrightarrow> ?thesis; x = 0 \<Longrightarrow> ?thesis\<rbrakk> \<Longrightarrow> ?thesis
[PROOF STEP]
show "isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x"
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>x < 0 \<Longrightarrow> ?thesis; 0 < x \<Longrightarrow> ?thesis; x = 0 \<Longrightarrow> ?thesis\<rbrakk> \<Longrightarrow> ?thesis

goal (1 subgoal):
 1. isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
proof cases
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. x < 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
 2. 0 < x \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
 3. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
case 1
[PROOF STATE]
proof (state)
this:
x < 0

goal (3 subgoals):
 1. x < 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
 2. 0 < x \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
 3. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
x < 0
[PROOF STEP]
have at_eq: "at x = at x within {..<0}"
[PROOF STATE]
proof (prove)
using this:
x < 0

goal (1 subgoal):
 1. at x = at x within {..<0}
[PROOF STEP]
using at_within_open[of x "{..<0}"]
[PROOF STATE]
proof (prove)
using this:
x < 0
\<lbrakk>x \<in> {..<0}; open {..<0}\<rbrakk> \<Longrightarrow> at x within {..<0} = at x

goal (1 subgoal):
 1. at x = at x within {..<0}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
at x = at x within {..<0}

goal (3 subgoals):
 1. x < 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
 2. 0 < x \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
 3. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
unfolding at_eq
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. continuous (at x within {..<0}) (\<lambda>x. nth_derivative (Suc k) f x 1)
[PROOF STEP]
apply (rule continuous_transform_within[OF _ zero_less_one])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. continuous (at x within {..<0}) ?f
 2. x \<in> {..<0}
 3. \<And>x'. \<lbrakk>x' \<in> {..<0}; dist x' x < 1\<rbrakk> \<Longrightarrow> ?f x' = nth_derivative (Suc k) f x' 1
[PROOF STEP]
using neg0 1
[PROOF STATE]
proof (prove)
using this:
\<forall>t<0. nth_derivative (Suc k) f t 1 = 0
x < 0

goal (3 subgoals):
 1. continuous (at x within {..<0}) ?f
 2. x \<in> {..<0}
 3. \<And>x'. \<lbrakk>x' \<in> {..<0}; dist x' x < 1\<rbrakk> \<Longrightarrow> ?f x' = nth_derivative (Suc k) f x' 1
[PROOF STEP]
by (auto simp: at_eq)
[PROOF STATE]
proof (state)
this:
isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x

goal (2 subgoals):
 1. 0 < x \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
 2. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. 0 < x \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
 2. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
case 2
[PROOF STATE]
proof (state)
this:
0 < x

goal (2 subgoals):
 1. 0 < x \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
 2. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
0 < x
[PROOF STEP]
have at_eq: "at x = at x within {0<..}"
[PROOF STATE]
proof (prove)
using this:
0 < x

goal (1 subgoal):
 1. at x = at x within {0<..}
[PROOF STEP]
using at_within_open[of x "{0<..}"]
[PROOF STATE]
proof (prove)
using this:
0 < x
\<lbrakk>x \<in> {0<..}; open {0<..}\<rbrakk> \<Longrightarrow> at x within {0<..} = at x

goal (1 subgoal):
 1. at x = at x within {0<..}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
at x = at x within {0<..}

goal (2 subgoals):
 1. 0 < x \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
 2. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
unfolding at_eq
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. continuous (at x within {0<..}) (\<lambda>x. nth_derivative (Suc k) f x 1)
[PROOF STEP]
apply (rule continuous_transform_within[OF _ zero_less_one])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. continuous (at x within {0<..}) ?f
 2. x \<in> {0<..}
 3. \<And>x'. \<lbrakk>x' \<in> {0<..}; dist x' x < 1\<rbrakk> \<Longrightarrow> ?f x' = nth_derivative (Suc k) f x' 1
[PROOF STEP]
using p 2
[PROOF STATE]
proof (prove)
using this:
real_polynomial_function p
0 < ?t \<Longrightarrow> nth_derivative (Suc k) f ?t 1 = p ?t / ?t ^ (2 * Suc k) * exp (- inverse ?t)
0 < x

goal (3 subgoals):
 1. continuous (at x within {0<..}) ?f
 2. x \<in> {0<..}
 3. \<And>x'. \<lbrakk>x' \<in> {0<..}; dist x' x < 1\<rbrakk> \<Longrightarrow> ?f x' = nth_derivative (Suc k) f x' 1
[PROOF STEP]
by (auto intro!: continuous_intros
              intro: continuous_real_polymonial_function continuous_at_imp_continuous_within)
[PROOF STATE]
proof (state)
this:
isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x

goal (1 subgoal):
 1. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
case 3
[PROOF STATE]
proof (state)
this:
x = 0

goal (1 subgoal):
 1. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
have "((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_left 0)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_left 0)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_left 0)
[PROOF STEP]
have "\<forall>\<^sub>F x in at_left 0. 0 = nth_derivative (Suc k) f x 1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>\<^sub>F x in at_left 0. 0 = nth_derivative (Suc k) f x 1
[PROOF STEP]
using neg0
[PROOF STATE]
proof (prove)
using this:
\<forall>t<0. nth_derivative (Suc k) f t 1 = 0

goal (1 subgoal):
 1. \<forall>\<^sub>F x in at_left 0. 0 = nth_derivative (Suc k) f x 1
[PROOF STEP]
by (auto simp: eventually_at_filter)
[PROOF STATE]
proof (state)
this:
\<forall>\<^sub>F x in at_left 0. 0 = nth_derivative (Suc k) f x 1

goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_left 0)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<forall>\<^sub>F x in at_left 0. 0 = nth_derivative (Suc k) f x 1
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<forall>\<^sub>F x in at_left 0. 0 = nth_derivative (Suc k) f x 1

goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_left 0)
[PROOF STEP]
by (blast intro: Lim_transform_eventually)
[PROOF STATE]
proof (state)
this:
((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_left 0)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_left 0)

goal (1 subgoal):
 1. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_left 0)

goal (1 subgoal):
 1. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
have "((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)
[PROOF STEP]
have "((\<lambda>x. p x * (exp (- inverse x) / x ^ (2 * Suc k))) \<longlongrightarrow> 0) (at_right 0)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<lambda>x. p x * (exp (- inverse x) / x ^ (2 * Suc k))) \<longlongrightarrow> 0) (at_right 0)
[PROOF STEP]
apply (rule tendsto_eq_intros)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. (p \<longlongrightarrow> ?a1) (at_right 0)
 2. ((\<lambda>x. exp (- inverse x) / x ^ (2 * Suc k)) \<longlongrightarrow> ?b1) (at_right 0)
 3. ?a1 * ?b1 = 0
[PROOF STEP]
apply (rule real_polynomial_function_tendsto)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. real_polynomial_function p
 2. ((\<lambda>x. exp (- inverse x) / x ^ (2 * Suc k)) \<longlongrightarrow> ?b1) (at_right 0)
 3. p 0 * ?b1 = 0
[PROOF STEP]
apply fact
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. ((\<lambda>x. exp (- inverse x) / x ^ (2 * Suc k)) \<longlongrightarrow> ?b1) (at_right 0)
 2. p 0 * ?b1 = 0
[PROOF STEP]
apply (rule exp_inv_limit_0_right_gen)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. p 0 * 0 = 0
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
((\<lambda>x. p x * (exp (- inverse x) / x ^ (2 * Suc k))) \<longlongrightarrow> 0) (at_right 0)

goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
((\<lambda>x. p x * (exp (- inverse x) / x ^ (2 * Suc k))) \<longlongrightarrow> 0) (at_right 0)

goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)
[PROOF STEP]
have "\<forall>\<^sub>F x in at_right 0. p x * (exp (- inverse x) / x ^ (2 * Suc k)) =
            nth_derivative (Suc k) f x 1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>\<^sub>F x in at_right 0. p x * (exp (- inverse x) / x ^ (2 * Suc k)) = nth_derivative (Suc k) f x 1
[PROOF STEP]
using p
[PROOF STATE]
proof (prove)
using this:
real_polynomial_function p
0 < ?t \<Longrightarrow> nth_derivative (Suc k) f ?t 1 = p ?t / ?t ^ (2 * Suc k) * exp (- inverse ?t)

goal (1 subgoal):
 1. \<forall>\<^sub>F x in at_right 0. p x * (exp (- inverse x) / x ^ (2 * Suc k)) = nth_derivative (Suc k) f x 1
[PROOF STEP]
by (auto simp: eventually_at_filter)
[PROOF STATE]
proof (state)
this:
\<forall>\<^sub>F x in at_right 0. p x * (exp (- inverse x) / x ^ (2 * Suc k)) = nth_derivative (Suc k) f x 1

goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
((\<lambda>x. p x * (exp (- inverse x) / x ^ (2 * Suc k))) \<longlongrightarrow> 0) (at_right 0)
\<forall>\<^sub>F x in at_right 0. p x * (exp (- inverse x) / x ^ (2 * Suc k)) = nth_derivative (Suc k) f x 1
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
((\<lambda>x. p x * (exp (- inverse x) / x ^ (2 * Suc k))) \<longlongrightarrow> 0) (at_right 0)
\<forall>\<^sub>F x in at_right 0. p x * (exp (- inverse x) / x ^ (2 * Suc k)) = nth_derivative (Suc k) f x 1

goal (1 subgoal):
 1. ((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)
[PROOF STEP]
by (rule Lim_transform_eventually)
[PROOF STATE]
proof (state)
this:
((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)

goal (1 subgoal):
 1. x = 0 \<Longrightarrow> isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_left 0)
((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_left 0)
((\<lambda>x. nth_derivative (Suc k) f x 1) \<longlongrightarrow> 0) (at_right 0)

goal (1 subgoal):
 1. isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x
[PROOF STEP]
by (auto simp: continuous_def nth_Suc_zero 3 filterlim_split_at
              simp del: nth_derivative.simps)
[PROOF STATE]
proof (state)
this:
isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
isCont (\<lambda>x. nth_derivative (Suc k) f x 1) x

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
continuous_on UNIV (\<lambda>x. nth_derivative (Suc k) f x 1)

goal (1 subgoal):
 1. higher_differentiable_on UNIV f (Suc k)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
continuous_on UNIV (\<lambda>x. nth_derivative (Suc k) f x 1)

goal (1 subgoal):
 1. higher_differentiable_on UNIV f (Suc k)
[PROOF STEP]
have "(\<lambda>x. nth_derivative k f x 1) differentiable at x" for x
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
consider  "x = 0" | "x < 0" | "x > 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>x = 0 \<Longrightarrow> thesis; x < 0 \<Longrightarrow> thesis; 0 < x \<Longrightarrow> thesis\<rbrakk> \<Longrightarrow> thesis
[PROOF STEP]
by arith
[PROOF STATE]
proof (state)
this:
\<lbrakk>x = 0 \<Longrightarrow> ?thesis; x < 0 \<Longrightarrow> ?thesis; 0 < x \<Longrightarrow> ?thesis\<rbrakk> \<Longrightarrow> ?thesis

goal (1 subgoal):
 1. (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>x = 0 \<Longrightarrow> ?thesis; x < 0 \<Longrightarrow> ?thesis; 0 < x \<Longrightarrow> ?thesis\<rbrakk> \<Longrightarrow> ?thesis
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>x = 0 \<Longrightarrow> ?thesis; x < 0 \<Longrightarrow> ?thesis; 0 < x \<Longrightarrow> ?thesis\<rbrakk> \<Longrightarrow> ?thesis

goal (1 subgoal):
 1. (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
proof cases
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. x = 0 \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
 2. x < 0 \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
 3. 0 < x \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
case 1
[PROOF STATE]
proof (state)
this:
x = 0

goal (3 subgoals):
 1. x = 0 \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
 2. x < 0 \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
 3. 0 < x \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
x = 0
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
x = 0

goal (1 subgoal):
 1. (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
using k_th_has_derivative
[PROOF STATE]
proof (prove)
using this:
x = 0
((\<lambda>x. nth_derivative k f x 1) has_derivative (\<lambda>x. 0)) (at 0)

goal (1 subgoal):
 1. (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
by (auto simp: differentiable_def)
[PROOF STATE]
proof (state)
this:
(\<lambda>x. nth_derivative k f x 1) differentiable at x

goal (2 subgoals):
 1. x < 0 \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
 2. 0 < x \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. x < 0 \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
 2. 0 < x \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
case 2
[PROOF STATE]
proof (state)
this:
x < 0

goal (2 subgoals):
 1. x < 0 \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
 2. 0 < x \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
with neg
[PROOF STATE]
proof (chain)
picking this:
higher_differentiable_on {..<0} f (Suc k)
x < 0
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
higher_differentiable_on {..<0} f (Suc k)
x < 0

goal (1 subgoal):
 1. (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
by (subst (asm) higher_differentiable_on_real_Suc') auto
[PROOF STATE]
proof (state)
this:
(\<lambda>x. nth_derivative k f x 1) differentiable at x

goal (1 subgoal):
 1. 0 < x \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. 0 < x \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
case 3
[PROOF STATE]
proof (state)
this:
0 < x

goal (1 subgoal):
 1. 0 < x \<Longrightarrow> (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
with pos
[PROOF STATE]
proof (chain)
picking this:
higher_differentiable_on {0<..} f (Suc k)
0 < x
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
higher_differentiable_on {0<..} f (Suc k)
0 < x

goal (1 subgoal):
 1. (\<lambda>x. nth_derivative k f x 1) differentiable at x
[PROOF STEP]
by (subst (asm) higher_differentiable_on_real_Suc') auto
[PROOF STATE]
proof (state)
this:
(\<lambda>x. nth_derivative k f x 1) differentiable at x

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<lambda>x. nth_derivative k f x 1) differentiable at x

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(\<lambda>x. nth_derivative k f x 1) differentiable at ?x

goal (1 subgoal):
 1. higher_differentiable_on UNIV f (Suc k)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(\<lambda>x. nth_derivative k f x 1) differentiable at ?x

goal (1 subgoal):
 1. higher_differentiable_on UNIV f (Suc k)
[PROOF STEP]
have "higher_differentiable_on UNIV f k"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. higher_differentiable_on UNIV f k
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
higher_differentiable_on UNIV f k

goal (1 subgoal):
 1. higher_differentiable_on UNIV f (Suc k)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
continuous_on UNIV (\<lambda>x. nth_derivative (Suc k) f x 1)
(\<lambda>x. nth_derivative k f x 1) differentiable at ?x
higher_differentiable_on UNIV f k
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
continuous_on UNIV (\<lambda>x. nth_derivative (Suc k) f x 1)
(\<lambda>x. nth_derivative k f x 1) differentiable at ?x
higher_differentiable_on UNIV f k

goal (1 subgoal):
 1. higher_differentiable_on UNIV f (Suc k)
[PROOF STEP]
by (subst higher_differentiable_on_real_Suc'[OF open_UNIV]) auto
[PROOF STATE]
proof (state)
this:
higher_differentiable_on UNIV f (Suc k)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
higher_differentiable_on UNIV f (Suc k)

goal (1 subgoal):
 1. \<And>k. higher_differentiable_on UNIV f k \<and> (\<forall>t\<le>0. nth_derivative k f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative k f t 1 = p t / t ^ (2 * k) * exp (- inverse t))) \<Longrightarrow> higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
higher_differentiable_on {..<0} f (Suc k)
\<forall>t<0. nth_derivative (Suc k) f t 1 = 0
higher_differentiable_on {0<..} f (Suc k)
real_polynomial_function p
0 < ?t \<Longrightarrow> nth_derivative (Suc k) f ?t 1 = p ?t / ?t ^ (2 * Suc k) * exp (- inverse ?t)
nth_derivative (Suc k) f 0 1 = 0
higher_differentiable_on UNIV f (Suc k)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
higher_differentiable_on {..<0} f (Suc k)
\<forall>t<0. nth_derivative (Suc k) f t 1 = 0
higher_differentiable_on {0<..} f (Suc k)
real_polynomial_function p
0 < ?t \<Longrightarrow> nth_derivative (Suc k) f ?t 1 = p ?t / ?t ^ (2 * Suc k) * exp (- inverse ?t)
nth_derivative (Suc k) f 0 1 = 0
higher_differentiable_on UNIV f (Suc k)

goal (1 subgoal):
 1. higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))
[PROOF STEP]
by (auto simp: less_eq_real_def)
[PROOF STATE]
proof (state)
this:
higher_differentiable_on UNIV f (Suc k) \<and> (\<forall>t\<le>0. nth_derivative (Suc k) f t 1 = 0) \<and> (\<exists>p. real_polynomial_function p \<and> (\<forall>t>0. nth_derivative (Suc k) f t 1 = p t / t ^ (2 * Suc k) * exp (- inverse t)))

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma sets_stream_space_cylinder:
  "sets (stream_space M) = sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sets (stream_space M) = sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
[PROOF STEP]
proof (rule antisym)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
 2. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
have closed[simp]: "scylinder (space M) ` lists (sets M) \<subseteq> Pow (streams (space M))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. scylinder (space M) ` lists (sets M) \<subseteq> Pow (streams (space M))
[PROOF STEP]
using scylinder_streams[of "space M" _]
[PROOF STATE]
proof (prove)
using this:
scylinder (space M) ?xs \<subseteq> streams (space M)

goal (1 subgoal):
 1. scylinder (space M) ` lists (sets M) \<subseteq> Pow (streams (space M))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
scylinder (space M) ` lists (sets M) \<subseteq> Pow (streams (space M))

goal (2 subgoals):
 1. sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
 2. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
have [simp]: "(\<lambda>s. s !! i) \<in> streams (space M) \<rightarrow> space M" for i
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<lambda>s. s !! i) \<in> streams (space M) \<rightarrow> space M
[PROOF STEP]
by (auto simp: snth_in)
[PROOF STATE]
proof (state)
this:
(\<lambda>s. s !! ?i) \<in> streams (space M) \<rightarrow> space M

goal (2 subgoals):
 1. sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
 2. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
interpret sigma_algebra "streams (space M)" "sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sigma_algebra (streams (space M)) (sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)))
[PROOF STEP]
by (intro sigma_algebra_sigma_sets) fact
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
 2. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
have *: "(\<lambda>s. s !! i) -` A \<inter> streams (space M) = scylinder (space M) (replicate i (space M) @ [A])"
    if "A \<in> sets M" for i A
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<lambda>s. s !! i) -` A \<inter> streams (space M) = scylinder (space M) (replicate i (space M) @ [A])
[PROOF STEP]
proof (induction i)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. (\<lambda>s. s !! 0) -` A \<inter> streams (space M) = scylinder (space M) (replicate 0 (space M) @ [A])
 2. \<And>i. (\<lambda>s. s !! i) -` A \<inter> streams (space M) = scylinder (space M) (replicate i (space M) @ [A]) \<Longrightarrow> (\<lambda>s. s !! Suc i) -` A \<inter> streams (space M) = scylinder (space M) (replicate (Suc i) (space M) @ [A])
[PROOF STEP]
case (Suc n)
[PROOF STATE]
proof (state)
this:
(\<lambda>s. s !! n) -` A \<inter> streams (space M) = scylinder (space M) (replicate n (space M) @ [A])

goal (2 subgoals):
 1. (\<lambda>s. s !! 0) -` A \<inter> streams (space M) = scylinder (space M) (replicate 0 (space M) @ [A])
 2. \<And>i. (\<lambda>s. s !! i) -` A \<inter> streams (space M) = scylinder (space M) (replicate i (space M) @ [A]) \<Longrightarrow> (\<lambda>s. s !! Suc i) -` A \<inter> streams (space M) = scylinder (space M) (replicate (Suc i) (space M) @ [A])
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<lambda>s. s !! Suc n) -` A \<inter> streams (space M) = scylinder (space M) (replicate (Suc n) (space M) @ [A])
[PROOF STEP]
apply (intro set_eqI)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x. (x \<in> (\<lambda>s. s !! Suc n) -` A \<inter> streams (space M)) = (x \<in> scylinder (space M) (replicate (Suc n) (space M) @ [A]))
[PROOF STEP]
subgoal for \<omega>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<omega> \<in> (\<lambda>s. s !! Suc n) -` A \<inter> streams (space M)) = (\<omega> \<in> scylinder (space M) (replicate (Suc n) (space M) @ [A]))
[PROOF STEP]
by (cases \<omega>) (auto simp: streams_Stream Suc[symmetric])
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
(\<lambda>s. s !! Suc n) -` A \<inter> streams (space M) = scylinder (space M) (replicate (Suc n) (space M) @ [A])

goal (1 subgoal):
 1. (\<lambda>s. s !! 0) -` A \<inter> streams (space M) = scylinder (space M) (replicate 0 (space M) @ [A])
[PROOF STEP]
qed (auto simp: streams_stl)
[PROOF STATE]
proof (state)
this:
?A \<in> sets M \<Longrightarrow> (\<lambda>s. s !! ?i) -` ?A \<inter> streams (space M) = scylinder (space M) (replicate ?i (space M) @ [?A])

goal (2 subgoals):
 1. sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
 2. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
have "sets (stream_space M) \<le> sets (sigma (streams (space M)) (scylinder (space M) ` lists (sets M)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sets (stream_space M) \<subseteq> sets (sigma (streams (space M)) (scylinder (space M) ` lists (sets M)))
[PROOF STEP]
unfolding sets_stream_space_eq
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sets (\<Squnion>i. vimage_algebra (streams (space M)) (\<lambda>s. s !! i) M) \<subseteq> sets (sigma (streams (space M)) (scylinder (space M) ` lists (sets M)))
[PROOF STEP]
by (rule sets_Sup_in_sets)
       (auto simp: sets_vimage_algebra2 PiE_UNIV_domain space_PiM * intro!: sigma_sets.Basic imageI)
[PROOF STATE]
proof (state)
this:
sets (stream_space M) \<subseteq> sets (sigma (streams (space M)) (scylinder (space M) ` lists (sets M)))

goal (2 subgoals):
 1. sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
 2. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
sets (stream_space M) \<subseteq> sets (sigma (streams (space M)) (scylinder (space M) ` lists (sets M)))

goal (2 subgoals):
 1. sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
 2. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
have "\<dots> = sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sets (sigma (streams (space M)) (scylinder (space M) ` lists (sets M))) = sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
[PROOF STEP]
by (rule sets_measure_of) fact
[PROOF STATE]
proof (state)
this:
sets (sigma (streams (space M)) (scylinder (space M) ` lists (sets M))) = sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))

goal (2 subgoals):
 1. sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
 2. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
[PROOF STEP]
show "sets (stream_space M) \<le> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))"
[PROOF STATE]
proof (prove)
using this:
sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))

goal (1 subgoal):
 1. sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))
[PROOF STEP]
.
[PROOF STATE]
proof (state)
this:
sets (stream_space M) \<subseteq> sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M))

goal (1 subgoal):
 1. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
show "sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
unfolding space_stream_space[symmetric]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sigma_sets (space (stream_space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)
[PROOF STEP]
by (rule sets.sigma_sets_subset) (auto intro!: sets_scylinder)
[PROOF STATE]
proof (state)
this:
sigma_sets (streams (space M)) (scylinder (space M) ` lists (sets M)) \<subseteq> sets (stream_space M)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma induct_game: "(\<And>x. \<forall>y. (y, x) \<in> lprod option_of \<longrightarrow> P y \<Longrightarrow> P x) \<Longrightarrow> P a"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>x. \<forall>y. (y, x) \<in> lprod option_of \<longrightarrow> P y \<Longrightarrow> P x) \<Longrightarrow> P a
[PROOF STEP]
by (erule wf_induct[OF wf_lprod[OF wf_option_of]])


[STATEMENT]
lemma inext_nth_image: "
  \<lbrakk> I \<noteq> {}; strict_mono_on f I \<rbrakk> \<Longrightarrow> (f ` I) \<rightarrow> n = f (I \<rightarrow> n)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>I \<noteq> {}; SetInterval2.strict_mono_on f I\<rbrakk> \<Longrightarrow> (f ` I) \<rightarrow> n = f (I \<rightarrow> n)
[PROOF STEP]
apply (induct n)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>I \<noteq> {}; SetInterval2.strict_mono_on f I\<rbrakk> \<Longrightarrow> (f ` I) \<rightarrow> 0 = f (I \<rightarrow> 0)
 2. \<And>n. \<lbrakk>\<lbrakk>I \<noteq> {}; SetInterval2.strict_mono_on f I\<rbrakk> \<Longrightarrow> (f ` I) \<rightarrow> n = f (I \<rightarrow> n); I \<noteq> {}; SetInterval2.strict_mono_on f I\<rbrakk> \<Longrightarrow> (f ` I) \<rightarrow> Suc n = f (I \<rightarrow> Suc n)
[PROOF STEP]
apply (simp add: iMin_mono_on2 strict_mono_on_imp_mono_on)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>n. \<lbrakk>\<lbrakk>I \<noteq> {}; SetInterval2.strict_mono_on f I\<rbrakk> \<Longrightarrow> (f ` I) \<rightarrow> n = f (I \<rightarrow> n); I \<noteq> {}; SetInterval2.strict_mono_on f I\<rbrakk> \<Longrightarrow> (f ` I) \<rightarrow> Suc n = f (I \<rightarrow> Suc n)
[PROOF STEP]
apply (simp add: inext_image inext_nth_closed)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma interval_integral_iexp:
  fixes a b :: real
  shows "(CLBINT x=a..b. iexp x) = \<i> * iexp a - \<i> * iexp b"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. complex_interval_lebesgue_integral lborel (ereal a) (ereal b) iexp = \<i> * iexp a - \<i> * iexp b
[PROOF STEP]
by (subst interval_integral_FTC_finite [where F = "\<lambda>x. -\<i> * iexp x"])
     (auto intro!: derivative_eq_intros continuous_intros)


[STATEMENT]
lemma msetext_dersh_imp_mult: "msetext_dersh gt ys xs \<Longrightarrow> (mset xs, mset ys) \<in> mult {(x, y). gt y x}"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. msetext_dersh gt ys xs \<Longrightarrow> (mset xs, mset ys) \<in> mult {(x, y). gt y x}
[PROOF STEP]
using msetext_dersh_imp_mult_rel[of _ UNIV]
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?ys \<in> lists UNIV; ?xs \<in> lists UNIV; msetext_dersh ?gt ?ys ?xs\<rbrakk> \<Longrightarrow> (mset ?xs, mset ?ys) \<in> mult {(x, y). x \<in> UNIV \<and> y \<in> UNIV \<and> ?gt y x}

goal (1 subgoal):
 1. msetext_dersh gt ys xs \<Longrightarrow> (mset xs, mset ys) \<in> mult {(x, y). gt y x}
[PROOF STEP]
by auto


[STATEMENT]
lemma adj_canc1:
  fixes f :: "'a::order \<Rightarrow> 'b::ord"
  shows "f \<stileturn> g \<Longrightarrow> ((f \<circ> g) x = (f \<circ> g) y \<longrightarrow> g x = g y)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. f \<stileturn> g \<Longrightarrow> (f \<circ> g) x = (f \<circ> g) y \<longrightarrow> g x = g y
[PROOF STEP]
unfolding adj_def comp_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>x y. (f x \<le> y) = (x \<le> g y) \<Longrightarrow> f (g x) = f (g y) \<longrightarrow> g x = g y
[PROOF STEP]
by (metis eq_iff)


[STATEMENT]
lemma multiset_inter_commute: "A \<inter># B = B \<inter># A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A \<inter># B = B \<inter># A
[PROOF STEP]
by (fact subset_mset.inf.commute)


[STATEMENT]
lemma iprev_eq: "
  \<lbrakk> iprev a I = iprev b I; \<exists>x\<in>I. x < a; \<exists>x\<in>I. x < b \<rbrakk> \<Longrightarrow> a = b"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>iprev a I = iprev b I; \<exists>x\<in>I. x < a; \<exists>x\<in>I. x < b\<rbrakk> \<Longrightarrow> a = b
[PROOF STEP]
by (metis iprev_eq_if_neq_iMin not_less_iMin)


[STATEMENT]
lemma transpose_matrix_vector [simp]: "transpose A *v x = x v* A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Finite_Cartesian_Product.transpose A *v x = x v* A
[PROOF STEP]
unfolding transpose_def vector_matrix_mult_def matrix_vector_mult_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<chi>i. \<Sum>j\<in>UNIV. (\<chi>i j. A $ j $ i) $ i $ j * x $ j) = (\<chi>j. \<Sum>i\<in>UNIV. A $ i $ j * x $ i)
[PROOF STEP]
by simp


[STATEMENT]
lemma hyperpow_two: "\<And>r. (r::'a::monoid_mult star) pow (2::hypnat) = r * r"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>r. r pow 2 = r * r
[PROOF STEP]
by transfer (rule power2_eq_square)


[STATEMENT]
lemma Gromov_hyperbolic_invariant_under_quasi_isometry_explicit':
  fixes f::"'a::geodesic_space \<Rightarrow> 'b::Gromov_hyperbolic_space"
  assumes "lambda C-quasi_isometry f"
  shows "Gromov_hyperbolic_subset (752 * lambda^3 * (C + deltaG(TYPE('b)))) (UNIV::('a set))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Gromov_hyperbolic_subset (752 * lambda ^ 3 * (C + deltaG TYPE('b))) UNIV
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Gromov_hyperbolic_subset (752 * lambda ^ 3 * (C + deltaG TYPE('b))) UNIV
[PROOF STEP]
interpret BS: Gromov_hyperbolic_space_geodesic "dist::('b Bonk_Schramm_extension \<Rightarrow> 'b Bonk_Schramm_extension \<Rightarrow> real)" "uniformity" "open" "(\<lambda>_. deltaG(TYPE('b)))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. class.Gromov_hyperbolic_space_geodesic dist uniformity open (\<lambda>_. deltaG TYPE('b))
[PROOF STEP]
apply standard
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Gromov_hyperbolic_subset (deltaG TYPE('b)) UNIV
[PROOF STEP]
using Bonk_Schramm_extension_hyperbolic
[PROOF STATE]
proof (prove)
using this:
Gromov_hyperbolic_subset (deltaG TYPE(?'a)) UNIV

goal (1 subgoal):
 1. Gromov_hyperbolic_subset (deltaG TYPE('b)) UNIV
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Gromov_hyperbolic_subset (752 * lambda ^ 3 * (C + deltaG TYPE('b))) UNIV
[PROOF STEP]
have A: "(lambda * 1) (C * 1 + 0)-quasi_isometry_on UNIV (to_Bonk_Schramm_extension o f)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (lambda * 1) (C * 1 + 0) -quasi_isometry (to_Bonk_Schramm_extension \<circ> f)
[PROOF STEP]
by (rule quasi_isometry_on_compose[OF assms, of _ _ UNIV])
       (auto simp add: isometry_quasi_isometry_on[OF to_Bonk_Schramm_extension_isometry])
[PROOF STATE]
proof (state)
this:
(lambda * 1) (C * 1 + 0) -quasi_isometry (to_Bonk_Schramm_extension \<circ> f)

goal (1 subgoal):
 1. Gromov_hyperbolic_subset (752 * lambda ^ 3 * (C + deltaG TYPE('b))) UNIV
[PROOF STEP]
have *: "deltaG(TYPE('b)) = deltaG(TYPE('b Bonk_Schramm_extension))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. deltaG TYPE('b) = deltaG TYPE('b Bonk_Schramm_extension)
[PROOF STEP]
by (simp add: deltaG_Bonk_Schramm_extension_def)
[PROOF STATE]
proof (state)
this:
deltaG TYPE('b) = deltaG TYPE('b Bonk_Schramm_extension)

goal (1 subgoal):
 1. Gromov_hyperbolic_subset (752 * lambda ^ 3 * (C + deltaG TYPE('b))) UNIV
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Gromov_hyperbolic_subset (752 * lambda ^ 3 * (C + deltaG TYPE('b))) UNIV
[PROOF STEP]
unfolding *
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Gromov_hyperbolic_subset (752 * lambda ^ 3 * (C + deltaG TYPE('b Bonk_Schramm_extension))) UNIV
[PROOF STEP]
apply (rule Gromov_hyperbolic_invariant_under_quasi_isometry_explicit[of _ _ "to_Bonk_Schramm_extension o f"])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. lambda C -quasi_isometry (to_Bonk_Schramm_extension \<circ> f)
[PROOF STEP]
using A
[PROOF STATE]
proof (prove)
using this:
(lambda * 1) (C * 1 + 0) -quasi_isometry (to_Bonk_Schramm_extension \<circ> f)

goal (1 subgoal):
 1. lambda C -quasi_isometry (to_Bonk_Schramm_extension \<circ> f)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
Gromov_hyperbolic_subset (752 * lambda ^ 3 * (C + deltaG TYPE('b))) UNIV

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma p_not_div_choose:
  assumes "k < K" and "k \<le> n"
      and eeq: "\<And>j. \<lbrakk>0<j; j<K\<rbrakk> \<Longrightarrow> multiplicity p (n - k + (K - j)) = multiplicity p (K - j)" "prime p"
    shows "multiplicity p (n choose k) = 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. multiplicity p (n choose k) = 0
[PROOF STEP]
apply (rule p_not_div_choose_lemma [of K p "n-k" k, simplified assms nat_minus_add_max max_absorb1])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>i. Suc i < K \<Longrightarrow> multiplicity p (Suc i) = multiplicity p (Suc (n - k + i))
 2. True
 3. True
[PROOF STEP]
apply (metis add_Suc_right eeq diff_diff_cancel order_less_imp_le zero_less_Suc zero_less_diff)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. True
 2. True
[PROOF STEP]
apply (rule TrueI)+
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done