Cuspidal Classgroup¶
A module for checking wether the torsion in a modular jacobian is generated by cusps. It returns a multiplicative upperbound on the index of the cuspidal rational group in the rational group
EXAMPLES:
sage: from mdsage import *
sage: d = rational_cuspidal_classgroup(Gamma1(23)).cardinality()
sage: upper_bound_index_cusps_in_JG_torsion(Gamma1(23),d)
1
- mdsage.cuspidal_classgroup.JG_torsion_upperbound(G, bound=60)¶
INPUT:
G - a congruence subgroup
bound (optional, default = 60) - the bound for the primes p up to which to use the hecke matrix T_p - <p> - p for bounding the torsion subgroup
OUTPUT:
A subgroup of (S_2(G) \otimes \QQ) / S_2(G) that is guaranteed to contain the rational torison subgroup, together with a subgroup generated by the rational cusps. The subgroup is given as a subgroup of S_2(G)/NS_2(G) for a suitable integer N
EXAMPLES:
sage: from mdsage import * sage: d = rational_cuspidal_classgroup(Gamma1(23)).cardinality() sage: upper_bound_index_cusps_in_JG_torsion(Gamma1(23),d) 1
- mdsage.cuspidal_classgroup.cuspidal_integral_structure(M)¶
Returns the integral structure of a modular symbols space.
- mdsage.cuspidal_classgroup.cuspidal_rational_subgroup_mod_rational_cuspidal_subgroup(G)¶
On input a congruence subgroup G that contains Gamma1(N) checks whether there are cuspsums that are not equivalent to a cuspsum defined over \QQ but that are equivalent to a divisor defined over \QQ.
INPUT:
G - a congruence subgroup
OUTPUT:
the invariants of the cuspidal rational subgroup divided out by the rational cuspidal subgroup
EXAMPLES:
sage: from mdsage import * sage: cuspidal_rational_subgroup_mod_rational_cuspidal_subgroup(Gamma1(26)) ()
- mdsage.cuspidal_classgroup.intersection(self, other)¶
Returns the intersection of two quotient modules self = V1/W and other V2/W V1 and V2 should be submodulus of the same ambient module.
EXAMPLES:
sage: from mdsage import * sage: W = (ZZ^3).scale(100) sage: V1 = (ZZ^3).span([[5, 5, 0], [0, 10, 20], [0, 0, 50]]) + W sage: V2 = (ZZ^3).span([[5, 0, 0], [0, 25, 50]]) + W sage: V1/W;V2/W Finitely generated module V/W over Integer Ring with invariants (2, 10, 20) Finitely generated module V/W over Integer Ring with invariants (4, 20) sage: intersection(V1/W,V2/W) Finitely generated module V/W over Integer Ring with invariants (2, 4)
- mdsage.cuspidal_classgroup.kill_torsion_coprime_to_q(q, S)¶
This is with respect to the Xmu model
- mdsage.cuspidal_classgroup.upper_bound_index_cusps_in_JG_torsion(G, d, bound=60)¶
INPUT:
G - a congruence subgroup
d - integer, the size of the rational cuspidal subgroup
bound (optional, default = 60) - the bound for the primes p up to which to use the hecke matrix T_p - <p> - p for bounding the torsion subgroup
OUTPUT:
an integer i such that (\#J_G(\QQ)_{tors})/d is a divisor of i.
EXAMPLES:
sage: from mdsage import * sage: d = rational_cuspidal_classgroup(Gamma1(23)).cardinality() sage: upper_bound_index_cusps_in_JG_torsion(Gamma1(23),d) 1