Update holomorphic.primitive.lean

This commit is contained in:
Stefan Kebekus
2024-06-18 16:49:00 +02:00
parent 7e6fc7bacd
commit decb648c24

View File

@@ -1,7 +1,10 @@
import Mathlib.Analysis.Complex.TaylorSeries
import Mathlib.Analysis.SpecialFunctions.Integrals
import Mathlib.MeasureTheory.Integral.DivergenceTheorem
import Mathlib.MeasureTheory.Integral.IntervalIntegral
import Mathlib.MeasureTheory.Function.LocallyIntegrable
import Nevanlinna.cauchyRiemann
import Nevanlinna.partialDeriv
@@ -95,7 +98,7 @@ theorem integral_divergence₅
( (x : ) in lowerLeft.re..upperRight.re, F x, lowerLeft.im) + Complex.I (x : ) in lowerLeft.im..upperRight.im, F upperRight.re, x =
( (x : ) in lowerLeft.re..upperRight.re, F x, upperRight.im) + Complex.I (x : ) in lowerLeft.im..upperRight.im, F lowerLeft.re, x := by
let h₁f : ContDiff 1 F := (hF.contDiff : ContDiff 1 F).restrict_scalars
let h₁f : ContDiff 1 F := (hF.contDiff : ContDiff 1 F).restrict_scalars
let h₁g : ContDiff 1 (-Complex.I F) := by
have : -Complex.I F = fun x -Complex.I F x := by rfl
@@ -151,30 +154,6 @@ theorem primitive_zeroAtBasepoint
simp
theorem primitive_lem1
{E : Type u} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E] [IsScalarTower E]
(v : E) :
HasDerivAt (primitive 0 (fun _ v)) v 0 := by
unfold primitive
simp
have : (fun (z : ) => z.re v + Complex.I z.im v) = (fun (y : ) => ((fun w w) y) v) := by
funext z
rw [smul_comm]
rw [ smul_assoc]
simp
have : z.re v = (z.re : ) v := by exact rfl
rw [this, add_smul]
simp
rw [this]
have hc : HasDerivAt (fun (w : ) w) 1 0 := by
apply hasDerivAt_id'
nth_rewrite 2 [ (one_smul v)]
exact HasDerivAt.smul_const hc v
theorem primitive_fderivAtBasepointZero
{E : Type u} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E]
(f : E)
@@ -380,12 +359,122 @@ theorem primitive_fderivAtBasepointZero
linarith
theorem primitive_translation
{E : Type u} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E]
(f : E)
(z₀ t : ) :
primitive z₀ (f fun z (z - t)) = ((primitive (z₀ - t) f) fun z (z - t)) := by
funext z
unfold primitive
simp
let g : E := fun x f ( {re := x, im := z₀.im - t.im} )
have {x : } : f ({ re := x, im := z₀.im } - t) = g (1*x - t.re) := by
congr 1
apply Complex.ext <;> simp
conv =>
left
left
arg 1
intro x
rw [this]
rw [intervalIntegral.integral_comp_mul_sub g one_ne_zero (t.re)]
simp
congr 1
let g : E := fun x f ( {re := z.re - t.re, im := x} )
have {x : } : f ({ re := z.re, im := x} - t) = g (1*x - t.im) := by
congr 1
apply Complex.ext <;> simp
conv =>
left
arg 1
intro x
rw [this]
rw [intervalIntegral.integral_comp_mul_sub g one_ne_zero (t.im)]
simp
theorem primitive_fderivAtBasepoint
{E : Type u} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E]
{z₀ : }
(f : E)
(hf : Continuous f) :
HasDerivAt (primitive z₀ f) (f z₀) z₀ := by
let g := f fun z z + z₀
have : Continuous g := by continuity
let A := primitive_fderivAtBasepointZero g this
simp at A
let B := primitive_translation g z₀ z₀
simp at B
have : (g fun z (z - z₀)) = f := by
funext z
dsimp [g]
simp
rw [this] at B
rw [B]
have : f z₀ = (1 : ) (f z₀) := by
exact (MulAction.one_smul (f z₀)).symm
conv =>
arg 2
rw [this]
apply HasDerivAt.scomp
simp
have : g 0 = f z₀ := by simp [g]
rw [ this]
exact A
apply HasDerivAt.sub_const
have : (fun (x : ) x) = id := by
funext x
simp
rw [this]
exact hasDerivAt_id z₀
theorem primitive_additivity
{E : Type u} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E]
(f : E)
(hf : Differentiable f)
(z₀ z₁ : ) :
(primitive z f) = (primitive z f) - (fun z primitive z₀ f z₁) := by
primitive z f = fun z (primitive z f) z + (primitive z₀ f z₁) := by
funext z
unfold primitive
have : ( (x : ) in z₀.re..z.re, f { re := x, im := z₀.im }) = ( (x : ) in z₀.re..z₁.re, f { re := x, im := z₀.im }) + ( (x : ) in z₁.re..z.re, f { re := x, im := z₀.im }) := by
rw [intervalIntegral.integral_add_adjacent_intervals]
apply Continuous.intervalIntegrable
apply Continuous.comp
exact Differentiable.continuous hf
sorry
--
apply Continuous.intervalIntegrable
apply Continuous.comp
exact Differentiable.continuous hf
sorry
rw [this]
sorry
have : ( (x : ) in z₀.im..z.im, f { re := z.re, im := x }) = ( (x : ) in z₀.im..z₁.im, f { re := z.re, im := x }) + ( (x : ) in z₁.im..z.im, f { re := z.re, im := x }) := by
rw [intervalIntegral.integral_add_adjacent_intervals]
apply Continuous.intervalIntegrable
apply Continuous.comp
exact Differentiable.continuous hf
sorry
--
apply Continuous.intervalIntegrable
apply Continuous.comp
exact Differentiable.continuous hf
sorry
rw [this]
simp
let A := integral_divergence₅ f hf z₁.re, z₀.im z.re, z₁.im
simp at A
have {a b c d : E} : (b + a) + (c + d) = (a + c) + (b + d) := by
abel
rw [this]
rw [A]
abel