A machine-checked solution to the Jacobians challenge

29.3. RiemannRoch🔗

Jacobians.RiemannRochsource

exists_riemannRoch_divisor

Riemann–Roch (Forster Thm 16.9, Serre-dual form): a canonical divisor K with l(D) − l(K−D) = deg D + 1 − g for every D.

Proved via the Miranda Ch. VI Laurent-tail route (LaurentTail.exists_riemannRoch_divisor_unconditional): RR-I on the Mittag-Leffler tail spaces (riemannRoch_tailForm), Serre duality for the tail in the meromorphic pair frame ω = h·dg₀ (h1TailDim_eq_lDim_pairCanonical_sub, every genus — the descent input is the genus-free planar-Stokes residue theorem residueSum_pairForm_mul_eq_zero_unconditional), and l(K) = genus from the §17.4 canonical-form isomorphism (hKgenus_unconditional), with K = div (dg₀) for the nonconstant meromorphic g₀ of exists_nonconstant_meromorphic. The Čech tower — finiteness, skyscraper LES, the Riemann inequality feeding exists_nonconstant_meromorphic — is load-bearing for the tail route's pole-budget bound.

theorem exists_riemannRoch_divisor :
    ∃ K : Divisor X, ∀ D : Divisor X,
      (lDim (X := X) D : ℤ) - (lDim (X := X) (K - D) : ℤ)
        = Divisor.deg X D + 1 - (genus X : ℤ)

lDim_canonical_eq_genus

l(K) = g, from Riemann–Roch at D = 0 (and l(0) = 1).

theorem lDim_canonical_eq_genus {K : Divisor X}
    (hrr : ∀ D : Divisor X, (lDim (X := X) D : ℤ) - (lDim (X := X) (K - D) : ℤ)
      = Divisor.deg X D + 1 - (genus X : ℤ)) : lDim (X := X) K = genus X

deg_canonical

deg K = 2g − 2, from Riemann–Roch at D = K.

theorem deg_canonical {K : Divisor X}
    (hrr : ∀ D : Divisor X, (lDim (X := X) D : ℤ) - (lDim (X := X) (K - D) : ℤ)
      = Divisor.deg X D + 1 - (genus X : ℤ)) : Divisor.deg X K = 2 * (genus X : ℤ) - 2

exists_singleSimplePole_of_genus_zero_of_rr

Touch point. genus X = 0 + Riemann–Roch ⟹ a meromorphic function with a single simple pole. RR at D = P gives l(P) = 2 > 1 = l(0), so L(P)/germZero is not spanned by the constant class; a member outside that span is not germ-constant, hence (by Liouville's contrapositive germ_eq_const_of_mem_linearSystem_zero) has a pole, necessarily a *simple* pole at P — the only pole L(P) permits — and by faithfulness its order is finite everywhere. This discharges exists_singleSimplePole_of_genus_zero modulo {riemannRoch, deg_div}.

theorem exists_singleSimplePole_of_genus_zero_of_rr (hg : genus X = 0) :
    ∃ (P : X) (f : MeromorphicFunction X), f.HasSingleSimplePole P