Minor cleanup

This commit is contained in:
Stefan Kebekus 2024-07-31 09:40:35 +02:00
parent dd207b19a2
commit c9b72c89b5
2 changed files with 65 additions and 34 deletions

View File

@ -1,17 +1,18 @@
import Nevanlinna.complexHarmonic import Nevanlinna.complexHarmonic
import Nevanlinna.holomorphicAt import Nevanlinna.holomorphicAt
import Nevanlinna.holomorphic_primitive import Nevanlinna.holomorphic_primitive
import Nevanlinna.mathlibAddOn
theorem CauchyRiemann₆ theorem CauchyRiemann₆
{E : Type*} [NormedAddCommGroup E] [NormedSpace E] {E : Type*} [NormedAddCommGroup E] [NormedSpace E]
{F : Type*} [NormedAddCommGroup F] [NormedSpace F] {F : Type*} [NormedAddCommGroup F] [NormedSpace F]
{f : E → F} {f : E → F}
{z : E} : {z : E} :
(DifferentiableAt f z) ↔ (DifferentiableAt f z) ∧ ∀ e, partialDeriv (Complex.I • e) f z = Complex.I • partialDeriv e f z := by (DifferentiableAt f z) ↔ (DifferentiableAt f z) ∧ ∀ e, partialDeriv (Complex.I • e) f z = Complex.I • partialDeriv e f z := by
constructor constructor
· -- Direction "→" · -- Direction "→"
intro h intro h
constructor constructor
· exact DifferentiableAt.restrictScalars h · exact DifferentiableAt.restrictScalars h
@ -30,7 +31,7 @@ theorem CauchyRiemann₆
rw [DifferentiableAt.fderiv_restrictScalars h] rw [DifferentiableAt.fderiv_restrictScalars h]
simp simp
· -- Direction "←" · -- Direction "←"
intro ⟨h₁, h₂⟩ intro ⟨h₁, h₂⟩
apply (differentiableAt_iff_restrictScalars h₁).2 apply (differentiableAt_iff_restrictScalars h₁).2
@ -52,9 +53,9 @@ theorem CauchyRiemann₆
theorem CauchyRiemann₇ theorem CauchyRiemann₇
{F : Type*} [NormedAddCommGroup F] [NormedSpace F] {F : Type*} [NormedAddCommGroup F] [NormedSpace F]
{f : → F} {f : → F}
{z : } : {z : } :
(DifferentiableAt f z) ↔ (DifferentiableAt f z) ∧ partialDeriv Complex.I f z = Complex.I • partialDeriv 1 f z := by (DifferentiableAt f z) ↔ (DifferentiableAt f z) ∧ partialDeriv Complex.I f z = Complex.I • partialDeriv 1 f z := by
constructor constructor
· intro hf · intro hf
@ -68,7 +69,7 @@ theorem CauchyRiemann₇
constructor constructor
· exact h₁ · exact h₁
· intro e · intro e
have : Complex.I • e = e • Complex.I := by have : Complex.I • e = e • Complex.I := by
rw [smul_eq_mul, smul_eq_mul] rw [smul_eq_mul, smul_eq_mul]
exact CommMonoid.mul_comm Complex.I e exact CommMonoid.mul_comm Complex.I e
rw [this] rw [this]
@ -94,12 +95,14 @@ theorem CauchyRiemann₇
have : - (e.im : ) = (-e.im : ) • (1 : ) := by simp have : - (e.im : ) = (-e.im : ) • (1 : ) := by simp
rw [this, partialDeriv_smul₁ ] rw [this, partialDeriv_smul₁ ]
simp simp
/- /-
A harmonic, real-valued function on is the real part of a suitable holomorphic function. A harmonic, real-valued function on is the real part of a suitable holomorphic
function.
-/ -/
@ -114,34 +117,32 @@ theorem harmonic_is_realOfHolomorphic
let g : := f_1 - Complex.I • f_I let g : := f_1 - Complex.I • f_I
have reg₂f : ContDiff 2 f := by have reg₂f : ContDiff 2 f := by
apply contDiff_iff_contDiffAt.mpr apply contDiff_iff_contDiffAt.mpr
intro z intro z
exact (hf z).1 exact (hf z).1
have reg₁f_1 : ContDiff 1 f_1 := by have reg₁f_1 : ContDiff 1 f_1 := by
apply contDiff_iff_contDiffAt.mpr apply contDiff_iff_contDiffAt.mpr
intro z intro z
dsimp [f_1] dsimp [f_1]
apply ContDiffAt.continuousLinearMap_comp apply ContDiffAt.continuousLinearMap_comp
exact partialDeriv_contDiffAt (hf z).1 1 exact partialDeriv_contDiffAt (hf z).1 1
have reg₁f_I : ContDiff 1 f_I := by have reg₁f_I : ContDiff 1 f_I := by
apply contDiff_iff_contDiffAt.mpr apply contDiff_iff_contDiffAt.mpr
intro z intro z
dsimp [f_I] dsimp [f_I]
apply ContDiffAt.continuousLinearMap_comp apply ContDiffAt.continuousLinearMap_comp
exact partialDeriv_contDiffAt (hf z).1 Complex.I exact partialDeriv_contDiffAt (hf z).1 Complex.I
have reg₁g : ContDiff 1 g := by have reg₁g : ContDiff 1 g := by
dsimp [g] dsimp [g]
apply ContDiff.sub apply ContDiff.sub
exact reg₁f_1 exact reg₁f_1
have : Complex.I • f_I = fun x ↦ Complex.I • f_I x := rfl apply ContDiff.const_smul'
rw [this]
apply ContDiff.const_smul
exact reg₁f_I exact reg₁f_I
have reg₁ : Differentiable g := by have reg₁ : Differentiable g := by
intro z intro z
apply CauchyRiemann₇.2 apply CauchyRiemann₇.2
constructor constructor
@ -174,33 +175,29 @@ theorem harmonic_is_realOfHolomorphic
--Differentiable (partialDeriv _ f) --Differentiable (partialDeriv _ f)
repeat repeat
apply ContDiff.differentiable apply ContDiff.differentiable
apply contDiff_iff_contDiffAt.mpr apply contDiff_iff_contDiffAt.mpr
exact fun w ↦ partialDeriv_contDiffAt (hf w).1 _ exact fun w ↦ partialDeriv_contDiffAt (hf w).1 _
apply le_rfl apply le_rfl
-- Differentiable f_1 -- Differentiable f_1
exact reg₁f_1.differentiable le_rfl exact reg₁f_1.differentiable le_rfl
-- Differentiable (Complex.I • f_I) -- Differentiable (Complex.I • f_I)
have : Complex.I • f_I = fun x ↦ Complex.I • f_I x := rfl apply Differentiable.const_smul'
rw [this]
apply Differentiable.const_smul
exact reg₁f_I.differentiable le_rfl exact reg₁f_I.differentiable le_rfl
-- Differentiable f_1 -- Differentiable f_1
exact reg₁f_1.differentiable le_rfl exact reg₁f_1.differentiable le_rfl
-- Differentiable (Complex.I • f_I) -- Differentiable (Complex.I • f_I)
have : Complex.I • f_I = fun x ↦ Complex.I • f_I x := rfl apply Differentiable.const_smul'
rw [this]
apply Differentiable.const_smul
exact reg₁f_I.differentiable le_rfl exact reg₁f_I.differentiable le_rfl
let F := fun z ↦ (primitive 0 g) z + f 0 let F := fun z ↦ (primitive 0 g) z + f 0
have regF : Differentiable F := by have regF : Differentiable F := by
apply Differentiable.add apply Differentiable.add
apply primitive_differentiable reg₁ apply primitive_differentiable reg₁
simp simp
have pF'' : ∀ x, (fderiv F x) = ContinuousLinearMap.lsmul (g x) := by have pF'' : ∀ x, (fderiv F x) = ContinuousLinearMap.lsmul (g x) := by
intro x intro x
rw [DifferentiableAt.fderiv_restrictScalars (regF x)] rw [DifferentiableAt.fderiv_restrictScalars (regF x)]
dsimp [F] dsimp [F]
@ -223,11 +220,11 @@ theorem harmonic_is_realOfHolomorphic
exact regF w exact regF w
· -- (F z).re = f z · -- (F z).re = f z
have A := reg₂f.differentiable one_le_two have A := reg₂f.differentiable one_le_two
have B : Differentiable (Complex.reCLM ∘ F) := by have B : Differentiable (Complex.reCLM ∘ F) := by
apply Differentiable.comp apply Differentiable.comp
exact ContinuousLinearMap.differentiable Complex.reCLM exact ContinuousLinearMap.differentiable Complex.reCLM
exact Differentiable.restrictScalars regF exact Differentiable.restrictScalars regF
have C : (F 0).re = f 0 := by have C : (F 0).re = f 0 := by
dsimp [F] dsimp [F]
rw [primitive_zeroAtBasepoint] rw [primitive_zeroAtBasepoint]
simp simp
@ -251,6 +248,5 @@ theorem harmonic_is_realOfHolomorphic
ring ring
-- DifferentiableAt (⇑Complex.reCLM) (F x) -- DifferentiableAt (⇑Complex.reCLM) (F x)
fun_prop fun_prop
-- DifferentiableAt F x -- DifferentiableAt F x
exact regF.restrictScalars x exact regF.restrictScalars x

View File

@ -0,0 +1,35 @@
import Mathlib.Analysis.Calculus.ContDiff.Basic
import Mathlib.Analysis.Calculus.FDeriv.Add
variable {𝕜 : Type*} [NontriviallyNormedField 𝕜]
variable {E : Type*} [NormedAddCommGroup E] [NormedSpace 𝕜 E]
variable {F : Type*} [NormedAddCommGroup F] [NormedSpace 𝕜 F]
variable {G : Type*} [NormedAddCommGroup G] [NormedSpace 𝕜 G]
variable {G' : Type*} [NormedAddCommGroup G'] [NormedSpace 𝕜 G']
variable {f f₀ f₁ g : E → F}
variable {f' f₀' f₁' g' : E →L[𝕜] F}
variable (e : E →L[𝕜] F)
variable {x : E}
variable {s t : Set E}
variable {L L₁ L₂ : Filter E}
variable {R : Type*} [Semiring R] [Module R F] [SMulCommClass 𝕜 R F] [ContinuousConstSMul R F]
-- import Mathlib.Analysis.Calculus.FDeriv.Add
@[fun_prop]
theorem Differentiable.const_smul' (h : Differentiable 𝕜 f) (c : R) :
Differentiable 𝕜 (c • f) := by
have : c • f = fun x ↦ c • f x := rfl
rw [this]
exact Differentiable.const_smul h c
-- Mathlib.Analysis.Calculus.ContDiff.Basic
theorem ContDiff.const_smul' {f : E → F} (c : R) (hf : ContDiff 𝕜 n f) :
ContDiff 𝕜 n (c • f) := by
have : c • f = fun x ↦ c • f x := rfl
rw [this]
exact ContDiff.const_smul c hf