// // // code for Proposition 3.3 with X0(10) // // K:=PolynomialRing(Rationals()); j:=((h^6-4*h^5+16*h+16)^3)/(((h+1)^2)*(h-4)*(h^5)); // this is the parameterization of the j-invariants of curves that are non-cuspidal points on X0(10) E:=MinimalModel(EllipticCurveFromjInvariant(j)); // we get an elliptic curve from j (up to a twist) D:=Discriminant(E); // this gives the discriminant of E c4:=cInvariants(E)[1]; // this gives the c4-invariant of E Factorization(K!D); Factorization(K!c4); Factorization(Integers()!Resultant(h+1, K!(D/(h+1)^2))); // =5^22, the factorization of the resultant of the factor h+1 from the discriminant with the remaining factors Factorization(Integers()!Resultant(h+1, K!c4)); // =5^8, the factorization of the resultant of the factor h+1 from the discriminant with c4-invariant K:=PolynomialRing(Rationals()); h:=t-1; // here we put +/-5^k-1 instead of h, with t being t=+/-5^k j:=((h^6-4*h^5+16*h+16)^3)/(((h+1)^2)*(h-4)*(h^5)); // this is the parameterization of the j-invariants of curves that are non-cuspidal points on X0(10) E:=MinimalModel(EllipticCurveFromjInvariant(j)); // we get an elliptic curve from j (up to a twist) D:=Discriminant(E); // this gives the discriminant of E c4:=cInvariants(E)[1]; // this gives the c4-invariant of E Factorization(K!D); // we get the factorization with a variable t, but t represents t=+/-5^k so now we can count multiplicities of 5 in the discriminant, we do the same thing for the c4-invariant Factorization(K!c4); // We can count the multiplicities of 5 in delta(t) and c_4(t) that we have in Proposition ?? // after the change of variables x->x*5^4, y->y*5^6 having in mind that delta(t)=5^(-24)*D, c_4(t)=5^(-8)*c4 // (see Table 3.1 in J. Silverman: The arithmetic of elliptic curves). // below is the code used for specific h in the proof h:=-6; j:=((h^6-4*h^5+16*h+16)^3)/(((h+1)^2)*(h-4)*(h^5)); // this is the parameterization of the j-invariants of curves that are non-cuspidal points on X0(10) E:=MinimalModel(EllipticCurveFromjInvariant(j)); IsQuadraticTwist(E, EllipticCurve("768D3")); // here we see that E is really a twist of 768d3=768.h1 and we get d such that E^d is the curve 768d3=768.h1 (this we use in the next row) LocalInformation(QuadraticTwist(E, -41549090)); // this function gives us primes of bad reduction and their reduction types and Tamagawa numbers LocalInformation(QuadraticTwist(EllipticCurve("768D3"), -1)); // the next 7 lines are examining the properties of Tamagawa numbers at p=2 of the curve 768d3=768.h1 under twisting LocalInformation(QuadraticTwist(EllipticCurve("768D3"), 2)); LocalInformation(QuadraticTwist(EllipticCurve("768D3"), 5)); LocalInformation(QuadraticTwist(EllipticCurve("768D3"), -2)); LocalInformation(QuadraticTwist(EllipticCurve("768D3"), -5)); LocalInformation(QuadraticTwist(EllipticCurve("768D3"), 10)); LocalInformation(QuadraticTwist(EllipticCurve("768D3"), -10)); h:=-2; j:=((h^6-4*h^5+16*h+16)^3)/(((h+1)^2)*(h-4)*(h^5)); // this is the parameterization of the j-invariants of curves that are non-cuspidal points on X0(10) E:=MinimalModel(EllipticCurveFromjInvariant(j)); IsQuadraticTwist(E, EllipticCurve("768D1")); // here we see that E is really a twist of 768d1=768.h3 and we get d such that E^d is the curve 768d1=768.h3 (this we use in the next row) LocalInformation(QuadraticTwist(E, 22)); // this function gives us primes of bad reduction and their reduction types and Tamagawa numbers LocalInformation(QuadraticTwist(EllipticCurve("768D1"), -1)); // the next 7 lines are examining the properties of Tamagawa numbers at p=2 of the curve 768d1=768.h3 under twisting LocalInformation(QuadraticTwist(EllipticCurve("768D1"), 2)); LocalInformation(QuadraticTwist(EllipticCurve("768D1"), 5)); LocalInformation(QuadraticTwist(EllipticCurve("768D1"), -2)); LocalInformation(QuadraticTwist(EllipticCurve("768D1"), -5)); LocalInformation(QuadraticTwist(EllipticCurve("768D1"), 10)); LocalInformation(QuadraticTwist(EllipticCurve("768D1"), -10)); K:=PolynomialRing(Rationals()); h:=(1-m)/m; // this is the substitution m:=1/(h+1) j:=((h^6-4*h^5+16*h+16)^3)/(((h+1)^2)*(h-4)*(h^5)); // this is the parameterization of the j-invariants of curves that are non-cuspidal points on X0(10) E:=MinimalModel(EllipticCurveFromjInvariant(j)); // we get an elliptic curve from j (up to a twist) D:=Discriminant(E); // this gives the discriminant of E c4:=cInvariants(E)[1]; // this gives the c4-invariant of E Factorization(K!D); // we have to have in mind that this function gives the factorization where each irreducible factor is normalized, so to get the complete factorization we have to multiply what we get with 1/25 (in this case) Factorization(K!c4); // this was already normalized // The factorizations of delta(m) and c_4(m) that we have in Proposition ?? are after the change // of variables x->x*5^(-4), y->y*5^(-6). We got the factorizations as delta(m)=5^24*D, c_4(m)=5^8*c4 // (see Table 3.1 in J. Silverman: The arithmetic of elliptic curves). Resultant(m, K!(5^24*(D/m^10))); // =1, the resultant of the factor m from the discriminant with the remaining factors Resultant(m, K!(5^8*c4)); // =1, the resultant of the factor m from the discriminant with the c4-invariant