A machine-checked solution to the Jacobians challenge

11.7. Meromorphic.MeromorphicLiouville🔗

Jacobians.Meromorphic.MeromorphicLiouvillesource

MeromorphicFunction.HasSingleSimplePole

f has a single simple pole at P: order -1 at P and order ≥ 0 elsewhere. (Defined here, rather than in DegreeOneSphere, so that both the sphere theorems and the Riemann–Roch reduction can refer to it without a cyclic import.)

def MeromorphicFunction.HasSingleSimplePole
    (f : MeromorphicFunction X) (P : X) : Prop

MeromorphicFunction.holoRepr

The limit repair of f: at each point, the limit of f along the punctured neighborhood. Where the order of f is ≥ 0 this is a genuine value (Mathlib tendsto_nhds_of_meromorphicOrderAt_nonneg), and it discards removable-singularity junk that f.toFun may carry.

noncomputable def MeromorphicFunction.holoRepr (f : MeromorphicFunction X) (x : X) : ℂ

MeromorphicFunction.exists_holoRepr_eq_NFOn

The local repair lemma. On a small open neighborhood V of φ x₀ (with φ = chartAt x₀), the limit-repair holoRepr, read back through the chart, coincides with the normal-form representative of the pullback F = f.toFun ∘ φ.symm. Concretely: for every w ∈ V, f.holoRepr (φ.symm w) = toMeromorphicNFOn F V w.

This needs the order of f to be ≥ 0 only at x₀ (the center); at the punctured points F is analytic, so its order is automatically ≥ 0.

theorem MeromorphicFunction.exists_holoRepr_eq_NFOn (f : MeromorphicFunction X) (x₀ : X)
    (h₀ : 0 ≤ f.orderAtPoint x₀) :
    ∃ V : Set ℂ, IsOpen V ∧ (chartAt (H := ℂ) x₀) x₀ ∈ V ∧
      ∃ (_hF : MeromorphicOn (f.toFun ∘ (chartAt (H := ℂ) x₀).symm) V),
        ∀ w ∈ V, f.holoRepr ((chartAt (H := ℂ) x₀).symm w) =
          toMeromorphicNFOn (f.toFun ∘ (chartAt (H := ℂ) x₀).symm) V w

MeromorphicFunction.holoRepr_chartPullback_eventuallyEq_NFAt

Off-center, the chart pullback of holoRepr equals the normal-form representative. With NO order hypothesis at the center x₀: on the *punctured* neighborhood 𝓝[≠] (φ x₀) (φ = chartAt x₀), the limit-repair holoRepr read back through the chart agrees with the normal-form representative toMeromorphicNFAt F (φ x₀) of the pullback F = f.toFun ∘ φ.symm.

Off the center, F is genuinely analytic (MeromorphicAt.eventually_analyticAt), so f.toFun carries no junk and its punctured limit there is the analytic value F w; this equals N w since the normal form agrees with F off the center. This is the punctured-neighborhood input that the simple-pole analysis at a pole (where the center order is < 0, so exists_holoRepr_eq_NFOn does not apply) consumes.

theorem MeromorphicFunction.holoRepr_chartPullback_eventuallyEq_NFAt
    (f : MeromorphicFunction X) (x₀ : X) :
    f.holoRepr ∘ (chartAt (H := ℂ) x₀).symm =ᶠ[𝓝[≠] ((chartAt (H := ℂ) x₀) x₀)]
      toMeromorphicNFAt (f.toFun ∘ (chartAt (H := ℂ) x₀).symm) ((chartAt (H := ℂ) x₀) x₀)

MeromorphicFunction.analyticAt_holoRepr_chartPullback_of_orderNonneg

The chart pullback of holoRepr is analytic at a point of nonnegative order. This is the local (pointwise) core of mdifferentiable_holoRepr, requiring 0 ≤ orderAtPoint *only at x₀* (not globally). Read back through the chart φ = chartAt x₀, the limit-repair holoRepr ∘ φ.symm agrees near φ x₀ with the analytic normal-form representative of the pullback (exists_holoRepr_eq_NFOn), hence is AnalyticAt ℂ.

theorem MeromorphicFunction.analyticAt_holoRepr_chartPullback_of_orderNonneg
    (f : MeromorphicFunction X) {x₀ : X} (h₀ : 0 ≤ f.orderAtPoint x₀) :
    AnalyticAt ℂ (f.holoRepr ∘ (chartAt (H := ℂ) x₀).symm) ((chartAt (H := ℂ) x₀) x₀)

MeromorphicFunction.mdifferentiable_holoRepr

The limit-repair is globally holomorphic. If f has no pole (∀ x, 0 ≤ orderAtPoint x), then f.holoRepr : X → ℂ is MDifferentiable. In each chart, holoRepr read back equals the analytic normal-form representative of the pullback (exists_holoRepr_eq_NFOn), hence is analytic; the chart bridge mdifferentiableWithinAt_of_comp_extChartAt_symm lifts this to the manifold.

theorem MeromorphicFunction.mdifferentiable_holoRepr [T2Space X] [CompactSpace X]
    [ConnectedSpace X] [IsManifold 𝓘(ℂ) ω X] (f : MeromorphicFunction X)
    (hpos : ∀ x, 0 ≤ f.orderAtPoint x) :
    MDifferentiable 𝓘(ℂ) 𝓘(ℂ) f.holoRepr

MeromorphicFunction.orderAtPoint_eq_zero_of_holoRepr_const

If the limit-repair holoRepr is constant (the conclusion of Liouville on a compact connected manifold), then the order of f is 0 at every point. In each chart the pullback f.toFun ∘ φ.symm agrees off the center with the normal-form representative, which equals the constant c; the order of a constant is 0 (⊤ ↦ 0 for c = 0, else 0).

theorem MeromorphicFunction.orderAtPoint_eq_zero_of_holoRepr_const (f : MeromorphicFunction X)
    (hpos : ∀ x, 0 ≤ f.orderAtPoint x) {c : ℂ} (hconst : ∀ y, f.holoRepr y = c) (x : X) :
    f.orderAtPoint x = 0

MeromorphicFunction.exists_pole_of_nonconstant

Compact Liouville for meromorphic functions. A non-constant meromorphic function on a compact connected Riemann surface has a pole. Contrapositive: with no pole every order is ≥ 0, so the limit-repair holoRepr is globally holomorphic (mdifferentiable_holoRepr); by holomorphic Liouville on the compact connected X (MDifferentiable.exists_eq_const_of_compactSpace) it is constant, forcing every order to be 0 (orderAtPoint_eq_zero_of_holoRepr_const) — contradicting non-constancy.

theorem MeromorphicFunction.exists_pole_of_nonconstant [T2Space X] [CompactSpace X]
    [ConnectedSpace X] [IsManifold 𝓘(ℂ) ω X] (f : MeromorphicFunction X)
    (hf : ∃ x, f.orderAtPoint x ≠ 0) : ∃ x, f.orderAtPoint x < 0