Auxiliary functions

Abelian variety with theta structure

Additional tools.

AUTHORS:

  • Anna Somoza (2020-22): initial implementation

avisogenies_sage.tools.rangeS(n, S)
avisogenies_sage.tools.reduce_sym(x)

Returns the lexicographic minimum among x and -x for x an element in Zmod(n)g.

EXAMPLES:

sage: D = Zmod(10)^4
sage: el = D([6, 6, 6, 3])
sage: from avisogenies_sage.tools import reduce_sym
sage: reduce_sym(el)
(4, 4, 4, 7)
avisogenies_sage.tools.reduce_twotorsion(x)

Returns elements y in Zmod(2n)g, t Zmod(2)g such that x = y + t and y is the lexicographic minimum of the elements in the class of x in Zmod(2n)g / Zmod(2)g with the usual inclusion of Zmod(2) into Zmod(2n).

EXAMPLES:

sage: D = Zmod(10)^4
sage: el = D([9, 2, 0, 8])
sage: from avisogenies_sage.tools import reduce_twotorsion
sage: reduce_twotorsion(el)
((4, 2, 0, 3), (1, 0, 0, 1))
avisogenies_sage.tools.reduce_symtwotorsion(x)

Returns elements y in Zmod(2n)g, t Zmod(2)g such that y is the lexicographic minimum among the elements in the classes of x and -x in Zmod(2n)g / Zmod(2)g with the usual inclusion of Zmod(2) into Zmod(2n), and t is such that y + t is either x or -x.

EXAMPLES:

sage: D = Zmod(10)^4
sage: el = D([8, 1, 5, 3])
sage: from avisogenies_sage.tools import reduce_symtwotorsion
sage: reduce_symtwotorsion(el)
((2, 4, 0, 2), (0, 1, 1, 1))
avisogenies_sage.tools.reduce_symcouple(x, y)

Returns the lexicographic minimum of the symmetrical reduction of two elements x, y in Zmod(n)g.

EXAMPLES:

sage: D = Zmod(10)^4
sage: el1 = D([4, 0, 5, 1]); el2 = D([9, 4, 6, 9])
sage: from avisogenies_sage.tools import reduce_symcouple
sage: reduce_symcouple(el1, el2)
((1, 6, 4, 1), (4, 0, 5, 1))
avisogenies_sage.tools.reduce_twotorsion_couple(x, y)

Given two elements x, y in Zmod(2n)g, returns elements r, s in Zmod(2n)g, t in Zmod(2)g, such that r is the lexicographic minimum among the elements in the classes of x and y in Zmod(2n)g / Zmod(2)g with the usual inclusion of Zmod(2) into Zmod(2n), s satisfies r + s = x + y and t is such that r + t is either x or y.

EXAMPLES:

sage: D = Zmod(10)^4
sage: el1 = D([8, 1, 8, 0]); el2 = D([5, 8, 4, 5])
sage: from avisogenies_sage.tools import reduce_twotorsion_couple
sage: reduce_twotorsion_couple(el1, el2)
((0, 3, 4, 0), (3, 6, 8, 5), (1, 1, 0, 1))
avisogenies_sage.tools.reduce_symtwotorsion_couple(x, y)

Given two elements x, y in Zmod(2n)g, returns elements r, s in Zmod(2n)g, t in Zmod(2)g, such that r is the lexicographic minimum among the elements in the classes of x, -x, y and -y in Zmod(2n)g / Zmod(2)g with the usual inclusion of Zmod(2) into Zmod(2n), s satisfies r + s = ± x ± y and t is such that r + t is either x, -x, y or -y.

Todo

Is s minimal in any sense among all the ones that satisfy that condition?

EXAMPLES:

sage: D = Zmod(10)^4
sage: el1 = D([0, 7, 9, 1]); el2 = D([3, 5, 8, 8])
sage: from avisogenies_sage.tools import reduce_symtwotorsion_couple
sage: reduce_symtwotorsion_couple(el1, el2)
((0, 2, 4, 1), (3, 0, 3, 8), (0, 1, 1, 0))
avisogenies_sage.tools.get_dual_quadruplet(x, y, u, v)

Todo

add minimal docstring. Twotorsion elements should be returned as elements in the twotorsion.

avisogenies_sage.tools.eval_car(chi, t)

Todo

add minimal docstring.

avisogenies_sage.tools.evaluate_formal_points(w)

Todo

add minimal docstring.

avisogenies_sage.tools.idx(c, n)

Return the integer index that corresponds to a given characteristic in D.

avisogenies_sage.tools.create_conversions(n, g)
avisogenies_sage.tools.create_indexing(n, g, twotorsion=True)

Hyperelliptic curves

Auxiliary functions to obtain different isomorphic models of hyperelliptic curves.

AUTHORS:

  • Anna Somoza (2021-22): initial implementation

avisogenies_sage.aux_hyper.remove_h(phi)
avisogenies_sage.aux_hyper.transformation(C, a, b, c, d, e, skip=None)
avisogenies_sage.aux_hyper.rosenhain_model(phi)