Module: sage.modular.modsym.relation_matrix
Relation matrices for ambient modular symbols spaces.
Module-level Functions
syms, mod, field, weight, sparse) |
Compute a matrix whose echelon form gives the quotient by 3-term T relations.
Input:
syms, sign, field, weight, [sparse=None]) |
Compute the presentation for self, as a quotient of Manin symbols modulo relations.
Input:
ALGORITHM:
There are about n such rows. The number of nonzero entries per row is at most 3*(k-1). Note that we must include rows for *all* i, since even if
syms, relation_matrix, mod, field, sparse) |
Compute echelon form of 3-term relation matrix, and read off each generator in terms of basis.
Input:
list - integers i, such that the Manin symbols x_i are a basis.
syms, sign) |
Compute quotient of Manin symbols by the I relations.
Input:
WARNING: We quotient by the involution eta((u,v)) = (-u,v), which has the opposite sign as the involution in Merel's Springer LNM 1585 paper! Thus our +1 eigenspace is his -1 eigenspace, etc. We do this for consistency with MAGMA.
syms) |
Compute quotient of Manin symbols by the S relations.
Here S is the 2x2 matrix [0, -1; 1, 0].
Input:
sage: from sage.modular.modsym.manin_symbols import ManinSymbolList_gamma0 sage: from sage.modular.modsym.relation_matrix import modS_relations
sage: syms = ManinSymbolList_gamma0(2, 4); syms Manin Symbol List of weight 4 for Gamma0(2) sage: modS_relations(syms) set([((3, -1), (4, 1)), ((5, -1), (5, 1)), ((1, 1), (6, 1)), ((0, 1), (7, 1)), ((3, 1), (4, -1)), ((2, 1), (8, 1))])
sage: syms = ManinSymbolList_gamma0(7, 2); syms Manin Symbol List of weight 2 for Gamma0(7) sage: modS_relations(syms) set([((3, 1), (4, 1)), ((2, 1), (7, 1)), ((5, 1), (6, 1)), ((0, 1), (1, 1))])
Next we do an example with Gamma1:
sage: from sage.modular.modsym.manin_symbols import ManinSymbolList_gamma1 sage: syms = ManinSymbolList_gamma1(3,2); syms Manin Symbol List of weight 2 for Gamma1(3) sage: modS_relations(syms) set([((3, 1), (6, 1)), ((0, 1), (5, 1)), ((0, 1), (2, 1)), ((3, 1), (4, 1)), ((6, 1), (7, 1)), ((1, 1), (2, 1)), ((1, 1), (5, 1)), ((4, 1), (7, 1))])
syms, sign, field, weight, sparse) |
rels, n, F) |
Performs Sparse Gauss elimination on a matrix all of whose columns have at most 2 nonzero entries. We use an obvious algorithm, whichs runs fast enough. (Typically making the list of relations takes more time than computing this quotient.) This algorithm is more subtle than just ``identify symbols in pairs'', since complicated relations can cause generators to surprisingly equal 0.
Input:
We quotient out by the relations
to get
sage: v = [((int(0),3), (int(1),-1)), ((int(1),1), (int(3),1)), ((int(2),1),(int(3),1)), ((int(4),1),(int(5),-1))] sage: rels = set(v) sage: n = 6 sage: from sage.modular.modsym.relation_matrix import sparse_2term_quotient sage: sparse_2term_quotient(rels, n, QQ) [(3, -1/3), (3, -1), (3, -1), (3, 1), (5, 1), (5, 1)]
See About this document... for information on suggesting changes.