Jacobians in the Unique Hess model¶
This module implements Jacobian arithmetic based on divisor representation by
ideals, much like sage.rings.function_field.jacobian_hess.
This approach to Jacobian arithmetic implementation is attributed to Hess [Hes2002].
The Unique Hess variant implemented here is a modification due to Macri [Mac2025] of Hess’ maximally reduced divisors, but with a linear search reduction algorithm that performs better in practice when doing a sequence of many Jacobian arithmetic operations.
The Unique Hess model is the only Jacobian model implemented in Sage that uses unique representatives of divisor classes. To the best of the author’s knowledge at time of writing, this module makes SageMath the only computer algebra system that includes a model of Jacobian arithmetic that uses unique representatives of divisor classes.
Jacobian¶
To create a Jacobian in the Unique Hess model, specify 'unique_hess' model and provide a base place of degree 1.
AUTHORS:
Vincent Macri (2025-10-10): initial version
- class sage.rings.function_field.jacobian_unique_hess.Jacobian(function_field: FunctionField, base_div: FunctionFieldDivisor | FunctionFieldPlace, cache_infinite_ideals: bool = True, **kwds)[source]¶
Bases:
Jacobian_base,UniqueRepresentation- group(k_ext=None)[source]¶
Raise an error if
k_ext is not self.function_field().constant_base_field(), otherwise callJacobian_base.group().
- class sage.rings.function_field.jacobian_unique_hess.JacobianGroup(parent, function_field: FunctionField, base_div: FunctionFieldDivisor)[source]¶
Bases:
UniqueRepresentation,JacobianGroup_base- Element[source]¶
alias of
JacobianPoint
- class sage.rings.function_field.jacobian_unique_hess.JacobianGroup_finite_field(parent, function_field: FunctionField, base_div: FunctionFieldDivisor)[source]¶
Bases:
JacobianGroup,JacobianGroup_finite_field_base- Element[source]¶
alias of
JacobianPoint_finite_field
- class sage.rings.function_field.jacobian_unique_hess.JacobianPoint(parent: JacobianGroup, finite_ideal: FiniteIdeal, infinite_ideal: InfiniteIdeal)[source]¶
Bases:
JacobianPoint_baseA Jacobian point in the “Unique Hess” model. Points are represented by pairs of ideals as in the “Hess” model, but we use a different reduction algorithm that guarantees that all points have a unique representative. Unlike the other Jacobian models in Sage, elements of this class are hashable.
- divisor()[source]¶
Return the unique reduced representative of this divisor class in the Unique Hess model with respect to the base place.
EXAMPLES:
sage: P2.<x,y,z> = ProjectiveSpace(GF(29), 2) sage: C = Curve(x^3 + 5*z^3 - y^2*z, P2) sage: b = C([0,1,0]).place() sage: G = C.jacobian(model='unique_hess', base_div=b).group() sage: p = C([-1,2,1]).place() sage: D = p - b sage: pt = G.point(D) sage: pt.divisor() == D True sage: pt == D False
- effective_part()[source]¶
Return the effective part of this divisor.
EXAMPLES:
sage: P2.<x,y,z> = ProjectiveSpace(GF(29), 2) sage: C = Curve(x^3 + 5*z^3 - y^2*z, P2) sage: b = C([0,1,0]).place() sage: G = C.jacobian(model='unique_hess', base_div=b, extra_caching=False).group() sage: p = C([-1,2,1]).place() sage: pt = G.point(p - b) sage: pt.effective_part() == p True
- class sage.rings.function_field.jacobian_unique_hess.JacobianPoint_finite_field(parent: JacobianGroup, finite_ideal: FiniteIdeal, infinite_ideal: InfiniteIdeal)[source]¶
Bases:
JacobianPoint,JacobianPoint_finite_field_basePoints of Jacobians over finite fields