Torsion points on modular abelian varieties

AUTHORS:

  • William Stein (2007-03)

  • Peter Bruin (2014-12): move TorsionPoint to a separate file

class sage.modular.abvar.torsion_point.TorsionPoint(parent, element, check=True)[source]

Bases: ModuleElement

An element of a finite subgroup of a modular abelian variety.

INPUT:

  • parent – a finite subgroup of a modular abelian variety

  • element – a \(\QQ\)-vector space element that represents this element in terms of the ambient rational homology

  • check – boolean (default: True); whether to check that element is in the appropriate vector space

EXAMPLES:

The following calls the TorsionPoint constructor implicitly:

sage: J = J0(11)
sage: G = J.finite_subgroup([[1/3,0], [0,1/5]]); G
Finite subgroup with invariants [15] over QQbar of Abelian variety J0(11) of dimension 1
sage: type(G.0)
<class 'sage.modular.abvar.finite_subgroup.FiniteSubgroup_lattice_with_category.element_class'>
>>> from sage.all import *
>>> J = J0(Integer(11))
>>> G = J.finite_subgroup([[Integer(1)/Integer(3),Integer(0)], [Integer(0),Integer(1)/Integer(5)]]); G
Finite subgroup with invariants [15] over QQbar of Abelian variety J0(11) of dimension 1
>>> type(G.gen(0))
<class 'sage.modular.abvar.finite_subgroup.FiniteSubgroup_lattice_with_category.element_class'>
J = J0(11)
G = J.finite_subgroup([[1/3,0], [0,1/5]]); G
type(G.0)
additive_order()[source]

Return the additive order of self.

EXAMPLES:

sage: J = J0(11); G = J.finite_subgroup([[1/3,0], [0,1/5]])
sage: G.0.additive_order()
3
sage: G.1.additive_order()
5
sage: (G.0 + G.1).additive_order()
15
sage: (3*G.0).additive_order()
1
>>> from sage.all import *
>>> J = J0(Integer(11)); G = J.finite_subgroup([[Integer(1)/Integer(3),Integer(0)], [Integer(0),Integer(1)/Integer(5)]])
>>> G.gen(0).additive_order()
3
>>> G.gen(1).additive_order()
5
>>> (G.gen(0) + G.gen(1)).additive_order()
15
>>> (Integer(3)*G.gen(0)).additive_order()
1
J = J0(11); G = J.finite_subgroup([[1/3,0], [0,1/5]])
G.0.additive_order()
G.1.additive_order()
(G.0 + G.1).additive_order()
(3*G.0).additive_order()
element()[source]

Return a vector over \(\QQ\) defining self.

OUTPUT:

  • A vector in the rational homology of the ambient modular Jacobian variety.

EXAMPLES:

We create some elements of \(J_0(11)\):

sage: J = J0(11)
sage: G = J.finite_subgroup([[1/3,0], [0,1/5]]); G
Finite subgroup with invariants [15] over QQbar of
 Abelian variety J0(11) of dimension 1
sage: G.0.element()
(1/3, 0)
>>> from sage.all import *
>>> J = J0(Integer(11))
>>> G = J.finite_subgroup([[Integer(1)/Integer(3),Integer(0)], [Integer(0),Integer(1)/Integer(5)]]); G
Finite subgroup with invariants [15] over QQbar of
 Abelian variety J0(11) of dimension 1
>>> G.gen(0).element()
(1/3, 0)
J = J0(11)
G = J.finite_subgroup([[1/3,0], [0,1/5]]); G
G.0.element()

The underlying element is a vector over the rational numbers:

sage: v = (G.0-G.1).element(); v
(1/3, -1/5)
sage: type(v)
<class 'sage.modules.vector_rational_dense.Vector_rational_dense'>
>>> from sage.all import *
>>> v = (G.gen(0)-G.gen(1)).element(); v
(1/3, -1/5)
>>> type(v)
<class 'sage.modules.vector_rational_dense.Vector_rational_dense'>
v = (G.0-G.1).element(); v
type(v)