working…

This commit is contained in:
Stefan Kebekus 2024-06-07 13:16:41 +02:00
parent 271ad821dd
commit 21693bd12d
3 changed files with 92 additions and 3 deletions

View File

@ -93,9 +93,7 @@ theorem log_normSq_of_holomorphicAt_is_harmonicAt
(h₂f : f z ≠ 0) : (h₂f : f z ≠ 0) :
HarmonicAt (Real.log ∘ Complex.normSq ∘ f) z := by HarmonicAt (Real.log ∘ Complex.normSq ∘ f) z := by
/- First prove the theorem under the additional assumption that -- First prove the theorem for functions with image in the slitPlane
-/
have lem₁ : ∀ g : , (HolomorphicAt g z) → (g z ≠ 0) → (g z ∈ Complex.slitPlane) → HarmonicAt (Real.log ∘ Complex.normSq ∘ g) z := by 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 intro g h₁g h₂g h₃g
@ -139,6 +137,11 @@ theorem log_normSq_of_holomorphicAt_is_harmonicAt
simp simp
apply hx.2 apply hx.2
rw [HarmonicAt_eventuallyEq this]
sorry sorry

View File

@ -64,6 +64,18 @@ theorem HarmonicAt_iff
· exact h₂f · exact h₂f
theorem HarmonicAt_eventuallyEq {f₁ f₂ : → F} {x : } (h : f₁ =ᶠ[nhds x] f₂) : HarmonicAt f₁ x ↔ HarmonicAt f₂ x := by
constructor
· intro h₁
constructor
· exact ContDiffAt.congr_of_eventuallyEq h₁.1 (Filter.EventuallyEq.symm h)
· exact Filter.EventuallyEq.trans (laplace_eventuallyEq' (Filter.EventuallyEq.symm h)) h₁.2
· intro h₁
constructor
· exact ContDiffAt.congr_of_eventuallyEq h₁.1 h
· exact Filter.EventuallyEq.trans (laplace_eventuallyEq' h) h₁.2
theorem HarmonicOn_of_locally_HarmonicOn {f : → F} {s : Set } (h : ∀ x ∈ s, ∃ (u : Set ), IsOpen u ∧ x ∈ u ∧ HarmonicOn f (s ∩ u)) : theorem HarmonicOn_of_locally_HarmonicOn {f : → F} {s : Set } (h : ∀ x ∈ s, ∃ (u : Set ), IsOpen u ∧ x ∈ u ∧ HarmonicOn f (s ∩ u)) :
HarmonicOn f s := by HarmonicOn f s := by
constructor constructor
@ -142,6 +154,21 @@ theorem harmonicOn_add_harmonicOn_is_harmonicOn {f₁ f₂ : → F} {s : Set
simp simp
theorem harmonicAt_add_harmonicAt_is_harmonicAt
{f₁ f₂ : → F}
{x : }
(h₁ : HarmonicAt f₁ x)
(h₂ : HarmonicAt f₂ x) :
HarmonicAt (f₁ + f₂) x := by
constructor
· exact ContDiffAt.add h₁.1 h₂.1
· rw [laplace_add_ContDiffAt]
intro z hz
rw [laplace_add_ContDiffOn hs h₁.1 h₂.1 z hz]
rw [h₁.2 z hz, h₂.2 z hz]
simp
theorem harmonic_smul_const_is_harmonic {f : → F} {c : } (h : Harmonic f) : theorem harmonic_smul_const_is_harmonic {f : → F} {c : } (h : Harmonic f) :
Harmonic (c • f) := by Harmonic (c • f) := by
constructor constructor

View File

@ -33,6 +33,14 @@ theorem laplace_eventuallyEq {f₁ f₂ : → F} {x : } (h : f₁ =ᶠ[nh
rw [partialDeriv_eventuallyEq (partialDeriv_eventuallyEq' h Complex.I) Complex.I] rw [partialDeriv_eventuallyEq (partialDeriv_eventuallyEq' h Complex.I) Complex.I]
theorem laplace_eventuallyEq' {f₁ f₂ : → F} {x : } (h : f₁ =ᶠ[nhds x] f₂) : Δ f₁ =ᶠ[nhds x] Δ f₂ := by
unfold Complex.laplace
apply Filter.EventuallyEq.add
exact partialDeriv_eventuallyEq' (partialDeriv_eventuallyEq' h 1) 1
exact partialDeriv_eventuallyEq' (partialDeriv_eventuallyEq' h Complex.I) Complex.I
theorem laplace_add theorem laplace_add
{f₁ f₂ : → F} {f₁ f₂ : → F}
(h₁ : ContDiff 2 f₁) (h₁ : ContDiff 2 f₁)
@ -161,6 +169,57 @@ theorem laplace_add_ContDiffAt
apply fun v ↦ (partialDeriv_contDiffAt h₁ v).differentiableAt le_rfl apply fun v ↦ (partialDeriv_contDiffAt h₁ v).differentiableAt le_rfl
apply fun v ↦ (partialDeriv_contDiffAt h₂ v).differentiableAt le_rfl apply fun v ↦ (partialDeriv_contDiffAt h₂ v).differentiableAt le_rfl
theorem laplace_add_ContDiffAt'
{f₁ f₂ : → F}
{x : }
(h₁ : ContDiffAt 2 f₁ x)
(h₂ : ContDiffAt 2 f₂ x) :
Δ (f₁ + f₂) =ᶠ[nhds x] (Δ f₁) + (Δ f₂):= by
unfold Complex.laplace
have : partialDeriv 1 (partialDeriv 1 f₁) + partialDeriv Complex.I (partialDeriv Complex.I f₁) +
(partialDeriv 1 (partialDeriv 1 f₂) + partialDeriv Complex.I (partialDeriv Complex.I f₂)) =
(partialDeriv 1 (partialDeriv 1 f₁) + (partialDeriv 1 (partialDeriv 1 f₂)) +
(partialDeriv Complex.I (partialDeriv Complex.I f₁) + partialDeriv Complex.I (partialDeriv Complex.I f₂))) := by
group
rw [this]
apply Filter.EventuallyEq.add
suffices hyp : partialDeriv 1 (partialDeriv 1 (f₁ + f₂)) =ᶠ[nhds x] partialDeriv 1 (partialDeriv 1 f₁) + partialDeriv 1 (partialDeriv 1 f₂) from by
have : (fun x => partialDeriv 1 (partialDeriv 1 (f₁ + f₂)) x) = partialDeriv 1 (partialDeriv 1 (f₁ + f₂)) := by
rfl
rw [this]
have : (fun x => (partialDeriv 1 (partialDeriv 1 f₁) + partialDeriv 1 (partialDeriv 1 f₂)) x) = (partialDeriv 1 (partialDeriv 1 f₁)) + (partialDeriv 1 (partialDeriv 1 f₂)) := by
rfl
rwa [this]
simp
have h₁₁ : ContDiffAt 1 f₁ x := h₁.of_le one_le_two
have h₂₁ : ContDiffAt 1 f₂ x := h₂.of_le one_le_two
let A : partialDeriv 1 (f₁ + f₂) =ᶠ[nhds x] (partialDeriv 1 f₁) + (partialDeriv 1 f₂) := by
exact partialDeriv_add₂_contDiffAt h₁₁ h₂₁
let B : partialDeriv 1 (partialDeriv 1 (f₁ + f₂)) =ᶠ[nhds x] (partialDeriv 1 (partialDeriv 1 f₁)) + (partialDeriv 1 (partialDeriv 1 f₂)) := by
sorry
sorry
repeat
rw [partialDeriv_eventuallyEq (partialDeriv_add₂_contDiffAt h₁₁ h₂₁)]
rw [partialDeriv_add₂_differentiableAt]
-- I am super confused at this point because the tactic 'ring' does not work.
-- I do not understand why. So, I need to do things by hand.
rw [add_assoc]
rw [add_assoc]
rw [add_right_inj (partialDeriv 1 (partialDeriv 1 f₁) x)]
rw [add_comm]
rw [add_assoc]
rw [add_right_inj (partialDeriv Complex.I (partialDeriv Complex.I f₁) x)]
rw [add_comm]
repeat
apply fun v ↦ (partialDeriv_contDiffAt h₁ v).differentiableAt le_rfl
apply fun v ↦ (partialDeriv_contDiffAt h₂ v).differentiableAt le_rfl
theorem laplace_smul {f : → F} : ∀ v : , Δ (v • f) = v • (Δ f) := by theorem laplace_smul {f : → F} : ∀ v : , Δ (v • f) = v • (Δ f) := by
intro v intro v