Twists

This section is about twists of newforms by Dirichlet characters. A newform is specified by giving a space of modular symbols that contains a single Galois-orbit (over Q or some extension of Q) of newforms. Spaces of this kind are obtained using NewformDecomposition.

To prove that f2 = f1χ holds for two newforms, the program compares their Hecke eigenvalues up to an appropriate Sturm bound. (For instance, a bound of this kind is given in Lemma 1.4 of [BS02]).

IsTwist(M1, M2, p) : ModSym, ModSym, RngIntElt -> BoolElt, GrpDrchElt
Given two spaces M1 and M2 of modular symbols that specify newforms f1 and f2 as above, and a prime p, this determines whether some Galois conjugate (over Q) of f2 is the twist of f1 by a nontrivial Dirichlet character of p-power conductor. If so, a character χ such that f2 = f1χ is also returned.
IsMinimalTwist(M, p) : ModSym, RngIntElt -> BoolElt, ModSym, GrpDrchElt
Given a space M of modular symbols that specifies a newform f as above, and a prime p, this determines whether some Galois conjugate (over Q) of f is a twist of some newform of lower level by some Dirichlet character of p-power conductor. If so, it returns false, together with the newform of lower level (specified by a space of modular symbols), and the Dirichlet character.

Example ModSym_example-twists (H142E13)

We exhibit a newform that is a twist of itself, namely the only newform of level 9 and weight 4. The newform is specified by the space of modular symbols on Γ0(9) of weight 4 (with sign 1).
> M9 := CuspidalSubspace(ModularSymbols(9, 4, 1));
> newforms := NewformDecomposition(NewSubspace(M9));
> newforms;
[
    Modular symbols space for Gamma_0(9) of weight 4 and dimension 1
    over Rational Field
]
> f := newforms[1];
> Eigenform(f, 20);
q - 8*q^4 + 20*q^7 - 70*q^13 + 64*q^16 + 56*q^19 + O(q^20)
Note that here the coefficients for primes congruent to 2 mod 3 are all zero.
> bool, chi := IsTwist(f, f, 3);
> bool;
true
> Parent(chi);
Group of Dirichlet characters of modulus 3 over Rational Field
> Conductor(chi), Order(chi);
3 2
However, f is not a twist of any newform with lower level:
> bool := IsMinimalTwist(f, 3);
> bool;
true
V2.28, 13 July 2023