Update holomorphic_primitive2.lean

This commit is contained in:
Stefan Kebekus 2024-08-07 10:46:08 +02:00
parent ad5e7c69fd
commit f0b84fcbff
1 changed files with 46 additions and 22 deletions

View File

@ -89,18 +89,45 @@ theorem primitive_fderivAtBasepointZero
rw [← intervalIntegral.integral_sub t₂ t₃] rw [← intervalIntegral.integral_sub t₂ t₃]
rw [Filter.eventually_iff_exists_mem] rw [Filter.eventually_iff_exists_mem]
let s := f⁻¹' Metric.ball (f 0) (c / (4 : )) obtain ⟨s, h₁s, h₂s⟩ : ∃ s ⊆ f⁻¹' Metric.ball (f 0) (c / (4 : )), IsOpen s ∧ 0 ∈ s := by
have h₁s : IsOpen s := IsOpen.preimage hf Metric.isOpen_ball have B : Metric.ball (f 0) (c / 4) ∈ nhds (f 0) := by
have h₂s : 0 ∈ s := by apply Metric.ball_mem_nhds (f 0)
apply Set.mem_preimage.mpr linarith
apply Metric.mem_ball_self exact eventually_nhds_iff.mp (continuousAt_def.1 hf (Metric.ball (f 0) (c / (4 : ))) B)
linarith
obtain ⟨ε, h₁ε, h₂ε⟩ := Metric.isOpen_iff.1 h₁s 0 h₂s obtain ⟨ε, h₁ε, h₂ε⟩ : ∃ ε > 0, (Metric.ball 0 ε) × (Metric.ball 0 ε) ⊆ s := by
obtain ⟨ε', h₁ε', h₂ε'⟩ : ∃ ε' > 0, Metric.ball 0 ε' ⊆ s := by
apply Metric.mem_nhds_iff.mp
apply IsOpen.mem_nhds
exact h₂s.1
exact h₂s.2
use (2 : )⁻¹ * ε'
constructor
· simpa
· intro x hx
apply h₂ε'
simp
calc Complex.abs x
_ ≤ |x.re| + |x.im| := Complex.abs_le_abs_re_add_abs_im x
_ < (2 : )⁻¹ * ε' + |x.im| := by
apply (add_lt_add_iff_right |x.im|).mpr
have : x.re ∈ Metric.ball 0 (2⁻¹ * ε') := (Complex.mem_reProdIm.1 hx).1
simp at this
exact this
_ < (2 : )⁻¹ * ε' + (2 : )⁻¹ * ε' := by
apply (add_lt_add_iff_left ((2 : )⁻¹ * ε')).mpr
have : x.im ∈ Metric.ball 0 (2⁻¹ * ε') := (Complex.mem_reProdIm.1 hx).2
simp at this
exact this
_ = ε' := by
rw [← add_mul]
abel_nf
simp
have h₃ε : ∀ y ∈ Metric.ball 0 ε, ‖(f y) - (f 0)‖ < (c / (4 : )) := by have h₃ε : ∀ y ∈ (Metric.ball 0 ε) × (Metric.ball 0 ε), ‖(f y) - (f 0)‖ < (c / (4 : )) := by
intro y hy intro y hy
apply mem_ball_iff_norm.mp (h₂ε hy) apply mem_ball_iff_norm.mp
exact h₁s (h₂ε hy)
use Metric.ball 0 (ε / (4 : )) use Metric.ball 0 (ε / (4 : ))
constructor constructor
@ -148,12 +175,11 @@ theorem primitive_fderivAtBasepointZero
_ < ε / 4 := h₁y _ < ε / 4 := h₁y
apply le_of_lt apply le_of_lt
apply h₃ε { re := x, im := 0 } apply h₃ε { re := x, im := 0 }
rw [mem_ball_iff_norm] constructor
simp · simp
have : { re := x, im := 0 } = (x : ) := by rfl linarith
rw [this] · simp
rw [Complex.abs_ofReal] exact h₁ε
linarith
have t₂ : ‖∫ (x : ) in (0)..(y.im), f { re := y.re, im := x } - f 0‖ ≤ (c / (4 : )) * |y.im - 0| := by have t₂ : ‖∫ (x : ) in (0)..(y.im), f { re := y.re, im := x } - f 0‖ ≤ (c / (4 : )) * |y.im - 0| := by
apply intervalIntegral.norm_integral_le_of_norm_le_const apply intervalIntegral.norm_integral_le_of_norm_le_const
@ -166,13 +192,11 @@ theorem primitive_fderivAtBasepointZero
apply le_of_lt apply le_of_lt
apply h₃ε { re := y.re, im := x } apply h₃ε { re := y.re, im := x }
simp constructor
· simp
calc Complex.abs { re := y.re, im := x } linarith
_ ≤ |y.re| + |x| := by · simp
apply Complex.abs_le_abs_re_add_abs_im { re := y.re, im := x } linarith
_ < ε := by
linarith
calc ‖(∫ (x : ) in (0)..(y.re), f { re := x, im := 0 } - f 0) + Complex.I • ∫ (x : ) in (0)..(y.im), f { re := y.re, im := x } - f 0‖ calc ‖(∫ (x : ) in (0)..(y.re), f { re := x, im := 0 } - f 0) + Complex.I • ∫ (x : ) in (0)..(y.im), f { re := y.re, im := x } - f 0‖
_ ≤ ‖(∫ (x : ) in (0)..(y.re), f { re := x, im := 0 } - f 0)‖ + ‖Complex.I • ∫ (x : ) in (0)..(y.im), f { re := y.re, im := x } - f 0‖ := by _ ≤ ‖(∫ (x : ) in (0)..(y.re), f { re := x, im := 0 } - f 0)‖ + ‖Complex.I • ∫ (x : ) in (0)..(y.im), f { re := y.re, im := x } - f 0‖ := by