Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: mslattice Section: modular_symbols C-Name: mslattice Prototype: GDG Help: mslattice(M, {H}): M being a full modular symbol space, as given by msinit, H a Q-subspace or a matrix of modular symbols. Return the canonical integral structure of H. Doc: Let $\Delta_0:=\text{Div}^0(\P^1(\Q))$ and $V_k = \Q[x,y]_{k-2}$. Let $M$ be a full modular symbol space, as given by \kbd{msinit} and let $H$ be a subspace, e.g. as given by \kbd{mscuspidal}. This function returns a canonical $\Z$ structure on $H$ defined as follows. Consider the map $c: M=\Hom_{\Gamma_0(N)}(\Delta_0, V_k) \to H^1(\Gamma_0(N), V_k)$ given by $\phi \mapsto \var{class}(\gamma \to \phi(\{0, \gamma^{-1} 0\}))$. Let $L_k=\Z[x,y]_{k-2}$ be the natural $\Z$-structure of $V_k$. The result of \kbd{mslattice} is a $\Z$-basis of the inverse image by $c$ of $H^1(\Gamma_0(N), L_k)$ in the space of modular symbols generated by $H$. For user convenience, $H$ can be defined by a matrix representing the $\Q$-basis of $H$ (in terms of the canonical $\Q$-basis of $M$ fixed by \kbd{msinit} and used to represent modular symbols). If omitted, $H$ is the cuspidal part of $M$ as given by \kbd{mscuspidal}. The Eisenstein part $\Hom_{\Gamma_0(N)}(\text{Div}(\P^1(\Q)), V_k)$ is in the kernel of $c$, so the result has no meaning for the Eisenstein part \kbd{H}. \bprog ? M=msinit(11,2); ? [S,E] = mscuspidal(M,1); S[1] \\ a primitive Q-basis of S %2 = [ 1 1] [-5 0] [ 0 -5] ? mslattice(M,S) %3 = [-1/5 -1/5] [ 1 0] [ 0 1] ? mslattice(M,E) %4 = [1] [0] [0] ? M=msinit(5,4); ? S=mscuspidal(M); S[1] %6 = [ 7 20] [ 3 3] [-10 -23] [-30 -30] ? mslattice(M,S) %7 = [-1/10 -11/130] [ 0 -1/130] [ 1/10 6/65] [ 0 1/13] @eprog