// // code for Theorem 2.13, Table 7 // function check(p,f); // this function returns the set of all possible residues of f mod p if p is not 2, and mod 4 if p is 2 A:={}; S:=[0..p]; for m in S do for n in S do if ((m mod p) ne 0) or ((n mod p) ne 0) then // because (m,n)=1 g:=Integers()!Evaluate(f, [m, 0, n]); if p eq 2 then A:=A join {-g mod 4}; // we put the residues modulo 4 in the set A else A:=A join {-g mod p}; // we put the residues modulo p in the set A end if; end if; end for; end for; return A; end function; function Unramified(N); // this function returns the set of primes between 1 and 100 that are unramified in all quadratic fields generated by points on X0(22) f:=DefiningPolynomial(SimplifiedModel(SmallModularCurve(N))); A:={i:i in PrimesUpTo(100)}; for p in PrimesUpTo(100) do B:=check(p,f); if p eq 2 then for k in B do if B ne {1} then A:=A diff {2}; // if (k mod 4) is not 1, then 2 may ramify end if; end for; else if 0 in B then A:=A diff {p}; // if 0 is in B, then p may ramify end if; end if; end for; return A; end function; Table4:=[*[*22, {3, 5, 23, 31, 37, 59, 67, 71, 89, 97}*], // [*N, {primes that are unramified in all quadratic fields generated by points on X0(N)}*], according to Theorem 2.8 [*23, {2, 3, 13, 29, 31, 41, 47, 71, 73}*], [*26, {3, 5, 7, 11, 17, 19, 31, 37, 41, 43, 47, 59, 67, 71, 73, 83, 89, 97}*], [*28, {3, 5, 13, 17, 19, 31, 41, 47, 59, 61, 73, 83, 89, 97}*], [*29, {3, 5, 11, 13, 17, 19, 31, 37, 41, 43, 47, 53, 61, 73, 79, 89, 97}*], // we exclude p=2 here, it was proved in Theorem 2.1.a) [*30, {3, 7, 13, 17, 23, 37, 43, 47, 53, 67, 73, 83, 97}*], [*31, {2, 5, 7, 19, 41, 59, 71, 97}*], [*33, {2, 7, 13, 17, 19, 29, 41, 43, 61, 73, 79, 83}*], [*35, {2, 3, 7, 13, 17, 23, 37, 43, 47, 53, 67, 73, 83, 97}*], [*39, {2, 5, 7, 11, 13, 19, 31, 37, 41, 47, 59, 61, 67, 71, 73, 79, 83, 89, 97}*], [*40, {3, 5, 7, 11, 13, 17, 19, 23, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 97}*], // we exclude p=2 here, it was proved in Theorem 2.1.a) [*41, {3, 5, 7, 11, 13, 17, 19, 29, 37, 47, 53, 61, 67, 71, 73, 79, 89, 97}*], [*46, {3, 13, 29, 31, 41, 47, 71, 73}*], // we exclude p=2 here, because it was proved in Theorem 2.1.a) [*47, {2, 3, 7, 17, 37, 53, 59, 61, 71, 79, 89, 97}*], [*48, {3, 5, 7, 11, 17, 19, 23, 29, 31, 41, 43, 47, 53, 59, 67, 71, 79, 83, 89}*], // we exclude p=2 here, because it was proved in Theorem 2.1.a) [*50, {3, 7, 11, 13, 17, 19, 23, 37, 41, 43, 47, 53, 67, 73, 83, 89, 97}*], [*59, {3, 5, 7, 19, 29, 41, 53, 79}*], [*71, {2, 3, 5, 19, 29, 37, 43, 73, 79, 83, 89}*]*]; A:={}; B:={}; for i in [1..#Table4] do N:=Table4[i][1]; B:=Table4[i][2]; // the set of primes that are unramified in all quadratic fields generated by points on X0(N), according to Theorem 2.8 A:=Unramified(N); // the set of primes that are unramified in all quadratic fields generated by points on X0(N), according to the function Unramified() assert A eq B; end for;