Update holomorphic_primitive2.lean
This commit is contained in:
parent
ad5e7c69fd
commit
f0b84fcbff
|
@ -89,18 +89,45 @@ theorem primitive_fderivAtBasepointZero
|
|||
rw [← intervalIntegral.integral_sub t₂ t₃]
|
||||
rw [Filter.eventually_iff_exists_mem]
|
||||
|
||||
let s := f⁻¹' Metric.ball (f 0) (c / (4 : ℝ))
|
||||
have h₁s : IsOpen s := IsOpen.preimage hf Metric.isOpen_ball
|
||||
have h₂s : 0 ∈ s := by
|
||||
apply Set.mem_preimage.mpr
|
||||
apply Metric.mem_ball_self
|
||||
obtain ⟨s, h₁s, h₂s⟩ : ∃ s ⊆ f⁻¹' Metric.ball (f 0) (c / (4 : ℝ)), IsOpen s ∧ 0 ∈ s := by
|
||||
have B : Metric.ball (f 0) (c / 4) ∈ nhds (f 0) := by
|
||||
apply Metric.ball_mem_nhds (f 0)
|
||||
linarith
|
||||
exact eventually_nhds_iff.mp (continuousAt_def.1 hf (Metric.ball (f 0) (c / (4 : ℝ))) B)
|
||||
|
||||
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
|
||||
apply mem_ball_iff_norm.mp (h₂ε hy)
|
||||
apply mem_ball_iff_norm.mp
|
||||
exact h₁s (h₂ε hy)
|
||||
|
||||
use Metric.ball 0 (ε / (4 : ℝ))
|
||||
constructor
|
||||
|
@ -148,12 +175,11 @@ theorem primitive_fderivAtBasepointZero
|
|||
_ < ε / 4 := h₁y
|
||||
apply le_of_lt
|
||||
apply h₃ε { re := x, im := 0 }
|
||||
rw [mem_ball_iff_norm]
|
||||
simp
|
||||
have : { re := x, im := 0 } = (x : ℂ) := by rfl
|
||||
rw [this]
|
||||
rw [Complex.abs_ofReal]
|
||||
constructor
|
||||
· simp
|
||||
linarith
|
||||
· simp
|
||||
exact h₁ε
|
||||
|
||||
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
|
||||
|
@ -166,12 +192,10 @@ theorem primitive_fderivAtBasepointZero
|
|||
|
||||
apply le_of_lt
|
||||
apply h₃ε { re := y.re, im := x }
|
||||
simp
|
||||
|
||||
calc Complex.abs { re := y.re, im := x }
|
||||
_ ≤ |y.re| + |x| := by
|
||||
apply Complex.abs_le_abs_re_add_abs_im { re := y.re, im := x }
|
||||
_ < ε := by
|
||||
constructor
|
||||
· simp
|
||||
linarith
|
||||
· simp
|
||||
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‖
|
||||
|
|
Loading…
Reference in New Issue