Update complexHarmonic.lean

This commit is contained in:
Stefan Kebekus 2024-05-16 10:01:15 +02:00
parent 015ab14131
commit 710de9372b
1 changed files with 34 additions and 45 deletions

View File

@ -122,28 +122,7 @@ theorem logabs_of_holomorphic_is_harmonic
(h₃ : ∀ z, f z ∈ Complex.slitPlane) : (h₃ : ∀ z, f z ∈ Complex.slitPlane) :
Harmonic (fun z ↦ Real.log ‖f z‖) := by Harmonic (fun z ↦ Real.log ‖f z‖) := by
-- f is real C² /- We start with a number of lemmas on regularity of all the functions involved -/
have f_is_real_C2 : ContDiff 2 f :=
ContDiff.restrict_scalars (Differentiable.contDiff h₁)
-- Complex.log ∘ f is real C²
have t₀ : Differentiable (Complex.log ∘ f) := by
intro z
apply DifferentiableAt.comp
exact Complex.differentiableAt_log (h₃ z)
exact h₁ z
have t₂ : Complex.log ∘ ⇑(starRingEnd ) ∘ f = ⇑(starRingEnd ) ∘ Complex.log ∘ f := by
funext z
unfold Function.comp
rw [Complex.log_conj]
exact Complex.slitPlane_arg_ne_pi (h₃ z)
have t₃ : ⇑(starRingEnd ) ∘ Complex.log ∘ f = Complex.conjCLE ∘ Complex.log ∘ f := by
rfl
-- The norm square is z * z.conj
have normSq_conj : ∀ (z : ), (starRingEnd ) z * z = ↑‖z‖ ^ 2 := Complex.conj_mul'
-- The norm square is real C² -- The norm square is real C²
have normSq_is_real_C2 : ContDiff 2 Complex.normSq := by have normSq_is_real_C2 : ContDiff 2 Complex.normSq := by
@ -161,6 +140,18 @@ theorem logabs_of_holomorphic_is_harmonic
apply ContinuousLinearMap.contDiff Complex.imCLM apply ContinuousLinearMap.contDiff Complex.imCLM
apply ContinuousLinearMap.contDiff Complex.imCLM apply ContinuousLinearMap.contDiff Complex.imCLM
-- f is real C²
have f_is_real_C2 : ContDiff 2 f :=
ContDiff.restrict_scalars (Differentiable.contDiff h₁)
-- Complex.log ∘ f is real C²
have log_f_is_holomorphic : Differentiable (Complex.log ∘ f) := by
intro z
apply DifferentiableAt.comp
exact Complex.differentiableAt_log (h₃ z)
exact h₁ z
-- Real.log |f|² is real C²
have t₄ : ContDiff 2 (Real.log ∘ ⇑Complex.normSq ∘ f) := by have t₄ : ContDiff 2 (Real.log ∘ ⇑Complex.normSq ∘ f) := by
rw [contDiff_iff_contDiffAt] rw [contDiff_iff_contDiffAt]
intro z intro z
@ -171,6 +162,19 @@ theorem logabs_of_holomorphic_is_harmonic
apply ContDiff.comp_contDiffAt z normSq_is_real_C2 apply ContDiff.comp_contDiffAt z normSq_is_real_C2
exact ContDiff.contDiffAt f_is_real_C2 exact ContDiff.contDiffAt f_is_real_C2
have t₂ : Complex.log ∘ ⇑(starRingEnd ) ∘ f = Complex.conjCLE ∘ Complex.log ∘ f := by
funext z
unfold Function.comp
rw [Complex.log_conj]
rfl
exact Complex.slitPlane_arg_ne_pi (h₃ z)
constructor constructor
· -- logabs f is real C² · -- logabs f is real C²
have : (fun z ↦ Real.log ‖f z‖) = (2 : )⁻¹ • (Real.log ∘ Complex.normSq ∘ f) := by have : (fun z ↦ Real.log ‖f z‖) = (2 : )⁻¹ • (Real.log ∘ Complex.normSq ∘ f) := by
@ -190,15 +194,8 @@ theorem logabs_of_holomorphic_is_harmonic
apply contDiff_iff_contDiffAt.2 apply contDiff_iff_contDiffAt.2
intro z intro z
apply ContDiffAt.const_smul apply ContDiffAt.const_smul
apply ContDiffAt.comp exact ContDiff.contDiffAt t₄
apply Real.contDiffAt_log.2
simp
exact h₂ z
apply ContDiffAt.comp
exact ContDiff.contDiffAt normSq_is_real_C2
exact ContDiff.contDiffAt f_is_real_C2
· -- Laplace vanishes · -- Laplace vanishes
have : (fun z ↦ Real.log ‖f z‖) = (2 : )⁻¹ • (Real.log ∘ Complex.normSq ∘ f) := by have : (fun z ↦ Real.log ‖f z‖) = (2 : )⁻¹ • (Real.log ∘ Complex.normSq ∘ f) := by
@ -258,31 +255,23 @@ theorem logabs_of_holomorphic_is_harmonic
rw [this] rw [this]
rw [laplace_add] rw [laplace_add]
have t₁: Complex.laplace (Complex.log ∘ f) = 0 := by rw [t₂, laplace_compCLE]
let A := holomorphic_is_harmonic t₀ intro z
funext z
exact A.2 z
rw [t₁]
simp simp
rw [(holomorphic_is_harmonic log_f_is_holomorphic).2 z]
rw [t₂]
rw [t₃]
rw [laplace_compCLE]
rw [t₁]
simp simp
-- ContDiff 2 (Complex.log ∘ f) -- ContDiff 2 (Complex.log ∘ f)
exact ContDiff.restrict_scalars (Differentiable.contDiff t₀) exact ContDiff.restrict_scalars (Differentiable.contDiff log_f_is_holomorphic)
-- ContDiff 2 (Complex.log ∘ ⇑(starRingEnd ) ∘ f) -- ContDiff 2 (Complex.log ∘ ⇑(starRingEnd ) ∘ f)
rw [t₂, t₃] rw [t₂]
apply ContDiff.comp apply ContDiff.comp
exact ContinuousLinearEquiv.contDiff Complex.conjCLE exact ContinuousLinearEquiv.contDiff Complex.conjCLE
exact ContDiff.restrict_scalars (Differentiable.contDiff t₀) exact ContDiff.restrict_scalars (Differentiable.contDiff log_f_is_holomorphic)
-- ContDiff 2 (Complex.log ∘ f) -- ContDiff 2 (Complex.log ∘ f)
exact ContDiff.restrict_scalars (Differentiable.contDiff t₀) exact ContDiff.restrict_scalars (Differentiable.contDiff log_f_is_holomorphic)
-- ContDiff 2 (Real.log ∘ ⇑Complex.normSq ∘ f) -- ContDiff 2 (Real.log ∘ ⇑Complex.normSq ∘ f)
exact t₄ exact t₄