Working…
This commit is contained in:
parent
2f4672e144
commit
271ad821dd
|
@ -86,6 +86,123 @@ theorem antiholomorphicAt_is_harmonicAt
|
||||||
exact holomorphicAt_is_harmonicAt h
|
exact holomorphicAt_is_harmonicAt h
|
||||||
|
|
||||||
|
|
||||||
|
theorem log_normSq_of_holomorphicAt_is_harmonicAt
|
||||||
|
{f : ℂ → ℂ}
|
||||||
|
{z : ℂ}
|
||||||
|
(h₁f : HolomorphicAt f z)
|
||||||
|
(h₂f : f z ≠ 0) :
|
||||||
|
HarmonicAt (Real.log ∘ Complex.normSq ∘ f) z := by
|
||||||
|
|
||||||
|
/- First prove the theorem under the additional assumption that
|
||||||
|
|
||||||
|
-/
|
||||||
|
have lem₁ : ∀ g : ℂ → ℂ, (HolomorphicAt g z) → (g z ≠ 0) → (g z ∈ Complex.slitPlane) → HarmonicAt (Real.log ∘ Complex.normSq ∘ g) z := by
|
||||||
|
intro g h₁g h₂g h₃g
|
||||||
|
|
||||||
|
-- Rewrite the log |g|² as Complex.log (g * gc)
|
||||||
|
suffices hyp : HarmonicAt (Complex.log ∘ ((Complex.conjCLE ∘ g) * g)) z from by
|
||||||
|
have : Real.log ∘ Complex.normSq ∘ g = Complex.reCLM ∘ Complex.ofRealCLM ∘ Real.log ∘ Complex.normSq ∘ g := by
|
||||||
|
funext x
|
||||||
|
simp
|
||||||
|
rw [this]
|
||||||
|
|
||||||
|
have : Complex.ofRealCLM ∘ Real.log ∘ Complex.normSq ∘ g = Complex.log ∘ ((Complex.conjCLE ∘ g) * g) := by
|
||||||
|
funext x
|
||||||
|
simp
|
||||||
|
rw [Complex.ofReal_log]
|
||||||
|
rw [Complex.normSq_eq_conj_mul_self]
|
||||||
|
exact Complex.normSq_nonneg (g x)
|
||||||
|
rw [← this] at hyp
|
||||||
|
apply harmonicAt_comp_CLM_is_harmonicAt hyp
|
||||||
|
|
||||||
|
-- Locally around z, rewrite Complex.log (g * gc) as Complex.log g + Complex.log.gc
|
||||||
|
-- This uses the assumption that g z is in Complex.slitPlane
|
||||||
|
have : (Complex.log ∘ (Complex.conjCLE ∘ g * g)) =ᶠ[nhds z] (Complex.log ∘ Complex.conjCLE ∘ g + Complex.log ∘ g) := by
|
||||||
|
apply Filter.eventuallyEq_iff_exists_mem.2
|
||||||
|
use g⁻¹' (Complex.slitPlane ∩ {0}ᶜ)
|
||||||
|
constructor
|
||||||
|
· apply ContinuousAt.preimage_mem_nhds
|
||||||
|
· exact (HolomorphicAt_differentiableAt h₁g).continuousAt
|
||||||
|
· apply IsOpen.mem_nhds
|
||||||
|
apply IsOpen.inter Complex.isOpen_slitPlane isOpen_ne
|
||||||
|
constructor
|
||||||
|
· exact h₃g
|
||||||
|
· exact h₂g
|
||||||
|
· intro x hx
|
||||||
|
simp
|
||||||
|
rw [Complex.log_mul_eq_add_log_iff _ hx.2]
|
||||||
|
rw [Complex.arg_conj]
|
||||||
|
simp [Complex.slitPlane_arg_ne_pi hx.1]
|
||||||
|
constructor
|
||||||
|
· exact Real.pi_pos
|
||||||
|
· exact Real.pi_nonneg
|
||||||
|
simp
|
||||||
|
apply hx.2
|
||||||
|
|
||||||
|
sorry
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Suffices to show Harmonic (Complex.log ∘ ⇑(starRingEnd ℂ) ∘ f + Complex.log ∘ f)
|
||||||
|
-- THIS IS WHERE WE USE h₃
|
||||||
|
have : (Complex.log ∘ (Complex.conjCLE ∘ f * f)) z = (Complex.log ∘ Complex.conjCLE ∘ f + Complex.log ∘ f) z := by
|
||||||
|
unfold Function.comp
|
||||||
|
simp
|
||||||
|
rw [Complex.log_mul_eq_add_log_iff]
|
||||||
|
|
||||||
|
have : Complex.arg ((starRingEnd ℂ) (f z)) = - Complex.arg (f z) := by
|
||||||
|
rw [Complex.arg_conj]
|
||||||
|
have : ¬ Complex.arg (f z) = Real.pi := by
|
||||||
|
exact Complex.slitPlane_arg_ne_pi (h₃ z hz)
|
||||||
|
simp
|
||||||
|
tauto
|
||||||
|
rw [this]
|
||||||
|
simp
|
||||||
|
constructor
|
||||||
|
· exact Real.pi_pos
|
||||||
|
· exact Real.pi_nonneg
|
||||||
|
exact (AddEquivClass.map_ne_zero_iff starRingAut).mpr (h₂ z hz)
|
||||||
|
exact h₂ z hz
|
||||||
|
|
||||||
|
rw [HarmonicOn_congr hs this]
|
||||||
|
simp
|
||||||
|
|
||||||
|
apply harmonicOn_add_harmonicOn_is_harmonicOn hs
|
||||||
|
|
||||||
|
have : (fun x => Complex.log ((starRingEnd ℂ) (f x))) = (Complex.log ∘ ⇑(starRingEnd ℂ) ∘ f) := by
|
||||||
|
rfl
|
||||||
|
rw [this]
|
||||||
|
|
||||||
|
-- HarmonicOn (Complex.log ∘ ⇑(starRingEnd ℂ) ∘ f) s
|
||||||
|
have : ∀ z ∈ s, (Complex.log ∘ ⇑(starRingEnd ℂ) ∘ f) z = (Complex.conjCLE ∘ Complex.log ∘ f) z := by
|
||||||
|
intro z hz
|
||||||
|
unfold Function.comp
|
||||||
|
rw [Complex.log_conj]
|
||||||
|
rfl
|
||||||
|
exact Complex.slitPlane_arg_ne_pi (h₃ z hz)
|
||||||
|
rw [HarmonicOn_congr hs this]
|
||||||
|
|
||||||
|
rw [← harmonicOn_iff_comp_CLE_is_harmonicOn]
|
||||||
|
|
||||||
|
apply holomorphicOn_is_harmonicOn
|
||||||
|
exact hs
|
||||||
|
|
||||||
|
intro z hz
|
||||||
|
apply DifferentiableAt.differentiableWithinAt
|
||||||
|
apply DifferentiableAt.comp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
exact Complex.differentiableAt_log (h₃ z hz)
|
||||||
|
apply DifferentiableOn.differentiableAt h₁ -- (h₁ z hz)
|
||||||
|
exact IsOpen.mem_nhds hs hz
|
||||||
|
exact hs
|
||||||
|
|
||||||
|
-- HarmonicOn (Complex.log ∘ ⇑(starRingEnd ℂ) ∘ f) s
|
||||||
|
apply holomorphicOn_is_harmonicOn hs
|
||||||
|
exact DifferentiableOn.clog h₁ h₃
|
||||||
|
|
||||||
|
|
||||||
theorem holomorphic_is_harmonic {f : ℂ → F₁} (h : Differentiable ℂ f) :
|
theorem holomorphic_is_harmonic {f : ℂ → F₁} (h : Differentiable ℂ f) :
|
||||||
Harmonic f := by
|
Harmonic f := by
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue