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.holomorphicAt
import Nevanlinna.holomorphic_primitive
import Nevanlinna.mathlibAddOn
theorem CauchyRiemann₆
{E : Type*} [NormedAddCommGroup E] [NormedSpace E]
{F : Type*} [NormedAddCommGroup F] [NormedSpace F]
{E : Type*} [NormedAddCommGroup E] [NormedSpace E]
{F : Type*} [NormedAddCommGroup F] [NormedSpace 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
constructor
· -- Direction "→"
· -- Direction "→"
intro h
constructor
· exact DifferentiableAt.restrictScalars h
@ -30,7 +31,7 @@ theorem CauchyRiemann₆
rw [DifferentiableAt.fderiv_restrictScalars h]
simp
· -- Direction "←"
· -- Direction "←"
intro ⟨h₁, h₂⟩
apply (differentiableAt_iff_restrictScalars h₁).2
@ -52,9 +53,9 @@ theorem CauchyRiemann₆
theorem CauchyRiemann₇
{F : Type*} [NormedAddCommGroup F] [NormedSpace F]
{F : Type*} [NormedAddCommGroup F] [NormedSpace F]
{f : → F}
{z : } :
{z : } :
(DifferentiableAt f z) ↔ (DifferentiableAt f z) ∧ partialDeriv Complex.I f z = Complex.I • partialDeriv 1 f z := by
constructor
· intro hf
@ -68,7 +69,7 @@ theorem CauchyRiemann₇
constructor
· exact h₁
· 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]
exact CommMonoid.mul_comm Complex.I e
rw [this]
@ -94,12 +95,14 @@ theorem CauchyRiemann₇
have : - (e.im : ) = (-e.im : ) • (1 : ) := by simp
rw [this, partialDeriv_smul₁ ]
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
have reg₂f : ContDiff 2 f := by
apply contDiff_iff_contDiffAt.mpr
apply contDiff_iff_contDiffAt.mpr
intro z
exact (hf z).1
have reg₁f_1 : ContDiff 1 f_1 := by
apply contDiff_iff_contDiffAt.mpr
apply contDiff_iff_contDiffAt.mpr
intro z
dsimp [f_1]
apply ContDiffAt.continuousLinearMap_comp
exact partialDeriv_contDiffAt (hf z).1 1
have reg₁f_I : ContDiff 1 f_I := by
apply contDiff_iff_contDiffAt.mpr
apply contDiff_iff_contDiffAt.mpr
intro z
dsimp [f_I]
apply ContDiffAt.continuousLinearMap_comp
exact partialDeriv_contDiffAt (hf z).1 Complex.I
have reg₁g : ContDiff 1 g := by
have reg₁g : ContDiff 1 g := by
dsimp [g]
apply ContDiff.sub
exact reg₁f_1
have : Complex.I • f_I = fun x ↦ Complex.I • f_I x := rfl
rw [this]
apply ContDiff.const_smul
apply ContDiff.const_smul'
exact reg₁f_I
have reg₁ : Differentiable g := by
have reg₁ : Differentiable g := by
intro z
apply CauchyRiemann₇.2
constructor
@ -174,33 +175,29 @@ theorem harmonic_is_realOfHolomorphic
--Differentiable (partialDeriv _ f)
repeat
apply ContDiff.differentiable
apply contDiff_iff_contDiffAt.mpr
apply ContDiff.differentiable
apply contDiff_iff_contDiffAt.mpr
exact fun w ↦ partialDeriv_contDiffAt (hf w).1 _
apply le_rfl
-- Differentiable f_1
exact reg₁f_1.differentiable le_rfl
-- Differentiable (Complex.I • f_I)
have : Complex.I • f_I = fun x ↦ Complex.I • f_I x := rfl
rw [this]
apply Differentiable.const_smul
apply Differentiable.const_smul'
exact reg₁f_I.differentiable le_rfl
-- Differentiable f_1
exact reg₁f_1.differentiable le_rfl
-- Differentiable (Complex.I • f_I)
have : Complex.I • f_I = fun x ↦ Complex.I • f_I x := rfl
rw [this]
apply Differentiable.const_smul
apply Differentiable.const_smul'
exact reg₁f_I.differentiable le_rfl
let F := fun z ↦ (primitive 0 g) z + f 0
have regF : Differentiable F := by
have regF : Differentiable F := by
apply Differentiable.add
apply primitive_differentiable reg₁
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
rw [DifferentiableAt.fderiv_restrictScalars (regF x)]
dsimp [F]
@ -223,11 +220,11 @@ theorem harmonic_is_realOfHolomorphic
exact regF w
· -- (F z).re = f z
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
exact ContinuousLinearMap.differentiable Complex.reCLM
exact Differentiable.restrictScalars regF
have C : (F 0).re = f 0 := by
have C : (F 0).re = f 0 := by
dsimp [F]
rw [primitive_zeroAtBasepoint]
simp
@ -251,6 +248,5 @@ theorem harmonic_is_realOfHolomorphic
ring
-- DifferentiableAt (⇑Complex.reCLM) (F x)
fun_prop
-- DifferentiableAt F x
-- DifferentiableAt F 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