Files
aristotle/Aristotle/Basic.lean
Stefan Kebekus c308fc2403
Some checks failed
Lean Action CI / build (push) Has been cancelled
Update Basic.lean
2025-12-02 16:45:26 +01:00

61 lines
2.6 KiB
Lean4
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Mathlib.Analysis.Meromorphic.Basic
import Mathlib.Analysis.Calculus.Deriv.Mul
import Mathlib.Analysis.Calculus.Deriv.ZPow
import Mathlib.Analysis.Calculus.Deriv.Shift
open MeromorphicOn Real Set Classical Topology
@[simp]
theorem eventually_nhdsNE_eventually_nhds_iff_eventually_nhdsNE
{α : Type*} [TopologicalSpace α] [T1Space α] {a : α} {p : α Prop} :
( y in 𝓝[] a, x in 𝓝 y, p x) x in 𝓝[] a, p x := by
nth_rw 2 [ eventually_eventually_nhdsWithin]
constructor
· intro h
filter_upwards [h] with _ hy
exact eventually_nhdsWithin_of_eventually_nhds hy
· intro h
filter_upwards [h, eventually_nhdsWithin_of_forall fun _ a a] with _ _ _
simp_all [IsOpen.nhdsWithin_eq]
theorem Filter.EventuallyEq.nhdsNE_deriv
{𝕜 : Type u} [NontriviallyNormedField 𝕜]
{F : Type v} [NormedAddCommGroup F] [NormedSpace 𝕜 F] {f f₁ : 𝕜 F} {x : 𝕜}
(h : f₁ =[𝓝[] x] f) :
deriv f₁ =[𝓝[] x] deriv f := by
rw [Filter.EventuallyEq, eventually_nhdsNE_eventually_nhds_iff_eventually_nhdsNE] at *
filter_upwards [h] with y hy
apply Filter.EventuallyEq.deriv hy
variable
{𝕜 : Type*} [NontriviallyNormedField 𝕜]
{E : Type*} [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace E]
{U : Set 𝕜} {f g : 𝕜 E} {a : WithTop E} {a₀ : E}
@[fun_prop]
theorem AnalyticAt.deriv₁
{𝕜 : Type u} [NontriviallyNormedField 𝕜]
{F : Type v} [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F]
{f : 𝕜 F} {x : 𝕜}
(h : AnalyticAt 𝕜 f x) :
AnalyticAt 𝕜 (deriv f) x := by
obtain r, hr, h := h.exists_ball_analyticOnNhd
exact h.deriv x (by simp [hr])
/-- Derivatives of meromorphic functions are meromorphic. -/
@[fun_prop]
theorem meromorphicAt_deriv {f : 𝕜 E} {x : 𝕜} (h : MeromorphicAt f x) :
MeromorphicAt (deriv f) x := by
rw [MeromorphicAt.iff_eventuallyEq_zpow_smul_analyticAt] at h
obtain n, g, h₁g, h₂g := h
have : deriv (fun z (z - x) ^ n g z)
=[𝓝[] x] fun z (n * (z - x) ^ (n - 1)) g z + (z - x) ^ n deriv g z := by
filter_upwards [eventually_nhdsWithin_of_eventually_nhds h₁g.eventually_analyticAt,
eventually_nhdsWithin_of_forall fun _ a a] with z₀ h₁ h₂
rw [deriv_smul (DifferentiableAt.zpow (by fun_prop) (by simp_all [sub_ne_zero_of_ne h₂])) (by fun_prop),
add_comm, deriv_comp_sub_const (f := (· ^ n))]
aesop
rw [MeromorphicAt.meromorphicAt_congr (Filter.EventuallyEq.nhdsNE_deriv h₂g),
MeromorphicAt.meromorphicAt_congr this]
fun_prop