Principal divisors and the divisor class group of an order system #
This file adds the next piece of the Jacobian roadmap's Layer A on top of the formal Weil
divisor group: principal divisors, the divisor class group Cl(X), and the abstract
degree-zero subgroup Pic⁰.
The geometric input is packaged as an OrderSystem: a family of ℤ-valued order-of-vanishing
homomorphisms ord x : G →+ ℤ indexed by the points X, with the finiteness condition that
each g : G has nonzero order at only finitely many points. Instantiating G with
Additive Kˣ for the multiplicative group of a function field, ord x is the order of
vanishing ord_x(f) of a rational function f at the point x, and the principal divisor of
f is the finite formal sum Σ_x ord_x(f) · [x]. The finiteness condition is exactly the
statement that a rational function has zeros and poles at only finitely many points.
From this data we build:
OrderSystem.principalDivisorandOrderSystem.principalHom, the principal divisor of a function and its packaging as a homomorphismG →+ WeilDivisor X;OrderSystem.principalSubgroup, the subgroup of principal divisors, andOrderSystem.LinearlyEquivalent, the equivalence relation "differ by a principal divisor";OrderSystem.ClassGroup, the divisor class groupWeilDivisor X ⧸ principal, with its quotient mapOrderSystem.divisorClassand the characterization of equal classes;OrderSystem.weightedDegreeClassandOrderSystem.picZero: when principal divisors have weighted degree zero (the geometric fact that a rational function has as many zeros as poles, counted with residue-field degrees on a curve over a non-algebraically-closed field, recorded here as the hypothesisIsWeightedDegreeZero), the weighted degree descends to the class group, andPic⁰is the kernel of that descended weighted degree.
This advances the Layer A roadmap item "principal divisors" and constructs the abstract
"Pic⁰ X = ker deg (as an abstract group, with the geometric degree supplied as a weight)" of
TauCetiRoadmap/JacobianChallenge/README.md. It builds only the divisor-class side Cl(X) of
the later "Cl(X) ≅ Pic X" comparison: the Picard group and the equivalence to it are not
constructed here, but are later geometric work, before the Picard functor and Picard scheme
exist. The geometric ord_x (residue-field valuations of a function field) and the proof that
a principal divisor has weighted degree zero are later geometric constructions; here both are
abstracted to the data of an OrderSystem, a weight function, and the predicate
IsWeightedDegreeZero.
No external mathematics is vendored. This reuses Tau Ceti's existing WeilDivisor API and
Mathlib's Finsupp.ofSupportFinite (to assemble a finitely supported function from
coordinatewise data) and QuotientAddGroup quotient machinery.
An order system on a type of points X with values in a group G: a family of
ℤ-valued homomorphisms ord x : G →+ ℤ, the orders of vanishing at each point, such that
every g : G vanishes to nonzero order at only finitely many points.
Instantiate G with Additive Kˣ for the multiplicative group of a function field K: then
ord x is the order of vanishing ord_x(f) of a rational function at the point x, and the
finiteness condition records that a rational function has zeros and poles at only finitely many
points. The principal divisor of f is Σ_x ord_x(f) · [x].
The order of vanishing at each point, as a homomorphism
G →+ ℤ.- finite_support (g : G) : (Function.support fun (x : X) => (self.ord x) g).Finite
Each group element has nonzero order at only finitely many points.
Instances For
The principal divisor Σ_x ord_x(g) · [x] attached to g : G.
Equations
- S.principalDivisor g = Finsupp.ofSupportFinite (fun (x : X) => (S.ord x) g) ⋯
Instances For
Principal divisors as a homomorphism G →+ WeilDivisor X.
Equations
- S.principalHom = { toFun := S.principalDivisor, map_zero' := ⋯, map_add' := ⋯ }
Instances For
The principal-divisor construction depends only on the family of order homomorphisms, not on the proof that their supports are finite. This is the transport lemma used when a geometric order system is compared with an abstractly supplied one.
The subgroup of principal divisors.
Equations
Instances For
The subgroup of principal divisors is the range of the principal-divisor homomorphism.
Two Weil divisors are linearly equivalent with respect to S when their difference is a
principal divisor. This is the equivalence relation whose quotient is the divisor class
group.
Equations
- S.LinearlyEquivalent D E = (D - E ∈ S.principalSubgroup)
Instances For
Two Weil divisors are linearly equivalent exactly when their difference is the principal
divisor of some g : G. This is the direct introduction/elimination form of
LinearlyEquivalent, exposing the witnessing function.
Linear equivalence is compatible with adding equivalent divisors on both sides.
Adding the same divisor on the right preserves linear equivalence.
Adding the same divisor on the left preserves linear equivalence.
A divisor plus a principal divisor is linearly equivalent to the original divisor.
Subtracting a principal divisor from a divisor is linearly equivalent to the original divisor.
The divisor class group Cl(X) = WeilDivisor X ⧸ (principal divisors) of an order
system S.
Equations
Instances For
The divisor class of a Weil divisor in the divisor class group.
Equations
Instances For
The divisor-class map is the canonical additive quotient projection
WeilDivisor X → Cl(X). This is the definitional equation, exposed so that downstream files can
rewrite between divisorClass and QuotientAddGroup.mk'.
Two Weil divisors have the same divisor class exactly when they are linearly equivalent, that is, when their difference is a principal divisor.
The universal property of the divisor class group: a homomorphism φ : WeilDivisor X →+ H
that sends every principal divisor to 0 descends to a homomorphism Cl(X) →+ H.
Equations
Instances For
An order system has weighted-degree-zero principal divisors for a weight w : X → ℤ when
every principal divisor has weighted degree zero.
For a smooth proper curve over a field k, the intended weight is the residue-field degree
x ↦ [κ(x) : k]; this is the geometric fact that a rational function has as many zeros as
poles, counted with residue-field degrees.
Equations
- S.IsWeightedDegreeZero w = ∀ (g : G), (TauCeti.AlgebraicGeometry.WeilDivisor.weightedDegree w) (S.principalDivisor g) = 0
Instances For
Weighted-degree-zero principal divisors are invariant under replacing an order system by one with the same order homomorphisms. In particular, an abstract contract can be discharged by the concrete geometric order system without identifying the finite-support proof fields.
When principal divisors have weighted degree zero, the weighted degree map descends to the divisor class group: linearly equivalent divisors have the same weighted degree.
Equations
Instances For
The weighted-degree-zero part of the divisor class group, the abstract Pic⁰ of the
Jacobian roadmap: the kernel of the weighted degree map on divisor classes.
Equations
Instances For
The class of a Weil divisor lies in picZero exactly when that representative has weighted
degree zero; the value is well defined because the weighted degree descends to the class.
An order system has unweighted-degree-zero principal divisors when every principal
divisor has unweighted degree zero. This is the specialization of IsWeightedDegreeZero to the
constant weight 1, appropriate for the algebraically closed/unweighted formal setting.
Equations
Instances For
The unweighted degree map on divisor classes, for the algebraically closed/unweighted
specialization: the descended degree weightedDegreeClass at the constant weight 1. For
curves over a general field, use weightedDegreeClass.