// The mod 7 image for j = 3^3*5*7^5/2^7 is generated by G7 := GL(2,Integers(7)); H7 := sub; G := GL(2,Integers(49)); H := sub; #H/#H7; // We see that H is the full pre-image mod 47 of H7. maxpairs := 0; M := MaximalSubgroups(H); printf "The full preimage mod 49 has %o maximal subgroups.\n",#M; for i in [1..#M] do K := M[i]`subgroup; C := ConjugacyClasses(K); pairs := {}; for i in [1..#C] do Include(~pairs,); end for; printf "Maximal subgroup %o has %o pairs .\n",i,#pairs; maxpairs := Max(maxpairs,#pairs); end for; actualpairs := {}; E := EllipticCurve([1,-1,0,-107,-379]); doneyet := false; for p in [2..100000] do if IsPrime(p) and not (p in BadPrimes(E)) and (p ne 7) then tr := TraceOfFrobenius(ChangeRing(E,GF(p))) mod 49; det := p mod 49; Include(~actualpairs,); end if; if (doneyet eq false) then if #actualpairs gt maxpairs then doneyet := true; printf "We only needed to test primes up to %o.\n",p; end if; end if; end for; printf "After testing primes up to %o, we found %o actual pairs.\n",1000,#actualpairs;