Update cauchyRiemann.lean

This commit is contained in:
Stefan Kebekus 2024-04-29 14:19:58 +02:00
parent 77d1fd2ae4
commit 38eaf677f9
1 changed files with 47 additions and 44 deletions

View File

@ -1,15 +1,15 @@
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.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.Basic
--import Mathlib.Analysis.Complex.CauchyIntegral
--import Mathlib.Analysis.Complex.Conformal
import Mathlib.Analysis.Complex.RealDeriv
variable {z : } {f : }
@ -26,12 +26,9 @@ theorem CauchyRiemann₁ : (DifferentiableAt f z)
have t₂a : Complex.I * (AR 1) = Complex.I • (AR 1) := by
exact rfl
rw [← t₂a] at t₂
have t₂b : Complex.I • 1 = Complex.I := by
simp
have t₂c : AR Complex.I = Complex.I • (AR 1) := by
simp at t₂
exact t₂
let C : HasFDerivAt f (ContinuousLinearMap.restrictScalars (fderiv f z)) z := h.hasFDerivAt.restrictScalars
have t₃ : fderiv f z = ContinuousLinearMap.restrictScalars (fderiv f z) := by
exact DifferentiableAt.fderiv_restrictScalars h
rw [t₃]
@ -54,72 +51,78 @@ theorem CauchyRiemann₂ : (DifferentiableAt f z)
exact CauchyRiemann₁ h
theorem CauchyRiemann₃ : (DifferentiableAt f z)
→ lineDeriv (Complex.reCLM ∘ f) z 1 = lineDeriv (Complex.imCLM ∘ f) z Complex.I := by
→ (lineDeriv (Complex.reCLM ∘ f) z 1 = lineDeriv (Complex.imCLM ∘ f) z Complex.I)
∧ (lineDeriv (Complex.reCLM ∘ f) z Complex.I = -lineDeriv (Complex.imCLM ∘ f) z 1)
:= 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]
constructor
· rw [t₂, s₂]
rw [fderiv.comp, fderiv.comp]
simp
rw [CauchyRiemann₁ h]
rw [Complex.I_mul]
-- DifferentiableAt Complex.im (f z)
exact Complex.imCLM.differentiableAt
have u₁ : ∀ w, fderiv Complex.reCLM w = Complex.reCLM := by
exact fun w => ContinuousLinearMap.fderiv Complex.reCLM
-- DifferentiableAt f z
exact t₀₀
--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.re (f z)
exact Complex.reCLM.differentiableAt
-- DifferentiableAt f z
exact t₀₀
· have r₂ : lineDeriv (Complex.reCLM ∘ f) z Complex.I = (fderiv (Complex.reCLM ∘ f) z) Complex.I := by
apply DifferentiableAt.lineDeriv_eq_fderiv
exact t₁
have p₂ : lineDeriv (Complex.imCLM ∘ f) z 1 = (fderiv (Complex.imCLM ∘ f) z) 1 := by
apply DifferentiableAt.lineDeriv_eq_fderiv
exact s₁
rw [r₂, p₂]
rw [fderiv.comp, fderiv.comp]
simp
rw [CauchyRiemann₁ h]
rw [Complex.I_mul]
-- DifferentiableAt Complex.im (f z)
exact Complex.imCLM.differentiableAt
-- 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₀₀
-- DifferentiableAt Complex.re (f z)
exact Complex.reCLM.differentiableAt
-- DifferentiableAt f z
exact t₀₀
-- DifferentiableAt f z
exact t₀₀