/* This code can be loaded, or copied and pasted, into Magma. It will load the data associated to the BMF, including the field, level, and Hecke and Atkin-Lehner eigenvalue data. At the *bottom* of the file, there is code to recreate the Bianchi modular form in Magma, by creating the BMF space and cutting out the corresponding Hecke irreducible subspace. From there, you can ask for more eigenvalues or modify as desired. It is commented out, as this computation may be lengthy. */ P := PolynomialRing(Rationals()); g := P![1, 0, 1]; F := NumberField(g); ZF := Integers(F); NN := ideal; primesArray := [ [2,i+1], [5,i+2], [5,i-2], [3,3], [13,i+5], [13,i-5], [17,i+4], [17,i-4], [29,i+12], [29,i-12], [37,i+6], [37,i-6], [41,i+9], [41,i-9], [7,7], [53,i+23], [53,i-23], [61,i+11], [61,i-11], [73,i+27], [73,i-27], [89,i+34], [89,i-34], [97,i+22], [97,i-22], [101,i+10], [101,i-10], [109,i+33], [109,i-33], [113,i+15], [113,i-15], [11,11], [137,i+37], [137,i-37], [149,i+44], [149,i-44], [157,i+28], [157,i-28], [173,i+80], [173,i-80], [181,i+19], [181,i-19], [193,i+81], [193,i-81], [197,i+14], [197,i-14], [229,i+107], [229,i-107], [233,i+89], [233,i-89], [241,i+64], [241,i-64], [257,i+16], [257,i-16], [269,i+82], [269,i-82], [277,i+60], [277,i-60], [281,i+53], [281,i-53], [293,i+138], [293,i-138], [313,i+25], [313,i-25], [317,i+114], [317,i-114], [337,i+148], [337,i-148], [349,i+136], [349,i-136], [353,i+42], [353,i-42], [19,19], [373,i+104], [373,i-104], [389,i+115], [389,i-115], [397,i+63], [397,i-63], [401,i+20], [401,i-20], [409,i+143], [409,i-143], [421,i+29], [421,i-29], [433,i+179], [433,i-179], [449,i+67], [449,i-67], [457,i+109], [457,i-109], [461,i+48], [461,i-48], [509,i+208], [509,i-208], [521,i+235], [521,i-235], [23,23], [541,i+52], [541,i-52], [557,i+118], [557,i-118], [569,i+86], [569,i-86], [577,i+24], [577,i-24], [593,i+77], [593,i-77], [601,i+125], [601,i-125], [613,i+35], [613,i-35], [617,i+194], [617,i-194], [641,i+154], [641,i-154], [653,i+149], [653,i-149], [661,i+106], [661,i-106], [673,i+58], [673,i-58], [677,i+26], [677,i-26], [701,i+135], [701,i-135], [709,i+96], [709,i-96], [733,i+353], [733,i-353], [757,i+87], [757,i-87], [761,i+39], [761,i-39], [769,i+62], [769,i-62], [773,i+317], [773,i-317], [797,i+215], [797,i-215], [809,i+318], [809,i-318], [821,i+295], [821,i-295], [829,i+246], [829,i-246], [853,i+333], [853,i-333], [857,i+207], [857,i-207], [877,i+151], [877,i-151], [881,i+387], [881,i-387], [929,i+324], [929,i-324], [937,i+196], [937,i-196], [941,i+97], [941,i-97], [953,i+442], [953,i-442], [31,31], [977,i+252], [977,i-252], [997,i+161], [997,i-161], [1009,i+469], [1009,i-469], [1013,i+45], [1013,i-45], [1021,i+374], [1021,i-374], [1033,i+355], [1033,i-355], [1049,i+426], [1049,i-426], [1061,i+103], [1061,i-103], [1069,i+249], [1069,i-249], [1093,i+530], [1093,i-530], [1097,i+341], [1097,i-341], [1109,i+354], [1109,i-354], [1117,i+214], [1117,i-214], [1129,i+168], [1129,i-168], [1153,i+140], [1153,i-140], [1181,i+243], [1181,i-243], [1193,i+186], [1193,i-186], [1201,i+49], [1201,i-49], [1213,i+495], [1213,i-495], [1217,i+78], [1217,i-78], [1229,i+597], [1229,i-597], [1237,i+546], [1237,i-546], [1249,i+585], [1249,i-585], [1277,i+113], [1277,i-113], [1289,i+479], [1289,i-479], [1297,i+36], [1297,i-36], [1301,i+51], [1301,i-51], [1321,i+257], [1321,i-257], [1361,i+614], [1361,i-614], [1373,i+668], [1373,i-668], [1381,i+366], [1381,i-366], [1409,i+452], [1409,i-452], [1429,i+620], [1429,i-620], [1433,i+542], [1433,i-542], [1453,i+497], [1453,i-497], [1481,i+465], [1481,i-465], [1489,i+225], [1489,i-225], [1493,i+432], [1493,i-432], [1549,i+88], [1549,i-88], [1553,i+339], [1553,i-339], [1597,i+610], [1597,i-610], [1601,i+40], [1601,i-40], [1609,i+523], [1609,i-523], [1613,i+127], [1613,i-127], [1621,i+166], [1621,i-166], [1637,i+316], [1637,i-316], [1657,i+783], [1657,i-783], [1669,i+220], [1669,i-220], [1693,i+92], [1693,i-92], [1697,i+414], [1697,i-414], [1709,i+390], [1709,i-390], [1721,i+473], [1721,i-473], [1733,i+410], [1733,i-410], [1741,i+59], [1741,i-59], [1753,i+713], [1753,i-713], [1777,i+775], [1777,i-775], [1789,i+724], [1789,i-724], [1801,i+824], [1801,i-824], [43,43], [1861,i+61], [1861,i-61], [1873,i+737], [1873,i-737], [1877,i+137], [1877,i-137], [1889,i+331], [1889,i-331], [1901,i+218], [1901,i-218], [1913,i+712], [1913,i-712], [1933,i+598], [1933,i-598], [1949,i+589], [1949,i-589], [1973,i+259], [1973,i-259], [1993,i+834], [1993,i-834], [1997,i+412], [1997,i-412], [2017,i+229], [2017,i-229], [2029,i+992], [2029,i-992], [2053,i+244], [2053,i-244], [2069,i+164], [2069,i-164], [2081,i+102], [2081,i-102], [2089,i+789], [2089,i-789], [2113,i+65], [2113,i-65], [2129,i+372], [2129,i-372], [2137,i+296], [2137,i-296], [2141,i+419], [2141,i-419], [2153,i+232], [2153,i-232], [2161,i+147], [2161,i-147], [47,47], [2213,i+1083], [2213,i-1083], [2221,i+790], [2221,i-790], [2237,i+1021], [2237,i-1021], [2269,i+982], [2269,i-982], [2273,i+290], [2273,i-290], [2281,i+710], [2281,i-710], [2293,i+600], [2293,i-600], [2297,i+365], [2297,i-365], [2309,i+688], [2309,i-688], [2333,i+108], [2333,i-108], [2341,i+153], [2341,i-153], [2357,i+633], [2357,i-633], [2377,i+1134], [2377,i-1134], [2381,i+69], [2381,i-69], [2389,i+285], [2389,i-285], [2393,i+971], [2393,i-971], [2417,i+592], [2417,i-592], [2437,i+398], [2437,i-398], [2441,i+672], [2441,i-672], [2473,i+567], [2473,i-567], [2477,i+915], [2477,i-915], [2521,i+71], [2521,i-71], [2549,i+357], [2549,i-357], [2557,i+611], [2557,i-611], [2593,i+918], [2593,i-918], [2609,i+389], [2609,i-389], [2617,i+667], [2617,i-667], [2621,i+472], [2621,i-472], [2633,i+1224], [2633,i-1224], [2657,i+163], [2657,i-163], [2677,i+550], [2677,i-550], [2689,i+1142], [2689,i-1142], [2693,i+859], [2693,i-859], [2713,i+887], [2713,i-887], [2729,i+1102], [2729,i-1102], [2741,i+656], [2741,i-656], [2749,i+640], [2749,i-640], [2753,i+794], [2753,i-794], [2777,i+190], [2777,i-190], [2789,i+167], [2789,i-167], [2797,i+603], [2797,i-603], [2801,i+1258], [2801,i-1258], [2833,i+1357], [2833,i-1357], [2837,i+416], [2837,i-416], [2857,i+896], [2857,i-896], [2861,i+1202], [2861,i-1202], [2897,i+1120], [2897,i-1120], [2909,i+878], [2909,i-878], [2917,i+54], [2917,i-54], [2953,i+1226], [2953,i-1226], [2957,i+1222], [2957,i-1222], [2969,i+964], [2969,i-964], [3001,i+1353], [3001,i-1353], [3037,i+281], [3037,i-281], [3041,i+774], [3041,i-774], [3049,i+475], [3049,i-475], [3061,i+501], [3061,i-501], [3089,i+393], [3089,i-393], [3109,i+727], [3109,i-727], [3121,i+79], [3121,i-79], [3137,i+56], [3137,i-56], [3169,i+1325], [3169,i-1325], [3181,i+282], [3181,i-282], [3209,i+484], [3209,i-484], [3217,i+1436], [3217,i-1436], [3221,i+234], [3221,i-234], [3229,i+839], [3229,i-839], [3253,i+1598], [3253,i-1598], [3257,i+291], [3257,i-291], [3301,i+1212], [3301,i-1212], [3313,i+407], [3313,i-407], [3329,i+1600], [3329,i-1600], [3361,i+900], [3361,i-900], [3373,i+1105], [3373,i-1105], [3389,i+1344], [3389,i-1344], [3413,i+1471], [3413,i-1471], [3433,i+1651], [3433,i-1651], [3449,i+1122], [3449,i-1122], [3457,i+708], [3457,i-708], [3461,i+1453], [3461,i-1453], [3469,i+1003], [3469,i-1003], [59,59], [3517,i+596], [3517,i-596], [3529,i+808], [3529,i-808], [3533,i+548], [3533,i-548], [3541,i+852], [3541,i-852], [3557,i+943], [3557,i-943]]; primes := [ideal : I in primesArray]; heckePol := x; K := Rationals(); e := 1; heckeEigenvaluesList := [* -2, 0, -1, -3, -1, -3, -4, -5, 5, -1, -9, 0, -5, -8, -9, -11, 1, -3, 0, 0, -4, -1, 8, -7, -9, -5, -11, 4, 19, 13, -11, 4, -1, -17, -11, 11, 20, -21, -4, 1, 15, -12, -15, 17, 7, 8, 9, 0, -1, -19, -5, -7, -1, -28, 4, -16, -21, 14, 4, -1, -1, -14, -9, 16, 29, 20, -2, 3, 25, -4, -4, -11, 23, -7, 0, 20, -19, 13, -3, 22, -16, 14, -25, 23, 7, 5, -9, -23, -11, 3, -34, -13, 19, 5, -32, -7, -25, -36, -3, 21, -25, 16, 43, 25, 5, -15, -11, 35, -39, -36, -46, -27, 11, 29, -10, -31, -11, -16, 12, 9, -37, 39, 13, 13, 43, 41, 24, 12, -15, -41, -18, -1, -11, -44, 28, -20, -44, -11, -23, 43, 23, 5, -13, -37, -17, -53, -9, -16, 5, 19, 21, 1, -44, 49, -16, 1, 49, -30, 7, 16, -35, 11, -32, -61, -11, -15, 43, 33, 27, -31, -13, 37, -16, -37, 0, 37, -17, -8, 55, 63, 48, 47, 48, 7, -8, 35, 31, 5, -6, 55, -62, 27, 31, -50, 43, 52, -37, 12, -33, 24, 4, 61, 17, 22, -56, -21, -26, -6, -45, -11, -32, -25, 5, -57, -37, -25, 37, -48, 36, -25, -35, -1, 71, 35, -55, 13, 8, -51, 51, -34, -56, 57, 25, 11, -1, -41, -37, -56, -23, 13, 10, -7, -73, -45, 55, -29, -53, -5, 79, -53, -19, 39, 63, -61, -16, 9, -55, -15, -39, -3, -73, -41, 79, 41, 40, 55, -40, 28, -40, -47, 71, -61, 45, -57, 25, 65, -25, 9, 54, 18, 56, -52, 17, 57, 4, -14, -47, -74, 20, -56, 29, 41, -21, -16, -28, -35, -41, 44, 61, -60, -56, -8, 17, 36, 21, -57, 71, 24, 2, -83, -13, -25, -33, 3, -88, -69, -71, 31, -7, 12, -37, -23, 1, -17, -80, 23, 36, -91, -41, 11, -43, 52, -31, 3, 21, -11, -86, -16, -89, 69, -25, -14, 67, 23, 17, -44, 17, 65, -19, 13, 29, 45, -76, -25, -65, -17, -61, -37, -37, 73, -52, 25, -12, -82, 14, -21, -29, -77, 68, -12, 45, 100, -79, -1, 12, 3, -53, -16, 5, -92, 96, -19, 7, 26, 32, 32, 17, 11, -45, 25, 20, -76, 16, -39, -25, 92, -23, 29, 20, 48, 84, 77, 20, -41, 13, -11, -35, -29, -33, -29, -83, 40, 51, -11, -88, 48, 76, 38, 71, 8, -56, 83, 17, 100, 78, 45, -80, 59, -35, -25, -83, 12, 27, -29, -45, -47, -68, 72, 15, 39, -27, -4, 71, 111, -33, -27, 21, 5, 1, 59, 35, -100, 32, 77, -89, -6, -41, -17, -28, 16, -40, 84, 61, -62, -82, 31, -1, 19, 12, -65, -25, -49, 97, -29, -63, -71, 64, -62, 109, 44, -36, 101, 65, -9, 107, 8, 91, 63, -12, 79, 39, 32, 104, 80, -7, 95, 81, -15, 34, 13 *]; heckeEigenvalues := AssociativeArray(); for i in [1..#heckeEigenvaluesList] do heckeEigenvalues[primes[i]] := heckeEigenvaluesList[i]; end for; ALEigenvalues := AssociativeArray(); ALEigenvalues[ideal] := -1; ALEigenvalues[ideal] := 1; // EXAMPLE: // pp := Factorization(2*ZF)[1][1]; // heckeEigenvalues[pp]; print "To reconstruct the Bianchi newform f, type f, iso := Explode(make_newform());"; function make_newform(); M := BianchiCuspForms(F, NN); S := NewSubspace(M); // SetVerbose("Bianchi", 1); NFD := NewformDecomposition(S); newforms := [* Eigenform(U) : U in NFD *]; if #newforms eq 0 then; print "No Bianchi newforms at this level"; return 0; end if; print "Testing ", #newforms, " possible newforms"; newforms := [* f: f in newforms | IsIsomorphic(BaseField(f), K) *]; print #newforms, " newforms have the correct Hecke field"; if #newforms eq 0 then; print "No Bianchi newform found with the correct Hecke field"; return 0; end if; autos := Automorphisms(K); xnewforms := [* *]; for f in newforms do; if K eq RationalField() then; Append(~xnewforms, [* f, autos[1] *]); else; flag, iso := IsIsomorphic(K,BaseField(f)); for a in autos do; Append(~xnewforms, [* f, a*iso *]); end for; end if; end for; newforms := xnewforms; for P in primes do; if Valuation(NN,P) eq 0 then; xnewforms := [* *]; for f_iso in newforms do; f, iso := Explode(f_iso); if HeckeEigenvalue(f,P) eq iso(heckeEigenvalues[P]) then; Append(~xnewforms, f_iso); end if; end for; newforms := xnewforms; if #newforms eq 0 then; print "No Bianchi newform found which matches the Hecke eigenvalues"; return 0; else if #newforms eq 1 then; print "success: unique match"; return newforms[1]; end if; end if; end if; end for; print #newforms, "Bianchi newforms found which match the Hecke eigenvalues"; return newforms[1]; end function;