/////////////////////////////////////////////////////////////////////////// // "Growth of torsion groups of elliptic curves upon base changes" // Enrique González-Jiménez & Filip Najman /////////////////////////////////////////////////////////////////////////// // 13/10/2016 - Magma 2.21 // Magma script related to Table 1 and 2 at the Appendix /* Non-CM */ load "subgroups.m"; // All known images G_E(p) which are proper subgroups of GL_2(F_p) for non-CM elliptic curves E/Q for each prime p. SZ:=<<2, <"2Cs", "2B", "2Cn">>, <3, <"3Cs.1.1", "3Cs", "3B.1.1", "3B.1.2", "3Ns", "3B", "3Nn">>, <5, <"5Cs.1.1", "5Cs.1.3", "5Cs.4.1", "5Ns.2.1", "5Cs", "5B.1.1", "5B.1.2", "5B.1.3", "5B.1.4", "5Ns", "5B.4.1", "5B.4.2", "5Nn", "5B", "5S4">>, <7, <"7Ns.2.1", "7Ns.3.1", "7B.1.1", "7B.1.2", "7B.1.3", "7B.1.4", "7B.1.5", "7B.1.6", "7Ns", "7B.6.1", "7B.6.2", "7B.6.3", "7Nn", "7B.2.1", "7B.2.3", "7B">>, <11, <"11B.1.4", "11B.1.5", "11B.1.6", "11B.1.7", "11B.10.4", "11B.10.5", "11Nn">>, <13, <"13S4", "13B.3.1", "13B.3.2", "13B.3.4", "13B.3.7", "13B.5.1", "13B.5.2", "13B.5.4", "13B.4.1", "13B.4.2", "13B">>, <17, <"17B.4.2", "17B.4.6">>, <37, <"37B.8.1", "37B.8.2">>>; function Deg(G) // If the group G acts on the left: M*v (M in G) // the function returns the cardinal of the orbits // excluding (0,0) p:=Characteristic(BaseRing(G)); Gt:=sub; dv:=Sort([#o : o in Orbits(Gt)]); return [dv[k] : k in [2..#dv]]; end function; // For any prime p and any known G_E(p) in above list we compute: // * the length of all non-trivial orbits of G_E(p) acting on (Z/pZ)^2 // * the order of G_E(p) // and in the last line all the possible degrees [Q(P):Q] such that ord(P)=p. for sz in SZ do p:=sz[1]; printf "\n[l=%o]\n",p; Lp:={}; for lab in sz[2] do G:=GL2SubgroupFromLabel(lab); dG:=Deg(G); Lp:=Lp join Seqset(dG); printf "== %o == %o - - %o \n",lab, dG, Order(G); end for; printf "-->%o\n", Lp; end for; /* OUTPUT: The data that appears in tables 1 and 2 [l=2] == 2Cs == [ 1, 1, 1 ] - - 1 == 2B == [ 1, 2 ] - - 2 == 2Cn == [ 3 ] - - 3 -->{ 1, 2, 3 } [l=3] == 3Cs.1.1 == [ 1, 1, 2, 2, 2 ] - - 2 == 3Cs == [ 2, 2, 4 ] - - 4 == 3B.1.1 == [ 1, 1, 6 ] - - 6 == 3B.1.2 == [ 2, 3, 3 ] - - 6 == 3Ns == [ 4, 4 ] - - 8 == 3B == [ 2, 6 ] - - 12 == 3Nn == [ 8 ] - - 16 -->{ 1, 2, 3, 4, 6, 8 } [l=5] == 5Cs.1.1 == [ 1, 1, 1, 1, 4, 4, 4, 4, 4 ] - - 4 == 5Cs.1.3 == [ 2, 2, 4, 4, 4, 4, 4 ] - - 4 == 5Cs.4.1 == [ 2, 2, 4, 8, 8 ] - - 8 == 5Ns.2.1 == [ 8, 16 ] - - 16 == 5Cs == [ 4, 4, 16 ] - - 16 == 5B.1.1 == [ 1, 1, 1, 1, 20 ] - - 20 == 5B.1.2 == [ 4, 5, 5, 5, 5 ] - - 20 == 5B.1.3 == [ 4, 10, 10 ] - - 20 == 5B.1.4 == [ 2, 2, 20 ] - - 20 == 5Ns == [ 8, 16 ] - - 32 == 5B.4.1 == [ 2, 2, 20 ] - - 40 == 5B.4.2 == [ 4, 10, 10 ] - - 40 == 5Nn == [ 24 ] - - 48 == 5B == [ 4, 20 ] - - 80 == 5S4 == [ 24 ] - - 96 -->{ 1, 2, 4, 5, 8, 10, 16, 20, 24 } [l=7] == 7Ns.2.1 == [ 6, 6, 9, 9, 18 ] - - 18 == 7Ns.3.1 == [ 12, 18, 18 ] - - 36 == 7B.1.1 == [ 1, 1, 1, 1, 1, 1, 42 ] - - 42 == 7B.1.2 == [ 3, 3, 42 ] - - 42 == 7B.1.3 == [ 6, 7, 7, 7, 7, 7, 7 ] - - 42 == 7B.1.4 == [ 3, 3, 14, 14, 14 ] - - 42 == 7B.1.5 == [ 6, 21, 21 ] - - 42 == 7B.1.6 == [ 2, 2, 2, 21, 21 ] - - 42 == 7Ns == [ 12, 36 ] - - 72 == 7B.6.1 == [ 2, 2, 2, 42 ] - - 84 == 7B.6.2 == [ 6, 42 ] - - 84 == 7B.6.3 == [ 6, 14, 14, 14 ] - - 84 == 7Nn == [ 48 ] - - 96 == 7B.2.1 == [ 3, 3, 42 ] - - 126 == 7B.2.3 == [ 6, 21, 21 ] - - 126 == 7B == [ 6, 42 ] - - 252 -->{ 1, 2, 3, 6, 7, 9, 12, 14, 18, 21, 36, 42, 48 } [l=11] == 11B.1.4 == [ 5, 5, 110 ] - - 110 == 11B.1.5 == [ 5, 5, 110 ] - - 110 == 11B.1.6 == [ 10, 55, 55 ] - - 110 == 11B.1.7 == [ 10, 55, 55 ] - - 110 == 11B.10.4 == [ 10, 110 ] - - 220 == 11B.10.5 == [ 10, 110 ] - - 220 == 11Nn == [ 120 ] - - 240 -->{ 5, 10, 55, 110, 120 } [l=13] == 13S4 == [ 72, 96 ] - - 288 == 13B.3.1 == [ 3, 3, 3, 3, 156 ] - - 468 == 13B.3.2 == [ 12, 39, 39, 39, 39 ] - - 468 == 13B.3.4 == [ 6, 6, 156 ] - - 468 == 13B.3.7 == [ 12, 78, 78 ] - - 468 == 13B.5.1 == [ 4, 4, 4, 156 ] - - 624 == 13B.5.2 == [ 12, 52, 52, 52 ] - - 624 == 13B.5.4 == [ 12, 156 ] - - 624 == 13B.4.1 == [ 6, 6, 156 ] - - 936 == 13B.4.2 == [ 12, 78, 78 ] - - 936 == 13B == [ 12, 156 ] - - 1872 -->{ 3, 4, 6, 12, 39, 52, 72, 78, 96, 156 } [l=17] == 17B.4.2 == [ 8, 8, 272 ] - - 1088 == 17B.4.6 == [ 16, 136, 136 ] - - 1088 -->{ 8, 16, 136, 272 } [l=37] == 37B.8.1 == [ 12, 12, 12, 1332 ] - - 15984 == 37B.8.2 == [ 36, 444, 444, 444 ] - - 15984 -->{ 12, 36, 444, 1332 } > */