A machine-checked solution to the Jacobians challenge

20.5. CanonicalForms.CanonicalFormIso🔗

Jacobians.CanonicalForms.CanonicalFormIsosource

lSysModule

The junk-free linear-system module L(D) (= H⁰(X, 𝒪_D)): the linear system with the toFun-germ junk quotiented out, lDim D = finrank ℂ (lSysModule D). (A local copy of the abbreviation in SerreDualityPairing, so this §17.4 layer stays independent of the downstream exists_serreDualityData.)

abbrev lSysModule (D : Divisor X) : Type _

toFun_eq_zero_of_formCoeff_zero

A covector in the (1-dim) cotangent fibre that kills the spanning tangent vector symmL 1 of the trivialization at x is the zero covector — because every tangent vector is a scalar multiple of symmL 1 (mirror of the argument in FormCoeff.exists_localRep_self_ne_zero).

theorem toFun_eq_zero_of_formCoeff_zero (α : MeromorphicOneForm X) {x y : X}
    (hy : y ∈ (trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x).baseSet)
    (h : α.toFun y ((trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x).symmL ℂ y 1) = 0) :
    α.toFun y = 0

formOrderW_eq_top_iff

Intrinsic vanishing characterization. formOrderW α x = ⊤ (the form's germ vanishes at x) iff the *section* α.toFun vanishes on a punctured neighbourhood of x. No chart-coefficient change-of-variables — the chart coefficient is α.toFun paired with the spanning tangent vector.

theorem formOrderW_eq_top_iff (α : MeromorphicOneForm X) (x : X) :
    α.formOrderW x = ⊤ ↔ ∀ᶠ y in 𝓝[≠] x, α.toFun y = 0

formOrderW_ne_top_iff

formOrderW α x ≠ ⊤ (the form's germ is nonzero) iff the section α.toFun is eventually nonzero on a punctured neighbourhood of x.

theorem formOrderW_ne_top_iff (α : MeromorphicOneForm X) (x : X) :
    α.formOrderW x ≠ ⊤ ↔ ∀ᶠ y in 𝓝[≠] x, α.toFun y ≠ 0

formOrderW_ne_top_of_exists

Form identity theorem. If the germ of α is nonzero (formOrderW ≠ ⊤) at even one point, it is nonzero at *every* point. The set {x | formOrderW α x = ⊤} and its complement are both open (via the two intrinsic characterizations above), so on the connected X it is empty. Mirror of MeromorphicFunction.orderW_ne_top_of_exists.

theorem formOrderW_ne_top_of_exists (α : MeromorphicOneForm X)
    (h₀ : ∃ x₀, α.formOrderW x₀ ≠ ⊤) (x : X) : α.formOrderW x ≠ ⊤

CanonicalForm17Data

[ISOLATED ANALYTIC INPUT]. The canonical-form datum of Forster §17.4: a nonzero meromorphic 1-form ω₀ together with its canonical divisor K = div ω₀.

The two fields encode ω₀ ≠ 0 (nontrivial) and K = div ω₀ (order_eq, i.e. the divisor's coefficients are the form's orders). Both are TRUE for ω₀ = df of a nonconstant meromorphic function f (which exists by Riemann–Roch — exists_nonconstant_meromorphic); the finite support of K is the 1-form analog of MeromorphicFunction.div's local finiteness (Jacobians.Abel.orderAtPoint_isolated_at). The remaining §17.4 content built on this datum is purely algebraic.

structure CanonicalForm17Data (X : Type*) [TopologicalSpace X] [T2Space X] [CompactSpace X]
    [ConnectedSpace X] [Nonempty X] [ChartedSpace ℂ X] [IsManifold 𝓘(ℂ) ω X] where

formOrderW_ω₀_ne_top

ω₀'s germ is nonzero at every point (the form identity theorem applied to nontrivial).

theorem formOrderW_ω₀_ne_top (x : X) : data.ω₀.formOrderW x ≠ ⊤

ω₀_eventually_ne_zero

ω₀.toFun is eventually nonzero on a punctured neighbourhood of every point (so the covector ratio α/ω₀ is well-defined as a meromorphic function).

theorem ω₀_eventually_ne_zero (x : X) : ∀ᶠ y in 𝓝[≠] x, data.ω₀.toFun y ≠ 0

covector_ratio_eq

Covector ratio is test-vector-independent. For covectors a b : TangentSpace 𝓘(ℂ) y →L[ℂ] ℂ, the trivialization e = trivializationAt _ _ x with y ∈ e.baseSet, and any v, the ratio a v / b v equals the ratio on the frame vector a (e.symmL 1) / b (e.symmL 1) (the cotangent fibre being 1-dim, every v is a scalar multiple of e.symmL 1, and the scalar cancels).

theorem covector_ratio_eq {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
    [IsManifold 𝓘(ℂ) ω X] {x y : X} (a b : TangentSpace 𝓘(ℂ) (M := X) y →L[ℂ] ℂ)
    (hy : y ∈ (trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x).baseSet)
    (v : TangentSpace 𝓘(ℂ) (M := X) y) (hbv0 : b v ≠ 0) :
    a v / b v = a ((trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x).symmL ℂ y 1)
      / b ((trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x).symmL ℂ y 1)

apply_symmL_ne_zero_of_ne_zero

A nonzero covector on the (1-dim) cotangent fibre is nonzero on the frame vector symmL 1 (contrapositive of MeromorphicOneForm.toFun_eq_zero_of_formCoeff_zero).

theorem apply_symmL_ne_zero_of_ne_zero {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
    [IsManifold 𝓘(ℂ) ω X] {x y : X}
    (a : TangentSpace 𝓘(ℂ) (M := X) y →L[ℂ] ℂ) (ha : a ≠ 0)
    (hy : y ∈ (trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x).baseSet) :
    a ((trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x).symmL ℂ y 1) ≠ 0

meroFormDiv

The division α/ω₀ as a meromorphic function. Pointwise the intrinsic covector ratio (α/ω₀)(y) := α y v / ω₀ y v (test vector v = symmL 1 in y's own trivialization). It is chart-independent (covector_ratio_eq), with chart coefficient formCoeff α / formCoeff ω₀, hence meromorphic. This is the surjectivity witness of Forster §17.4: α = (α/ω₀)·ω₀.

noncomputable def meroFormDiv (α : MeromorphicOneForm X) : MeromorphicFunction X where

meroFormDiv_comp_chart_eq

The chart pullback of α/ω₀ agrees, on a punctured neighbourhood of chart x x, with the quotient formCoeff α x / formCoeff ω₀ x (the covector-ratio identity of the meromorphic field, extracted for reuse in the order computation).

theorem meroFormDiv_comp_chart_eq (α : MeromorphicOneForm X) (x : X) :
    (data.meroFormDiv α).toFun ∘ (chartAt ℂ x).symm
      =ᶠ[𝓝[≠] ((chartAt ℂ x) x)] formCoeff α.toFun x / formCoeff data.ω₀.toFun x

meroFormDiv_orderW

Order subtractivity of α/ω₀ (Forster §17.4 bookkeeping): orderW (α/ω₀) x = formOrderW α x − formOrderW ω₀ x = formOrderW α x − (K x). From meroFormDiv\_comp\_chart\_eq + meromorphicOrderAt\_div + order\_eq.

theorem meroFormDiv_orderW (α : MeromorphicOneForm X) (x : X) :
    (data.meroFormDiv α).orderW x = α.formOrderW x - (data.K x : WithTop ℤ)

covector_ext_symmL

Covector extensionality on the frame vector. Two covectors on the (1-dim) cotangent fibre at y are equal iff they agree on the spanning frame vector symmL 1 of any trivialization.

theorem covector_ext_symmL {X : Type*} [TopologicalSpace X] [ChartedSpace ℂ X]
    [IsManifold 𝓘(ℂ) ω X] {x y : X} (a b : TangentSpace 𝓘(ℂ) (M := X) y →L[ℂ] ℂ)
    (hy : y ∈ (trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x).baseSet)
    (h : a ((trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x).symmL ℂ y 1)
       = b ((trivializationAt ℂ (TangentSpace 𝓘(ℂ) (M := X)) x).symmL ℂ y 1)) :
    a = b

meroFormSMul_meroFormDiv_apply

The reconstruction identity (α/ω₀)·ω₀ = α where ω₀ ≠ 0. At a point y with ω₀.toFun y ≠ 0, the covector α.toFun y is the scalar (α/ω₀)(y) times ω₀.toFun y (covectors are proportional on the 1-dim fibre), so meroFormSMul (α/ω₀) ω₀ agrees with α there.

theorem meroFormSMul_meroFormDiv_apply (α : MeromorphicOneForm X) {y : X}
    (hy : data.ω₀.toFun y ≠ 0) :
    (meroFormSMul (data.meroFormDiv α) data.ω₀).toFun y = α.toFun y

formOrderW_meroFormSMul_meroFormDiv_sub_top

(α/ω₀)·ω₀ and α have the same class in omegaDModule D: their difference is germ-zero everywhere (they agree on a punctured neighbourhood of every point, where ω₀ ≠ 0).

theorem formOrderW_meroFormSMul_meroFormDiv_sub_top (α : MeromorphicOneForm X) (x : X) :
    (meroFormSMul (data.meroFormDiv α) data.ω₀ - α).formOrderW x = ⊤

formOrderW_meroFormSMul_ω₀

Order law for meroFormSMul · ω₀ (Forster §17.4): formOrderW (f·ω₀) x = orderW f x + (K x) (order additivity formOrderW_meroFormSMul + K = div ω₀).

theorem formOrderW_meroFormSMul_ω₀ (f : MeromorphicFunction X) (x : X) :
    (meroFormSMul f data.ω₀).formOrderW x = f.orderW x + (data.K x : WithTop ℤ)

meroFormSMul_ω₀_mem_omegaD

L(D+K)·ω₀ ⊆ Ω_D (Forster §17.4 well-definedness): if f ∈ L(D+K) then f·ω₀ ∈ Ω_D. Orders add: formOrderW (f·ω₀) = orderW f + K ≥ −(D+K) + K = −D.

theorem meroFormSMul_ω₀_mem_omegaD {D : Divisor X} {f : MeromorphicFunction X}
    (hf : f ∈ linearSystem (X := X) (D + data.K)) :
    meroFormSMul f data.ω₀ ∈ omegaD (X := X) D

omega17Map

The §17.4 map on representatives L(D+K) → omegaDModule D, f ↦ [f·ω₀] (multiply by ω₀, land in Ω_D by meroFormSMul_ω₀_mem_omegaD, project to the junk-free quotient). ℂ-linear.

noncomputable def omega17Map (D : Divisor X) :
    ↥(linearSystem (X := X) (D + data.K)) →ₗ[ℂ] omegaDModule (X := X) D where

omega17Map_mk

@[simp] theorem omega17Map_mk (D : Divisor X) (f : ↥(linearSystem (X := X) (D + data.K))) :
    data.omega17Map D f =
      Submodule.Quotient.mk ⟨meroFormSMul f.1 data.ω₀, data.meroFormSMul_ω₀_mem_omegaD f.2⟩

meroFormSMul_ω₀_formGermZero_iff

f·ω₀ is germ-zero iff f is germ-zero (multiplication by ω₀ ≠ 0 preserves and reflects the germ-junk): formOrderW (f·ω₀) x = orderW f x + K x, and K x ≠ ⊤, so = ⊤ ↔ orderW f x = ⊤.

theorem meroFormSMul_ω₀_formGermZero_iff (f : MeromorphicFunction X) :
    meroFormSMul f data.ω₀ ∈ formGermZeroSubmodule (X := X) ↔ f ∈ germZeroSubmodule (X := X)

ker_omega17Map

The §17.4 map has kernel exactly the germ-junk. ker (omega17Map D) = germZeroSubmodule.submoduleOf. ([f·ω₀] = 0 ↔ f·ω₀ germ-zero ↔ f germ-zero, by meroFormSMul_ω₀_formGermZero_iff.)

theorem ker_omega17Map (D : Divisor X) :
    LinearMap.ker (data.omega17Map D)
      = (germZeroSubmodule (X := X)).submoduleOf (linearSystem (X := X) (D + data.K))

meroFormDiv_mem_linearSystem

α/ω₀ ∈ L(D+K) for α ∈ Ω_D (the surjectivity preimage of §17.4): orders subtract, orderW (α/ω₀) x = formOrderW α x − K x ≥ −D − K = −(D+K).

theorem meroFormDiv_mem_linearSystem {D : Divisor X} {α : MeromorphicOneForm X}
    (hα : α ∈ omegaD (X := X) D) :
    data.meroFormDiv α ∈ linearSystem (X := X) (D + data.K)

omega17Map_surjective

Forster §17.4 surjectivity. omega17Map D is surjective: every class [α] ∈ omegaDModule D is the image of [α/ω₀] (with α/ω₀ ∈ L(D+K)), since (α/ω₀)·ω₀ and α have the same class.

theorem omega17Map_surjective (D : Divisor X) : Function.Surjective (data.omega17Map D)

omega17

The §17.4 map descended to lSysModule (D+K) (the junk-free domain), via liftQ using germZero.submoduleOf ≤ ker (omega17Map D) (in fact equality, ker_omega17Map).

noncomputable def omega17 (D : Divisor X) :
    lSysModule (X := X) (D + data.K) →ₗ[ℂ] omegaDModule (X := X) D

omega17_mk

@[simp] theorem omega17_mk (D : Divisor X) (f : ↥(linearSystem (X := X) (D + data.K))) :
    data.omega17 D (Submodule.Quotient.mk f) = data.omega17Map D f

omega17_injective

omega17 D is injective (Forster §17.4 injectivity): its kernel is because ker (omega17Map D) = germZeroSubmodule.submoduleOf (the submodule we quotient by).

theorem omega17_injective (D : Divisor X) : Function.Injective (data.omega17 D)

omega17_surjective

omega17 D is surjective (Forster §17.4 surjectivity), lifted from omega17Map_surjective.

theorem omega17_surjective (D : Divisor X) : Function.Surjective (data.omega17 D)

omega17Equiv

Forster §17.4 — ω₀· : 𝒪_{D+K} ≅ Ω_D. The multiplication-by-ω₀ isomorphism lSysModule (D + K) ≃ₗ[ℂ] omegaDModule D for every divisor D. Injective (mult by ω₀ ≠ 0, kernel = germ-junk) and surjective (the division α/ω₀).

noncomputable def omega17Equiv (D : Divisor X) :
    lSysModule (X := X) (D + data.K) ≃ₗ[ℂ] omegaDModule (X := X) D

lDim_add_K_eq_omegaDim

Forster §17.4 as a dimension equality: lDim (D + K) = omegaDim D (the iso 𝒪_{D+K} ≅ Ω_D preserves finrank).

theorem lDim_add_K_eq_omegaDim (D : Divisor X) :
    lDim (X := X) (D + data.K) = omegaDim (X := X) D

lDim_K_eq_omegaDim_zero

lDim K = omegaDim 0 (Forster §17.4 at D = 0, the iso 𝒪_K ≅ Ω_0). A direct corollary of lDim_add_K_eq_omegaDim at D = 0 (0 + K = K).

theorem lDim_K_eq_omegaDim_zero : lDim (X := X) data.K = omegaDim (X := X) 0

hKgenus

hKgenuslDim K = genus X (Forster §17.4 at D = 0). Chains the unconditional lDim K = omegaDim 0 with omegaDim 0 = genus X (the Ω_D system's omegaDim_zero_eq_genus_of_le). The two hypotheses are exactly the isolated removable-singularity inputs: finiteness of Ω_0 and the reverse bound omegaDim 0 ≤ genus X (an order-≥ 0 meromorphic 1-form is holomorphic modulo germ-junk). This is the SerreDualityData.hKgenus field.

theorem hKgenus [FiniteDimensional ℂ (omegaDModule (X := X) 0)]
    (hle : omegaDim (X := X) 0 ≤ genus X) :
    lDim (X := X) data.K = genus X