Khuri-Makdisi algorithms for arithmetic in Jacobians¶
This module implements Khuri-Makdisi’s algorithms of [Khu2004].
In the implementation, we use notations close to the ones used by
Khuri-Makdisi. We describe them below for readers of the code.
Let be the base divisor of the Jacobian in Khuri-Makdisi model. So
is an effective divisor of appropriate degree depending on the model. Let
be the genus of the underlying function field. For large and medium models,
. For small model . A point of the Jacobian is a
divisor class containing a divisor of degree with an effective
divisor of degree .
Let denote the vector space with a chosen
basis, and let is a bilinear map from
defined by . The map can be represented by a
3-dimensional array as depicted below:
where , , . In the implementation, we
instead use a matrix of size . Each row of the matrix denotes a
matrix of size .
A point of the Jacobian is represented by an effective divisor . In
Khuri-Makdisi algorithms, the divisor is represented by a subspace of with fixed depending on the model. For
large and small models, and , and for medium model,
and .
The subspace is the row space of a matrix . Thus in the
implementation, the matrix represents a point of the Jacobian. The row
space of the matrix is .
The function mu_image(w_D,w_E,mu_mat_n_m,expected_dim) computes the image
of the expected dimension.
The function mu_preimage(w_E,w_F,mu_mat_n_m,expected_codim) computes the
preimage such that of the expected codimension
, which is a multiple of .