Commit 3eea1b7d authored by Gonzalo Tornaría's avatar Gonzalo Tornaría

for C353, test to avoid prime 181

parent bee68335
......@@ -365,7 +365,14 @@ intrinsic ModPrimes(m :: Modularity, R2 :: FldNum,
p, ap := Explode(p_ap);
pat1 := m`frobR1[p];
pat2 := FrobeniusStructure(R2, p);
cs := fc[<pat1,pat2>];
if no_order then
pat := pat2;
elif only_order then
pat := < LCM([x[1]:x in pat1]), pat2 >;
else
pat := < pat1, pat2 >;
end if;
cs := fc[pat];
cc := [ c : c in cs | tr1(phi(c)) eq ap ];
if #cc eq 0 then
return -p;
......@@ -384,7 +391,7 @@ intrinsic ModPrimes(m :: Modularity, R2 :: FldNum,
if no_order then
pat := pat2;
elif only_order then
pat := < LCM(pat1), pat2 >;
pat := < LCM([x[1]:x in pat1]), pat2 >;
else
pat := < pat1, pat2 >;
end if;
......
AttachSpec("mod.spec");
debug:=false;
ZZ := IntegerRing();
ZZx<x> := PolynomialRing(ZZ);
f353 := x^18 + 12*x^17 + 69*x^16 + 246*x^15 + 592*x^14 + 984*x^13 +
1100*x^12 + 660*x^11
- 307*x^10 - 1322*x^9 - 1513*x^8 - 368*x^7 + 1629*x^6 + 3342*x^5 +
3775*x^4 + 2810*x^3 + 1377*x^2 + 404*x + 53;
R1 := NumberField(f353);
residual_traces := [<5,1>];
//// FIND the correct rho : gal --> Sp(4, 2)
gal, r, s := GaloisGroup(R1);
assert GaloisProof(R1, s);
rhos := MonomorphismRepresentatives(gal, Sp(4,2));
cc := [c[3] : c in ConjugacyClasses(gal)];
for p_ap in residual_traces do
p, ap := Explode(p_ap);
frob := FrobeniusStructure(R1, p);
cc_frob := [c : c in cc | CycleStructure(c) eq frob];
rhos := [ rho : rho in rhos
| &or [Trace(rho(c)) eq ap : c in cc_frob] ];
end for;
assert #rhos eq 1;
rho := rhos[1];
assert GroupName(Image(rho)) eq "S3wrC2";
/////
g181a := x^36 + 24*x^35 + 294*x^34 + 2332*x^33 + 12971*x^32 +
51004*x^31 + 129962*x^30 + 108916*x^29 - 755531*x^28 -
4286056*x^27 - 11965522*x^26 - 17987104*x^25 + 2200380*x^24 +
88974036*x^23 + 248713278*x^22 + 371011788*x^21 +
250782700*x^20 - 122267056*x^19 - 186518572*x^18 +
953837140*x^17 + 3245606011*x^16 + 4549368872*x^15 +
2131130636*x^14 - 3041583888*x^13 - 4757145729*x^12 +
1367461624*x^11 + 8216763678*x^10 + 2559591132*x^9 -
15655422773*x^8 - 28806566988*x^7 - 20672310606*x^6 +
5338091204*x^5 + 31322972342*x^4 + 36951439232*x^3 +
27843897056*x^2 + 11950277716*x + 3513439753;
g181b := x^36 + 24*x^35 + 270*x^34 + 1856*x^33 + 8375*x^32 +
23736*x^31 + 28634*x^30 - 64988*x^29 - 292679*x^28 +
185548*x^27 + 4444402*x^26 + 15583372*x^25 + 23629744*x^24 -
9763296*x^23 - 119460426*x^22 - 219276308*x^21 -
31949784*x^20 + 624310580*x^19 + 1222349488*x^18 +
538023420*x^17 - 1631662941*x^16 - 2521709704*x^15 +
782291396*x^14 + 3529778376*x^13 - 3862976993*x^12 -
13893055088*x^11 - 1989840018*x^10 + 26562589008*x^9 +
32921208343*x^8 + 18903891304*x^7 + 28631023282*x^6 +
60564710980*x^5 + 69523421314*x^4 + 44909014212*x^3 +
19790668476*x^2 + 3951479052*x + 1046837601;
g137a := x^36 + 24*x^35 + 282*x^34 + 2160*x^33 + 12098*x^32 +
52596*x^31 + 183604*x^30 + 524244*x^29 + 1230474*x^28 +
2334104*x^27 + 3309188*x^26 + 2294360*x^25 - 4641154*x^24 -
22567204*x^23 - 52134972*x^22 - 77832928*x^21 - 55051447*x^20
+ 91474852*x^19 + 446177350*x^18 + 1058459260*x^17 +
1892024648*x^16 + 2799064096*x^15 + 3553289704*x^14 +
3940650244*x^13 + 3856122001*x^12 + 3350750272*x^11 +
2605279038*x^10 + 1843168780*x^9 + 1233086778*x^8 +
827764304*x^7 + 571284560*x^6 + 384884048*x^5 + 238599460*x^4
+ 131736608*x^3 + 60298840*x^2 + 19580528*x + 3270856;
g137b := x^36 + 4*x^32 - 11162*x^28 + 260227*x^24 + 16188181*x^20 -
522696533*x^16 + 75171857845*x^12 + 880683079348*x^8 +
88708052659153*x^4 + 1934854145598529;
procedure solve(f)
// finding the embeding R1 in R2 takes a long time otherwise
SetClassGroupBounds("GRH");
time R2 := AbelianExtension(NumberField(Factorization(ChangeRing(f,R1))[1,1]));
time R2 := NumberField(R2);
////
m := ModNew(R1, rho);
"\nQuadratic extension given by";
g181a;
time proj, phis := ModPhis(m, R2);
"\nUsing rho(Frob)";
[ModPrimes(m, R2, proj, phi : debug:=debug, check_frob) : phi in phis];
"\nUsing rho(Frob)";
[ModPrimes(m, R2, proj, phi : debug:=debug,
check_frob, check_residual := residual_traces) : phi in phis];
"\nUsing the cycle decomposition of rho(Frob)";
[ModPrimes(m, R2, proj, phi : debug:=debug,
check_residual := residual_traces) : phi in phis];
"\nUsing the order of rho(Frob)";
[ModPrimes(m, R2, proj, phi : debug:=debug, only_order,
check_residual := residual_traces) : phi in phis];
"\nNOT Using the order of rho(Frob)";
[ModPrimes(m, R2, proj, phi : debug:=debug, no_order,
check_residual := residual_traces) : phi in phis];
end procedure;
solve(g137a);
solve(g137b);
solve(g181a);
solve(g181b);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment