Update holomorphic.primitive.lean

This commit is contained in:
Stefan Kebekus 2024-06-18 11:21:58 +02:00
parent 2d7e62bb49
commit 7e6fc7bacd
1 changed files with 79 additions and 25 deletions

View File

@ -175,7 +175,7 @@ theorem primitive_lem1
theorem primitive_fderivAtBasepoint theorem primitive_fderivAtBasepointZero
{E : Type u} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E] {E : Type u} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E]
(f : → E) (f : → E)
(hf : Continuous f) : (hf : Continuous f) :
@ -187,7 +187,7 @@ theorem primitive_fderivAtBasepoint
rw [Asymptotics.isLittleO_iff] rw [Asymptotics.isLittleO_iff]
intro c hc intro c hc
have {z : } {e : E} : z • e = (∫ (x : ) in (0)..(z.re), e) + Complex.I • ∫ (x : ) in (0)..(z.im), e:= by have {z : } {e : E} : z • e = (∫ (_ : ) in (0)..(z.re), e) + Complex.I • ∫ (_ : ) in (0)..(z.im), e:= by
simp simp
rw [smul_comm] rw [smul_comm]
rw [← smul_assoc] rw [← smul_assoc]
@ -204,10 +204,46 @@ theorem primitive_fderivAtBasepoint
rw [this] rw [this]
have {A B C D :E} : (A + B) - (C + D) = (A - C) + (B - D) := by have {A B C D :E} : (A + B) - (C + D) = (A - C) + (B - D) := by
abel abel
have t₀ {r : } : IntervalIntegrable (fun x => f { re := x, im := 0 }) MeasureTheory.volume 0 r := by sorry have t₀ {r : } : IntervalIntegrable (fun x => f { re := x, im := 0 }) MeasureTheory.volume 0 r := by
have t₁ {r : } :IntervalIntegrable (fun x => f 0) MeasureTheory.volume 0 r := by sorry apply Continuous.intervalIntegrable
have t₂ {a b : }: IntervalIntegrable (fun x_1 => f { re := a, im := x_1 }) MeasureTheory.volume 0 b := by sorry apply Continuous.comp
have t₃ {a : } : IntervalIntegrable (fun x => f 0) MeasureTheory.volume 0 a := by sorry exact hf
have : (fun x => ({ re := x, im := 0 } : )) = Complex.ofRealLI := by rfl
rw [this]
continuity
have t₁ {r : } : IntervalIntegrable (fun _ => f 0) MeasureTheory.volume 0 r := by
apply Continuous.intervalIntegrable
apply Continuous.comp
exact hf
fun_prop
have t₂ {a b : } : IntervalIntegrable (fun x_1 => f { re := a, im := x_1 }) MeasureTheory.volume 0 b := by
apply Continuous.intervalIntegrable
apply Continuous.comp
exact hf
have : ((fun x => { re := a, im := x }) : ) = (fun x => { re := a, im := 0 } + { re := 0, im := x }) := by
funext x
apply Complex.ext
rw [Complex.add_re]
simp
rw [Complex.add_im]
simp
rw [this]
apply Continuous.add
fun_prop
have : (fun x => { re := 0, im := x } : ) = Complex.I • Complex.ofRealCLM := by
funext x
simp
have : (x : ) = {re := x, im := 0} := by rfl
rw [this]
rw [Complex.I_mul]
simp
continuity
have t₃ {a : } : IntervalIntegrable (fun _ => f 0) MeasureTheory.volume 0 a := by
apply Continuous.intervalIntegrable
apply Continuous.comp
exact hf
fun_prop
conv => conv =>
left left
intro x intro x
@ -232,24 +268,25 @@ theorem primitive_fderivAtBasepoint
intro y hy intro y hy
apply mem_ball_iff_norm.mp (h₂ε hy) apply mem_ball_iff_norm.mp (h₂ε hy)
use Metric.ball 0 ε use Metric.ball 0 (ε / (4 : ))
constructor constructor
· exact Metric.ball_mem_nhds 0 h₁ε · apply Metric.ball_mem_nhds 0
linarith
· intro y hy · intro y hy
have h₁y : |y.re| < ε := by have h₁y : |y.re| < ε / 4 := by
calc |y.re| calc |y.re|
_ ≤ Complex.abs y := by apply Complex.abs_re_le_abs _ ≤ Complex.abs y := by apply Complex.abs_re_le_abs
_ < ε := by _ < ε / 4 := by
let A := mem_ball_iff_norm.1 hy let A := mem_ball_iff_norm.1 hy
simp at A simp at A
assumption linarith
have h₂y : |y.im| < ε := by have h₂y : |y.im| < ε / 4 := by
calc |y.im| calc |y.im|
_ ≤ Complex.abs y := by apply Complex.abs_im_le_abs _ ≤ Complex.abs y := by apply Complex.abs_im_le_abs
_ < ε := by _ < ε / 4 := by
let A := mem_ball_iff_norm.1 hy let A := mem_ball_iff_norm.1 hy
simp at A simp at A
assumption linarith
have intervalComputation {x' y' : } (h : x' ∈ Ι 0 y') : |x'| ≤ |y'| := by have intervalComputation {x' y' : } (h : x' ∈ Ι 0 y') : |x'| ≤ |y'| := by
let A := h.1 let A := h.1
@ -271,10 +308,10 @@ theorem primitive_fderivAtBasepoint
apply intervalIntegral.norm_integral_le_of_norm_le_const apply intervalIntegral.norm_integral_le_of_norm_le_const
intro x hx intro x hx
have h₁x : |x| < ε := by have h₁x : |x| < ε / 4 := by
calc |x| calc |x|
_ ≤ |y.re| := intervalComputation hx _ ≤ |y.re| := intervalComputation hx
_ < ε := 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] rw [mem_ball_iff_norm]
@ -282,17 +319,16 @@ theorem primitive_fderivAtBasepoint
have : { re := x, im := 0 } = (x : ) := by rfl have : { re := x, im := 0 } = (x : ) := by rfl
rw [this] rw [this]
rw [Complex.abs_ofReal] rw [Complex.abs_ofReal]
exact h₁x 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
intro x hx intro x hx
have h₁x : |x| < ε := by have h₁x : |x| < ε / 4 := by
calc |x| calc |x|
_ ≤ |y.im| := intervalComputation hx _ ≤ |y.im| := intervalComputation hx
_ < ε := h₂y _ < ε / 4 := h₂y
apply le_of_lt apply le_of_lt
apply h₃ε { re := y.re, im := x } apply h₃ε { re := y.re, im := x }
@ -301,7 +337,7 @@ theorem primitive_fderivAtBasepoint
calc Complex.abs { re := y.re, im := x } calc Complex.abs { re := y.re, im := x }
_ ≤ |y.re| + |x| := by _ ≤ |y.re| + |x| := by
apply Complex.abs_le_abs_re_add_abs_im { re := y.re, im := x } apply Complex.abs_le_abs_re_add_abs_im { re := y.re, im := x }
_ ≤ 2 * ε := by _ < ε := by
linarith 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‖
@ -318,12 +354,30 @@ theorem primitive_fderivAtBasepoint
_ ≤ (c / (4 : )) * (|y.re| + |y.im|) := by _ ≤ (c / (4 : )) * (|y.re| + |y.im|) := by
simp simp
rw [mul_add] rw [mul_add]
_ ≤ c * ‖y‖ := by _ ≤ (c / (4 : )) * (4 * ‖y‖) := by
have : |y.re| + |y.im| ≤ 4 * ‖y‖ := by
calc |y.re| + |y.im|
_ ≤ ‖y‖ + ‖y‖ := by
apply add_le_add
apply Complex.abs_re_le_abs
apply Complex.abs_im_le_abs
_ ≤ 4 * ‖y‖ := by
rw [← two_mul]
apply mul_le_mul apply mul_le_mul
apply div_le_self
exact le_of_lt hc
linarith linarith
sorry rfl
exact norm_nonneg y
linarith
apply mul_le_mul
rfl
exact this
apply add_nonneg
apply abs_nonneg
apply abs_nonneg
linarith
_ ≤ c * ‖y‖ := by
linarith
theorem primitive_additivity theorem primitive_additivity