Working…

This commit is contained in:
Stefan Kebekus 2024-04-29 10:19:21 +02:00
parent a5bf92552c
commit 77d1fd2ae4
1 changed files with 101 additions and 11 deletions

View File

@ -1,19 +1,22 @@
import Mathlib.Analysis.Complex.CauchyIntegral
import Mathlib.Analysis.Complex.Basic
import Mathlib.Analysis.Calculus.LineDeriv.Basic
import Mathlib.Analysis.Calculus.ContDiff.Defs
import Mathlib.Analysis.Calculus.FDeriv.Basic
import Mathlib.Analysis.Complex.RealDeriv
import Mathlib.Analysis.Calculus.ContDiff.Basic
import Mathlib.Analysis.Calculus.Deriv.Linear
import Mathlib.Analysis.Complex.Conformal
import Mathlib.Analysis.Calculus.Conformal.NormedSpace
import Mathlib.Analysis.Calculus.ContDiff.Basic
import Mathlib.Analysis.Calculus.ContDiff.Defs
import Mathlib.Analysis.Calculus.Deriv.Linear
import Mathlib.Analysis.Calculus.FDeriv.Basic
import Mathlib.Analysis.Calculus.FDeriv.Comp
import Mathlib.Analysis.Calculus.FDeriv.Linear
import Mathlib.Analysis.Calculus.FDeriv.RestrictScalars
import Mathlib.Analysis.Calculus.LineDeriv.Basic
import Mathlib.Analysis.Complex.Basic
import Mathlib.Analysis.Complex.CauchyIntegral
import Mathlib.Analysis.Complex.Conformal
import Mathlib.Analysis.Complex.RealDeriv
variable {z : } {f : } {h : DifferentiableAt f z}
variable {z : } {f : }
theorem CauchyRiemann₁ : fderiv f z Complex.I = Complex.I * fderiv f z 1 := by
theorem CauchyRiemann₁ : (DifferentiableAt f z)
→ (fderiv f z) Complex.I = Complex.I * (fderiv f z) 1 := by
intro h
let A := fderiv f z
have t₁ : A (Complex.I • 1) = Complex.I • (A 1) := by
exact ContinuousLinearMap.map_smul_of_tower A Complex.I 1
@ -33,3 +36,90 @@ theorem CauchyRiemann₁ : fderiv f z Complex.I = Complex.I * fderiv f z
exact DifferentiableAt.fderiv_restrictScalars h
rw [t₃]
exact t₂c
theorem CauchyRiemann₂ : (DifferentiableAt f z)
→ lineDeriv f z Complex.I = Complex.I * lineDeriv f z 1 := by
intro h
have : lineDeriv f z Complex.I = (fderiv f z) Complex.I := by
apply DifferentiableAt.lineDeriv_eq_fderiv
apply h.restrictScalars
rw [this]
have : lineDeriv f z 1 = (fderiv f z) 1 := by
apply DifferentiableAt.lineDeriv_eq_fderiv
apply h.restrictScalars
rw [this]
exact CauchyRiemann₁ h
theorem CauchyRiemann₃ : (DifferentiableAt f z)
→ lineDeriv (Complex.reCLM ∘ f) z 1 = lineDeriv (Complex.imCLM ∘ f) z Complex.I := by
-- Proof starts here
intro h
have t₀₀ : DifferentiableAt f z := by
exact h.restrictScalars
have t₀₁ : DifferentiableAt Complex.reCLM (f z) := by
have : ∀ w, DifferentiableAt Complex.reCLM w := by
intro w
refine Differentiable.differentiableAt ?h
exact ContinuousLinearMap.differentiable (Complex.reCLM : →L[] )
exact this (f z)
have t₁ : DifferentiableAt (Complex.reCLM ∘ f) z := by
apply t₀₁.comp
exact t₀₀
have t₂ : lineDeriv (Complex.reCLM ∘ f) z 1 = (fderiv (Complex.reCLM ∘ f) z) 1 := by
apply DifferentiableAt.lineDeriv_eq_fderiv
exact t₁
rw [t₂]
have s₀₀ : DifferentiableAt f z := by
exact h.restrictScalars
have s₀₁ : DifferentiableAt Complex.imCLM (f z) := by
have : ∀ w, DifferentiableAt Complex.imCLM w := by
intro w
apply Differentiable.differentiableAt
exact ContinuousLinearMap.differentiable (Complex.imCLM : →L[] )
exact this (f z)
have s₁ : DifferentiableAt (Complex.im ∘ f) z := by
apply s₀₁.comp
exact s₀₀
have s₂ : lineDeriv (Complex.imCLM ∘ f) z Complex.I = (fderiv (Complex.imCLM ∘ f) z) Complex.I := by
apply DifferentiableAt.lineDeriv_eq_fderiv
exact s₁
rw [s₂]
rw [fderiv.comp, fderiv.comp]
simp
rw [CauchyRiemann₁ h]
have u₁ : ∀ w, fderiv Complex.reCLM w = Complex.reCLM := by
exact fun w => ContinuousLinearMap.fderiv Complex.reCLM
--rw [u₁ (f z)]
have u₂ : ∀ w, fderiv Complex.imCLM w = Complex.imCLM := by
exact fun w => ContinuousLinearMap.fderiv Complex.imCLM
-- rw [u₂ (f z)]
rw [Complex.I_mul]
-- DifferentiableAt Complex.im (f z)
exact Complex.imCLM.differentiableAt
-- DifferentiableAt f z
exact t₀₀
-- DifferentiableAt Complex.re (f z)
exact Complex.reCLM.differentiableAt
-- DifferentiableAt f z
exact t₀₀