Update cauchyRiemann.lean

This commit is contained in:
Stefan Kebekus 2024-04-29 20:53:47 +02:00
parent 2d2a21be72
commit b2f04c1dfa
1 changed files with 12 additions and 67 deletions

View File

@ -22,74 +22,19 @@ theorem CauchyRiemann₃ : (DifferentiableAt f z)
∧ (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₁
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₁
constructor
· rw [t₂, s₂]
rw [fderiv.comp, fderiv.comp]
have ContinuousLinearMap.comp_lineDeriv : ∀ w : , ∀ l : →L[] , lineDeriv (l ∘ f) z w = l ((fderiv f z) w) := by
intro w l
rw [DifferentiableAt.lineDeriv_eq_fderiv]
rw [fderiv.comp]
simp
rw [CauchyRiemann₁ h]
rw [Complex.I_mul]
-- DifferentiableAt Complex.im (f z)
exact Complex.imCLM.differentiableAt
fun_prop
exact h.restrictScalars
apply (ContinuousLinearMap.differentiableAt l).comp
exact h.restrictScalars
-- DifferentiableAt f z
exact t₀₀
-- 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]
repeat
rw [ContinuousLinearMap.comp_lineDeriv]
rw [CauchyRiemann₁ h, Complex.I_mul]
simp
rw [CauchyRiemann₁ h]
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₀₀