2011-07-11: higher rank twists

318 days ago by WilliamStein

def higher_rank_twists(A, n): """ INPUT: - A -- rank 0 modular abelian variety or sign 0 modular symbols space - n -- bound for search OUTPUT: - list of integers d with |d| <= n such that twisting A by the character (d/-) results in an abelian variety with *even* positive analytic rank. """ from sage.modular.abvar.abvar import is_ModularAbelianVariety if is_ModularAbelianVariety(A): A = A.modular_symbols(sign=0) if A.sign() != 0: raise ValueError, "A must have sign 0" phi = A.rational_period_mapping() N = A.level() M = A.ambient_module() if phi(M([0,oo])) == 0: raise ValueError, "A must have analytic rank 0" v = [] for d in [-n..n]: if gcd(A.level(), d) == 1: eps = kronecker_character(d) if eps.is_primitive() and eps.conductor() > 1 and eps(-N) == 1: w = M.twisted_winding_element(0, eps) if phi(w) == 0: v.append(d) return v 
       
 
       

Double check with an elliptic curve:

higher_rank_twists(ModularSymbols(11,2).cuspidal_subspace(), 75) 
       
[-47, 58]
[-47, 58]
EllipticCurve('11a').quadratic_twist(-47).analytic_rank() 
       
2
2

Now the interesting search

higher_rank_twists(ModularSymbols(23,2).cuspidal_subspace(), 150) 
       
[59]
[59]
kronecker_character(59).conductor() 
       
236
236
higher_rank_twists(ModularSymbols(31,2).cuspidal_subspace(), 150) 
       
[-143, -131, -47]
[-143, -131, -47]
kronecker_character(-47).conductor() 
       
47
47
A=ModularSymbols(35,2).cuspidal_subspace().new_subspace().decomposition()[1]; print A 
       
Modular Symbols subspace of dimension 4 of Modular Symbols space of
dimension 9 for Gamma_0(35) of weight 2 with sign 0 over Rational Field
Modular Symbols subspace of dimension 4 of Modular Symbols space of dimension 9 for Gamma_0(35) of weight 2 with sign 0 over Rational Field
higher_rank_twists(A, 75) 
       
[]
[]
A=ModularSymbols(39,2).cuspidal_subspace().new_subspace().decomposition()[1]; print A 
       
Modular Symbols subspace of dimension 4 of Modular Symbols space of
dimension 9 for Gamma_0(39) of weight 2 with sign 0 over Rational Field
Modular Symbols subspace of dimension 4 of Modular Symbols space of dimension 9 for Gamma_0(39) of weight 2 with sign 0 over Rational Field
higher_rank_twists(A, 75) 
       
[]
[]
A=ModularSymbols(63,2).cuspidal_subspace().new_subspace().decomposition()[1]; print A 
       
Modular Symbols subspace of dimension 4 of Modular Symbols space of
dimension 17 for Gamma_0(63) of weight 2 with sign 0 over Rational Field
Modular Symbols subspace of dimension 4 of Modular Symbols space of dimension 17 for Gamma_0(63) of weight 2 with sign 0 over Rational Field
higher_rank_twists(A, 75) 
       
[]
[]
A=ModularSymbols(65,2).cuspidal_subspace().new_subspace().decomposition()[1]; print A 
       
Modular Symbols subspace of dimension 4 of Modular Symbols space of
dimension 13 for Gamma_0(65) of weight 2 with sign 0 over Rational Field
Modular Symbols subspace of dimension 4 of Modular Symbols space of dimension 13 for Gamma_0(65) of weight 2 with sign 0 over Rational Field
higher_rank_twists(A, 75) 
       
[]
[]
A=ModularSymbols(65,2).cuspidal_subspace().new_subspace().decomposition()[2]; print A 
       
Modular Symbols subspace of dimension 4 of Modular Symbols space of
dimension 13 for Gamma_0(65) of weight 2 with sign 0 over Rational Field
Modular Symbols subspace of dimension 4 of Modular Symbols space of dimension 13 for Gamma_0(65) of weight 2 with sign 0 over Rational Field
higher_rank_twists(A, 75) 
       
[]
[]
A=ModularSymbols(87,2).cuspidal_subspace().new_subspace().decomposition()[0]; print A 
       
Modular Symbols subspace of dimension 4 of Modular Symbols space of
dimension 21 for Gamma_0(87) of weight 2 with sign 0 over Rational Field
Modular Symbols subspace of dimension 4 of Modular Symbols space of dimension 21 for Gamma_0(87) of weight 2 with sign 0 over Rational Field
higher_rank_twists(A, 75) 
       
[]
[]