Update complexHarmonic.lean

This commit is contained in:
Stefan Kebekus 2024-05-02 21:09:38 +02:00
parent f239759275
commit ea3693ff24
1 changed files with 51 additions and 15 deletions

View File

@ -3,38 +3,74 @@ import Mathlib.Analysis.Complex.TaylorSeries
import Mathlib.Analysis.Calculus.LineDeriv.Basic
import Mathlib.Analysis.Calculus.ContDiff.Defs
import Mathlib.Analysis.Calculus.FDeriv.Basic
import Mathlib.Analysis.Calculus.FDeriv.Symmetric
import Nevanlinna.cauchyRiemann
noncomputable def Complex.laplace : () → () := by
noncomputable def Complex.laplace : () → () := by
intro f
let f₁ := fun x ↦ lineDeriv f x 1
let f₁₁ := fun x ↦ lineDeriv f₁ x 1
let f₂ := fun x ↦ lineDeriv f x Complex.I
let f₂₂ := fun x ↦ lineDeriv f₂ x Complex.I
exact f₁₁ + f₂₂
let fx := fun w ↦ fderiv f w 1
let fxx := fun z ↦ fderiv fx z 1
let fy := fun w ↦ fderiv f w Complex.I
let fyy := fun z ↦ fderiv fy z Complex.I
exact fun z ↦ (fxx z) + (fyy z)
def Harmonic (f : ) : Prop :=
def Harmonic (f : ) : Prop :=
(ContDiff 2 f) ∧ (∀ z, Complex.laplace f z = 0)
theorem re_comp_holomorphic_is_harmonic (f : ) :
Differentiable f → Harmonic (Complex.reCLM ∘ f) := by
Differentiable f → Harmonic f := by
intro h
constructor
· -- Complex.reCLM ∘ f is two times real continuously differentiable
apply ContDiff.comp
· -- Complex.reCLM is two times real continuously differentiable
exact ContinuousLinearMap.contDiff Complex.reCLM
· -- f is two times real continuously differentiable
exact ContDiff.restrict_scalars (Differentiable.contDiff h)
exact ContDiff.restrict_scalars (Differentiable.contDiff h)
· -- Laplace of f is zero
intro z
unfold Complex.laplace
simp
let ZZ := (CauchyRiemann₃ (h z)).left
sorry
conv =>
left
right
arg 1
arg 2
intro z
rw [CauchyRiemann₁ (h z)]
have t₀ : ∀ z, DifferentiableAt (fun w => (fderiv f w) 1) z := by
intro z
sorry
have t₁ : ∀ x, (fderiv (fun w => Complex.I * (fderiv f w) 1) z) x
= Complex.I * ((fderiv (fun w => (fderiv f w) 1) z) x) := by
intro x
rw [fderiv_const_mul]
simp
exact t₀ z
rw [t₁]
have t₂ : (fderiv (fun w => (fderiv f w) 1) z) Complex.I
= (fderiv (fun w => (fderiv f w) Complex.I) z) 1 := by
sorry
rw [t₂]
conv =>
left
right
arg 2
arg 1
arg 2
intro z
rw [CauchyRiemann₁ (h z)]
rw [t₁]
rw [← mul_assoc]
simp