Update holomorphic_primitive2.lean
This commit is contained in:
parent
656d50e367
commit
fc3a4ae3f3
|
@ -22,6 +22,7 @@ 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}
|
||||||
{R : ℝ}
|
{R : ℝ}
|
||||||
|
(hR : 0 < R)
|
||||||
(hf : ContinuousOn f (Metric.ball 0 R)) :
|
(hf : ContinuousOn f (Metric.ball 0 R)) :
|
||||||
HasDerivAt (primitive 0 f) (f 0) 0 := by
|
HasDerivAt (primitive 0 f) (f 0) 0 := by
|
||||||
unfold primitive
|
unfold primitive
|
||||||
|
@ -48,6 +49,7 @@ theorem primitive_fderivAtBasepointZero
|
||||||
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
|
have t₀ {r : ℝ} : IntervalIntegrable (fun x => f { re := x, im := 0 }) MeasureTheory.volume 0 r := by
|
||||||
apply Continuous.intervalIntegrable
|
apply Continuous.intervalIntegrable
|
||||||
apply Continuous.comp
|
apply Continuous.comp
|
||||||
|
@ -55,6 +57,7 @@ theorem primitive_fderivAtBasepointZero
|
||||||
have : (fun x => ({ re := x, im := 0 } : ℂ)) = Complex.ofRealLI := by rfl
|
have : (fun x => ({ re := x, im := 0 } : ℂ)) = Complex.ofRealLI := by rfl
|
||||||
rw [this]
|
rw [this]
|
||||||
continuity
|
continuity
|
||||||
|
|
||||||
have t₁ {r : ℝ} : IntervalIntegrable (fun _ => f 0) MeasureTheory.volume 0 r := by
|
have t₁ {r : ℝ} : IntervalIntegrable (fun _ => f 0) MeasureTheory.volume 0 r := by
|
||||||
apply Continuous.intervalIntegrable
|
apply Continuous.intervalIntegrable
|
||||||
apply Continuous.comp
|
apply Continuous.comp
|
||||||
|
@ -97,11 +100,17 @@ theorem primitive_fderivAtBasepointZero
|
||||||
exact eventually_nhds_iff.mp (continuousAt_def.1 hf (Metric.ball (f 0) (c / (4 : ℝ))) B)
|
exact eventually_nhds_iff.mp (continuousAt_def.1 hf (Metric.ball (f 0) (c / (4 : ℝ))) B)
|
||||||
|
|
||||||
obtain ⟨ε, h₁ε, h₂ε⟩ : ∃ ε > 0, (Metric.ball 0 ε) ×ℂ (Metric.ball 0 ε) ⊆ s := by
|
obtain ⟨ε, h₁ε, h₂ε⟩ : ∃ ε > 0, (Metric.ball 0 ε) ×ℂ (Metric.ball 0 ε) ⊆ s := by
|
||||||
obtain ⟨ε', h₁ε', h₂ε'⟩ : ∃ ε' > 0, Metric.ball 0 ε' ⊆ s := by
|
obtain ⟨ε', h₁ε', h₂ε'⟩ : ∃ ε' > 0, Metric.ball 0 ε' ⊆ s ∩ Metric.ball 0 R := by
|
||||||
apply Metric.mem_nhds_iff.mp
|
apply Metric.mem_nhds_iff.mp
|
||||||
apply IsOpen.mem_nhds
|
apply IsOpen.mem_nhds
|
||||||
|
apply IsOpen.inter
|
||||||
exact h₂s.1
|
exact h₂s.1
|
||||||
exact h₂s.2
|
exact Metric.isOpen_ball
|
||||||
|
constructor
|
||||||
|
· exact h₂s.2
|
||||||
|
· simp
|
||||||
|
|
||||||
|
sorry
|
||||||
use (2 : ℝ)⁻¹ * ε'
|
use (2 : ℝ)⁻¹ * ε'
|
||||||
constructor
|
constructor
|
||||||
· simpa
|
· simpa
|
||||||
|
@ -280,6 +289,7 @@ theorem primitive_hasDerivAtBasepoint
|
||||||
{f : ℂ → E}
|
{f : ℂ → E}
|
||||||
{R : ℝ}
|
{R : ℝ}
|
||||||
(z₀ : ℂ)
|
(z₀ : ℂ)
|
||||||
|
(hR : 0 < R)
|
||||||
(hf : ContinuousOn f (Metric.ball z₀ R)) :
|
(hf : ContinuousOn f (Metric.ball z₀ R)) :
|
||||||
HasDerivAt (primitive z₀ f) (f z₀) z₀ := by
|
HasDerivAt (primitive z₀ f) (f z₀) z₀ := by
|
||||||
|
|
||||||
|
@ -310,7 +320,7 @@ theorem primitive_hasDerivAtBasepoint
|
||||||
simp
|
simp
|
||||||
have : g 0 = f z₀ := by simp [g]
|
have : g 0 = f z₀ := by simp [g]
|
||||||
rw [← this]
|
rw [← this]
|
||||||
exact primitive_fderivAtBasepointZero hg
|
exact primitive_fderivAtBasepointZero hR hg
|
||||||
apply HasDerivAt.sub_const
|
apply HasDerivAt.sub_const
|
||||||
have : (fun (x : ℂ) ↦ x) = id := by
|
have : (fun (x : ℂ) ↦ x) = id := by
|
||||||
funext x
|
funext x
|
||||||
|
@ -670,13 +680,31 @@ theorem primitive_hasDerivAt
|
||||||
rw [Filter.EventuallyEq.hasDerivAt_iff A]
|
rw [Filter.EventuallyEq.hasDerivAt_iff A]
|
||||||
rw [← add_zero (f z)]
|
rw [← add_zero (f z)]
|
||||||
apply HasDerivAt.add
|
apply HasDerivAt.add
|
||||||
apply primitive_hasDerivAtBasepoint
|
|
||||||
|
|
||||||
apply hf.continuousOn.continuousAt
|
let R' := R - dist z z₀
|
||||||
apply (IsOpen.mem_nhds_iff Metric.isOpen_ball).2 hz
|
have h₀R' : 0 < R' := by
|
||||||
|
dsimp [R']
|
||||||
|
simp
|
||||||
|
exact hz
|
||||||
|
have h₁R' : Metric.ball z R' ⊆ Metric.ball z₀ R := by
|
||||||
|
intro x hx
|
||||||
|
simp
|
||||||
|
calc dist x z₀
|
||||||
|
_ ≤ dist x z + dist z z₀ := dist_triangle x z z₀
|
||||||
|
_ < R' + dist z z₀ := by
|
||||||
|
refine add_lt_add_right ?bc (dist z z₀)
|
||||||
|
exact hx
|
||||||
|
_ = R := by
|
||||||
|
dsimp [R']
|
||||||
|
simp
|
||||||
|
|
||||||
|
apply primitive_hasDerivAtBasepoint
|
||||||
|
exact h₀R'
|
||||||
|
apply ContinuousOn.mono hf.continuousOn h₁R'
|
||||||
apply hasDerivAt_const
|
apply hasDerivAt_const
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
theorem primitive_differentiable
|
theorem primitive_differentiable
|
||||||
{E : Type u} [NormedAddCommGroup E] [NormedSpace ℂ E] [CompleteSpace E]
|
{E : Type u} [NormedAddCommGroup E] [NormedSpace ℂ E] [CompleteSpace E]
|
||||||
{f : ℂ → E}
|
{f : ℂ → E}
|
||||||
|
|
Loading…
Reference in New Issue