// This Magma script computes the degrees of points on X_1(8) // for elliptic curves with 2-adic images X20, X20a, and X20b. G := GL(2,Integers(8)); // H1 = reduction of X20 mod 8 H1 := sub; // H2= reduction of X20a mod 8 H2 := sub; // H3 = reduction of X20b mod 8 H3 := sub; H := H3; // Change the above line to H := H2 or H := H3 to do X20a or X20b. H := ChangeRing(H,Integers(8)); orbs := Orbits(H); // Orbits of the group acting on (Z/8Z)^2. goodorbs := []; for i in [1..#orbs] do v := orbs[i][1]; // Take a representative from each orbit if (4*v ne 0) then // Only look at orbits of points with order exactly 8. cvalonehalf := &or [ (-x in orbs[i]) : x in orbs[i]]; // Compute the value of c_x, which depends on whether x and -x are in the same orbit or not. c := Rationals()!1; if (cvalonehalf eq true) then c := Rationals()!(1/2); end if; Append(~goodorbs,); end if; end for; printf "For group %o, degrees of points on X_1(8) are %o.\n",H,[ goodorbs[i][3] : i in [1..#goodorbs]];