Update holomorphic_primitive2.lean

This commit is contained in:
Stefan Kebekus
2024-08-07 10:46:08 +02:00
parent ad5e7c69fd
commit f0b84fcbff

View File

@@ -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
linarith
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]
linarith
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,13 +192,11 @@ 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
linarith
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
_ ( (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