Ambient Jacobian abelian variety¶
- sage.modular.abvar.abvar_ambient_jacobian.ModAbVar_ambient_jacobian(group)[source]¶
Return the ambient Jacobian attached to a given congruence subgroup.
The result is cached using a weakref. This function is called internally by modular abelian variety constructors.
INPUT:
group
– a congruence subgroup
OUTPUT: a modular abelian variety attached
EXAMPLES:
sage: import sage.modular.abvar.abvar_ambient_jacobian as abvar_ambient_jacobian sage: A = abvar_ambient_jacobian.ModAbVar_ambient_jacobian(Gamma0(11)) sage: A Abelian variety J0(11) of dimension 1 sage: B = abvar_ambient_jacobian.ModAbVar_ambient_jacobian(Gamma0(11)) sage: A is B True
>>> from sage.all import * >>> import sage.modular.abvar.abvar_ambient_jacobian as abvar_ambient_jacobian >>> A = abvar_ambient_jacobian.ModAbVar_ambient_jacobian(Gamma0(Integer(11))) >>> A Abelian variety J0(11) of dimension 1 >>> B = abvar_ambient_jacobian.ModAbVar_ambient_jacobian(Gamma0(Integer(11))) >>> A is B True
import sage.modular.abvar.abvar_ambient_jacobian as abvar_ambient_jacobian A = abvar_ambient_jacobian.ModAbVar_ambient_jacobian(Gamma0(11)) A B = abvar_ambient_jacobian.ModAbVar_ambient_jacobian(Gamma0(11)) A is B
You can get access to and/or clear the cache as follows:
sage: abvar_ambient_jacobian._cache = {} sage: B = abvar_ambient_jacobian.ModAbVar_ambient_jacobian(Gamma0(11)) sage: A is B False
>>> from sage.all import * >>> abvar_ambient_jacobian._cache = {} >>> B = abvar_ambient_jacobian.ModAbVar_ambient_jacobian(Gamma0(Integer(11))) >>> A is B False
abvar_ambient_jacobian._cache = {} B = abvar_ambient_jacobian.ModAbVar_ambient_jacobian(Gamma0(11)) A is B
- class sage.modular.abvar.abvar_ambient_jacobian.ModAbVar_ambient_jacobian_class(group)[source]¶
Bases:
ModularAbelianVariety_modsym_abstract
An ambient Jacobian modular abelian variety attached to a congruence subgroup.
- ambient_variety()[source]¶
Return the ambient modular abelian variety that contains
self
. Sinceself
is a Jacobian modular abelian variety, this is justself
.OUTPUT: abelian variety
EXAMPLES:
sage: A = J0(17) sage: A.ambient_variety() Abelian variety J0(17) of dimension 1 sage: A is A.ambient_variety() True
>>> from sage.all import * >>> A = J0(Integer(17)) >>> A.ambient_variety() Abelian variety J0(17) of dimension 1 >>> A is A.ambient_variety() True
A = J0(17) A.ambient_variety() A is A.ambient_variety()
- decomposition(simple=True, bound=None)[source]¶
Decompose this ambient Jacobian as a product of abelian subvarieties, up to isogeny.
EXAMPLES:
sage: J0(33).decomposition(simple=False) [ Abelian subvariety of dimension 2 of J0(33), Abelian subvariety of dimension 1 of J0(33) ] sage: J0(33).decomposition(simple=False)[1].is_simple() True sage: J0(33).decomposition(simple=False)[0].is_simple() False sage: J0(33).decomposition(simple=False) [ Abelian subvariety of dimension 2 of J0(33), Simple abelian subvariety 33a(None,33) of dimension 1 of J0(33) ] sage: J0(33).decomposition(simple=True) [ Simple abelian subvariety 11a(1,33) of dimension 1 of J0(33), Simple abelian subvariety 11a(3,33) of dimension 1 of J0(33), Simple abelian subvariety 33a(1,33) of dimension 1 of J0(33) ]
>>> from sage.all import * >>> J0(Integer(33)).decomposition(simple=False) [ Abelian subvariety of dimension 2 of J0(33), Abelian subvariety of dimension 1 of J0(33) ] >>> J0(Integer(33)).decomposition(simple=False)[Integer(1)].is_simple() True >>> J0(Integer(33)).decomposition(simple=False)[Integer(0)].is_simple() False >>> J0(Integer(33)).decomposition(simple=False) [ Abelian subvariety of dimension 2 of J0(33), Simple abelian subvariety 33a(None,33) of dimension 1 of J0(33) ] >>> J0(Integer(33)).decomposition(simple=True) [ Simple abelian subvariety 11a(1,33) of dimension 1 of J0(33), Simple abelian subvariety 11a(3,33) of dimension 1 of J0(33), Simple abelian subvariety 33a(1,33) of dimension 1 of J0(33) ]
J0(33).decomposition(simple=False) J0(33).decomposition(simple=False)[1].is_simple() J0(33).decomposition(simple=False)[0].is_simple() J0(33).decomposition(simple=False) J0(33).decomposition(simple=True)
- degeneracy_map(level, t=1, check=True)[source]¶
Return the \(t\)-th degeneracy map from
self
toJ(level)
. Here \(t\) must be a divisor of eitherlevel/self.level()
orself.level()/level
.INPUT:
level
– integer (multiple or divisor of level ofself
)t
– divisor of quotient of level ofself
and levelcheck
– boolean (default:True
); ifTrue
do some checks on the input
OUTPUT: a morphism
EXAMPLES:
sage: J0(11).degeneracy_map(33) Degeneracy map from Abelian variety J0(11) of dimension 1 to Abelian variety J0(33) of dimension 3 defined by [1] sage: J0(11).degeneracy_map(33).matrix() [ 0 -3 2 1 -2 0] [ 1 -2 0 1 0 -1] sage: J0(11).degeneracy_map(33,3).matrix() [-1 0 0 0 1 -2] [-1 -1 1 -1 1 0] sage: J0(33).degeneracy_map(11,1).matrix() [ 0 1] [ 0 -1] [ 1 -1] [ 0 1] [-1 1] [ 0 0] sage: J0(11).degeneracy_map(33,1).matrix() * J0(33).degeneracy_map(11,1).matrix() [4 0] [0 4]
>>> from sage.all import * >>> J0(Integer(11)).degeneracy_map(Integer(33)) Degeneracy map from Abelian variety J0(11) of dimension 1 to Abelian variety J0(33) of dimension 3 defined by [1] >>> J0(Integer(11)).degeneracy_map(Integer(33)).matrix() [ 0 -3 2 1 -2 0] [ 1 -2 0 1 0 -1] >>> J0(Integer(11)).degeneracy_map(Integer(33),Integer(3)).matrix() [-1 0 0 0 1 -2] [-1 -1 1 -1 1 0] >>> J0(Integer(33)).degeneracy_map(Integer(11),Integer(1)).matrix() [ 0 1] [ 0 -1] [ 1 -1] [ 0 1] [-1 1] [ 0 0] >>> J0(Integer(11)).degeneracy_map(Integer(33),Integer(1)).matrix() * J0(Integer(33)).degeneracy_map(Integer(11),Integer(1)).matrix() [4 0] [0 4]
J0(11).degeneracy_map(33) J0(11).degeneracy_map(33).matrix() J0(11).degeneracy_map(33,3).matrix() J0(33).degeneracy_map(11,1).matrix() J0(11).degeneracy_map(33,1).matrix() * J0(33).degeneracy_map(11,1).matrix()
- dimension()[source]¶
Return the dimension of this modular abelian variety.
EXAMPLES:
sage: J0(2007).dimension() 221 sage: J1(13).dimension() 2 sage: J1(997).dimension() 40920 sage: J0(389).dimension() 32 sage: JH(389,[4]).dimension() 64 sage: J1(389).dimension() 6112
>>> from sage.all import * >>> J0(Integer(2007)).dimension() 221 >>> J1(Integer(13)).dimension() 2 >>> J1(Integer(997)).dimension() 40920 >>> J0(Integer(389)).dimension() 32 >>> JH(Integer(389),[Integer(4)]).dimension() 64 >>> J1(Integer(389)).dimension() 6112
J0(2007).dimension() J1(13).dimension() J1(997).dimension() J0(389).dimension() JH(389,[4]).dimension() J1(389).dimension()
- group()[source]¶
Return the group that this Jacobian modular abelian variety is attached to.
EXAMPLES:
sage: J1(37).group() Congruence Subgroup Gamma1(37) sage: J0(5077).group() Congruence Subgroup Gamma0(5077) sage: J = GammaH(11,[3]).modular_abelian_variety(); J Abelian variety JH(11,[3]) of dimension 1 sage: J.group() Congruence Subgroup Gamma_H(11) with H generated by [3]
>>> from sage.all import * >>> J1(Integer(37)).group() Congruence Subgroup Gamma1(37) >>> J0(Integer(5077)).group() Congruence Subgroup Gamma0(5077) >>> J = GammaH(Integer(11),[Integer(3)]).modular_abelian_variety(); J Abelian variety JH(11,[3]) of dimension 1 >>> J.group() Congruence Subgroup Gamma_H(11) with H generated by [3]
J1(37).group() J0(5077).group() J = GammaH(11,[3]).modular_abelian_variety(); J J.group()
- groups()[source]¶
Return the tuple of congruence subgroups attached to this ambient Jacobian. This is always a tuple of length 1.
OUTPUT: tuple
EXAMPLES:
sage: J0(37).groups() (Congruence Subgroup Gamma0(37),)
>>> from sage.all import * >>> J0(Integer(37)).groups() (Congruence Subgroup Gamma0(37),)
J0(37).groups()
- newform_decomposition(names=None)[source]¶
Return the newforms of the simple subvarieties in the decomposition of
self
as a product of simple subvarieties, up to isogeny.OUTPUT: an array of newforms
EXAMPLES:
sage: J0(81).newform_decomposition('a') [q - 2*q^4 + O(q^6), q - 2*q^4 + O(q^6), q + a0*q^2 + q^4 - a0*q^5 + O(q^6)] sage: J1(19).newform_decomposition('a') [q - 2*q^3 - 2*q^4 + 3*q^5 + O(q^6), q + a1*q^2 + (-1/9*a1^5 - 1/3*a1^4 - 1/3*a1^3 + 1/3*a1^2 - a1 - 1)*q^3 + (4/9*a1^5 + 2*a1^4 + 14/3*a1^3 + 17/3*a1^2 + 6*a1 + 2)*q^4 + (-2/3*a1^5 - 11/3*a1^4 - 10*a1^3 - 14*a1^2 - 15*a1 - 9)*q^5 + O(q^6)]
>>> from sage.all import * >>> J0(Integer(81)).newform_decomposition('a') [q - 2*q^4 + O(q^6), q - 2*q^4 + O(q^6), q + a0*q^2 + q^4 - a0*q^5 + O(q^6)] >>> J1(Integer(19)).newform_decomposition('a') [q - 2*q^3 - 2*q^4 + 3*q^5 + O(q^6), q + a1*q^2 + (-1/9*a1^5 - 1/3*a1^4 - 1/3*a1^3 + 1/3*a1^2 - a1 - 1)*q^3 + (4/9*a1^5 + 2*a1^4 + 14/3*a1^3 + 17/3*a1^2 + 6*a1 + 2)*q^4 + (-2/3*a1^5 - 11/3*a1^4 - 10*a1^3 - 14*a1^2 - 15*a1 - 9)*q^5 + O(q^6)]
J0(81).newform_decomposition('a') J1(19).newform_decomposition('a')