Modular degrees oldforms

mdsage.modular_degrees_oldforms.degree_pairing(E, N)

For a modular elliptic curve E of level M and an integer N that is a multiple of M give the degree pairing on $Hom(J0(N),E) otimes mathbb QQ$ as a matrix with respect to the basis coming from the degeneracy maps.

EXAMPLES:

sage: from mdsage.modular_degrees_oldforms import *
sage: GN = Gamma0(37)
sage: SN = GN.modular_symbols().cuspidal_subspace()
sage: SE = SN.decomposition()[0]
sage: E = SE.abelian_variety()
sage: degree_pairing(E, 37*4*9)
[ 144  -96 -108   24   72   60  -18  -40   10]
[ -96  144   72  -96 -108  -40   72   60  -40]
[-108   72  144  -18  -96 -108   24   72  -18]
[  24  -96  -18  144   72   10 -108  -40   60]
[  72 -108  -96   72  144   72  -96 -108   72]
[  60  -40 -108   10   72  144  -18  -96   24]
[ -18   72   24 -108  -96  -18  144   72 -108]
[ -40   60   72  -40 -108  -96   72  144  -96]
[  10  -40  -18   60   72   24 -108  -96  144]
mdsage.modular_degrees_oldforms.degree_quadratic_form(E, N)

For a modular elliptic curve E of level M and an integer N that is a multiple of M, give the degree quadratic form on $Hom(J0(N),E) otimes mathbb QQ$ as a quadratic multivariate polynomial with respect to the basis coming from the degeneracy maps.

EXAMPLES:

sage: from mdsage.modular_degrees_oldforms import *
sage: GN = Gamma0(37)
sage: SN = GN.modular_symbols().cuspidal_subspace()
sage: SE = SN.decomposition()[0]
sage: E = SE.abelian_variety()
sage: degree_quadratic_form(E, 37*2*3)
24*x0^2 - 32*x0*x1 + 24*x1^2 - 36*x0*x2 + 24*x1*x2 + 24*x2^2 + 24*x0*x3 - 36*x1*x3 - 32*x2*x3 + 24*x3^2
mdsage.modular_degrees_oldforms.modular_symbol_elliptic_curves(N, sign=None)

INPUT:

  • N - an integer giving the conductor of the elliptic curves to be returned

  • sign (optional) - an integer that should be +/-1. Only elliptic curves where atkin lehner acts with this sign on the associated newform are returned. If no sign is given then both elliptic curves of both signs will be returned.

OUTPUT:

An iterator of all strong weil elliptic curves of conductor N. The returned curves are returned as modular abelian varieties associated to modular symbol spaces rather then elliptic curves given by a Weierstrass equation.

Examples:

sage: from mdsage.modular_degrees_oldforms import *
sage: list(modular_symbol_elliptic_curves(37))
[Abelian subvariety of dimension 1 of J0(37),
 Abelian subvariety of dimension 1 of J0(37)]

sage: list(modular_symbol_elliptic_curves(37,sign=1))
[Abelian subvariety of dimension 1 of J0(37)]
sage: list(modular_symbol_elliptic_curves(37,sign=-1))
[Abelian subvariety of dimension 1 of J0(37)]
mdsage.modular_degrees_oldforms.modular_symbol_elliptic_curves_divisors(N, sign=None)

Does the same as mdsage.modular_degrees_oldforms.modular_symbol_elliptic_curves() but then all elliptic curves of conductor strictly dividing N instead of equal to N.

Examples:

sage: from mdsage.modular_degrees_oldforms import *
sage: list(modular_symbol_elliptic_curves_divisors(210))
[Abelian variety J0(14) of dimension 1,
 Abelian variety J0(15) of dimension 1,
 Abelian variety J0(21) of dimension 1,
 Abelian subvariety of dimension 1 of J0(30),
 Abelian subvariety of dimension 1 of J0(35),
 Abelian subvariety of dimension 1 of J0(42),
 Abelian subvariety of dimension 1 of J0(70),
 Abelian subvariety of dimension 1 of J0(105)]
sage: list(modular_symbol_elliptic_curves_divisors(210, sign=1))
[]
mdsage.modular_degrees_oldforms.modular_symbol_elliptic_curves_range(N, sign=None)

Does the same as mdsage.modular_degrees_oldforms.modular_symbol_elliptic_curves() but then all elliptic curves of conductor < N instead of equal to N.

Examples:

sage: from mdsage.modular_degrees_oldforms import *
sage: list(modular_symbol_elliptic_curves_range(37))
 [Abelian variety J0(11) of dimension 1,
  Abelian variety J0(14) of dimension 1,
  Abelian variety J0(15) of dimension 1,
  Abelian variety J0(17) of dimension 1,
  Abelian variety J0(19) of dimension 1,
  Abelian variety J0(20) of dimension 1,
  Abelian variety J0(21) of dimension 1,
  Abelian variety J0(24) of dimension 1,
  Abelian subvariety of dimension 1 of J0(26),
  Abelian subvariety of dimension 1 of J0(26),
  Abelian variety J0(27) of dimension 1,
  Abelian subvariety of dimension 1 of J0(30),
  Abelian variety J0(32) of dimension 1,
  Abelian subvariety of dimension 1 of J0(33),
  Abelian subvariety of dimension 1 of J0(34),
  Abelian subvariety of dimension 1 of J0(35),
  Abelian variety J0(36) of dimension 1]
mdsage.modular_degrees_oldforms.product_isogeny_map(E, N)

For a modular elliptic curve E of level M give and an integer N such that M divides N, this computes the map $E^n \to J_0(N)$ where $n$ is the number of divisors of N/M. The $i$-th coordinate of this map is given by the degeneracy map $J_0(M) to J_0(N)$ corresponding to the $i$-th divisor of N/M.

Examples:

sage: from mdsage.modular_degrees_oldforms import *
sage: GN = Gamma0(37)
sage: SN = GN.modular_symbols().cuspidal_subspace()
sage: SE = SN.decomposition()[0]
sage: E = SE.abelian_variety()
sage: xi = product_isogeny_map(E,6*37); xi
Abelian variety morphism:
  From: Abelian subvariety of dimension 4 of J0(37) x J0(37) x J0(37) x J0(37)
  To:   Abelian variety J0(222) of dimension 35
sage: xi.kernel()[0].invariants()
[]