 ### test 353 with precomputed fields and galois groups

parent a9e51c58
all-353.m deleted 100644 → 0
This source diff could not be displayed because it is too large. You can view the blob instead.
ex-353.m deleted 100644 → 0
 // Galois theory for C353 // faster but conditional // SetClassGroupBounds("GRH"); load "ex.m"; //load "polys.m"; ZZ := IntegerRing(); ZZx := PolynomialRing(ZZ); load "all-353.m"; f18 := DefiningPolynomial(R1); gal, r, s := GaloisGroup(f18); b, rho := IsIsomorphic(gal, G5); assert b; // we know Frob5 Frob5cycle := Reverse(Sort([ : x in Set(s)])) where s is ([ Degree(f) : f in Factorization(ChangeRing(f18,GF(5))) ]); Frob5 := [c : c in ConjugacyClasses(gal) | CycleStructure(c) eq Frob5cycle ]; assert(#Frob5 eq 1); Frob5 := Frob5; // we expect Tr(Frob5) = 1 if Trace(rho(Frob5)) ne 1 then // fix it by composing rho with the outer automorphism rho := rho * a where a is autg`FpGroup(outg.1 @@ m) where outg, m is OuterFPGroup(autg) where autg is AutomorphismGroup(G5); print "."; end if; // We expect Tr(Frob5) = 1 // Make sure this is right assert Trace(rho(Frob5)) eq 1; f353_R1 := GaloisSubgroup(s, H5 @@ rho); //R1 := NumberField(f353_R1); P2 := Radical(2*Integers(R1)); S0 := Radical(353*Integers(R1)); S5 := P2^5 * S0; //gal, r, s := GaloisGroup(f353_R1); function quad_ext(S, inf) ray, m := RayClassGroup(S, inf); return [ AbelianExtension(Inverse(mq)*m) where _, mq is quo where Q is QQ`subgroup : QQ in Subgroups(ray : Quot:=)]; end function; //qexts := quad_ext(S5, [1..#RealPlaces(R1)]);
ex.m deleted 100644 → 0
 //AttachSpec("mod/mod.spec"); ////////////////////////////////////////////////// GSp4 := Sp(4,2); ex_skip := false; // S5(B) if not ex_skip or not assigned(G1) then // printf "."; G1 := [H`subgroup : H in Subgroups(GSp4 : OrderEqual:=120) | &and [Trace(x) eq 1 : x in order36] where order36 := [x : x in H`subgroup | Order(x) in [3,6]] ]; assert #G1 eq 1; G1 := G1; H1 := [H`subgroup : H in Subgroups(G1 : OrderEqual:=12) | #ConjugacyClasses(H`subgroup) eq 6 ]; assert #H1 eq 1; H1 := H1; assert IsIsomorphic(H1, DihedralGroup(6)); assert IsTrivial(&meet Conjugates(G1,H1)); end if; // S5(A) if not ex_skip or not assigned(G2) then // printf "."; G2 := [H`subgroup : H in Subgroups(GSp4 : OrderEqual:=120) | &and [Trace(x) eq 0 : x in order36] where order36 := [x : x in H`subgroup | Order(x) in [3,6]] ]; assert #G2 eq 1; G2 := G2; H2 := [H`subgroup : H in Subgroups(G2 : OrderEqual:=6) | &+ [#Conjugates(G2, x) : x in H`subgroup] eq 86]; assert #H2 eq 1; H2 := H2; assert IsIsomorphic(H2, SymmetricGroup(3)); assert #Conjugates(G2,ConjugacyClasses(H2)) eq 15; assert IsTrivial(&meet Conjugates(G2,H2)); end if; // S6 if not ex_skip or not assigned(G3) then // printf "."; G3 := GSp4; H3 := [H`subgroup : H in Subgroups(G3 : OrderEqual:=36) | not IsEmpty(order6) and &and [Trace(x) eq 1 : x in order6] where order6 := [x : x in H`subgroup | Order(x) eq 6] ]; assert #H3 eq 1; H3 := H3; assert GroupName(H3) eq "S3^2"; assert IsTrivial(&meet Conjugates(G3,H3)); end if; // A6 if not ex_skip or not assigned(G4) then // printf "."; G4 := Subgroups(GSp4:OrderEqual:=360); assert #G4 eq 1; G4 := G4`subgroup; H4 := [H`subgroup : H in Subgroups(G4:OrderEqual:=18)]; assert #H4 eq 1; H4 := H4; assert GroupName(H4) eq "C3:S3"; assert IsTrivial(&meet Conjugates(G4,H4)); end if; // S3wrC2 if not ex_skip or not assigned(G5) then // printf "."; G5 := Subgroups(GSp4:OrderEqual:=72); assert #G5 eq 1; G5 := G5`subgroup; H5 := [H`subgroup : H in Subgroups(G5:OrderEqual:=4) | #&meet [ Kernel( homgl4 | [h*a-a*h : a in OrderedGenerators(gl4)]> ) : h in Generators(H`subgroup) ] eq 64 ] where gl4 is RMatrixSpace(GF(2), 4, 4); assert #H5 eq 1; H5 := H5; assert GroupName(H5) eq "C2^2"; assert IsTrivial(&meet Conjugates(G5,H5)); end if; // A5(B) if not ex_skip or not assigned(G6) then // printf "."; G6 := [H`subgroup : H in Subgroups(GSp4:OrderEqual:=60) | IsAbsolutelyIrreducible(H`subgroup)]; assert #G6 eq 1; G6 := G6; H6 := Subgroups(G6:OrderEqual:=6); assert #H6 eq 1; H6 := H6`subgroup; assert IsTrivial(&meet Conjugates(G6,H6)); end if; // S3^2(A) if not ex_skip or not assigned(G7) then // printf "."; G7 := [H`subgroup : H in Subgroups(GSp4 : OrderEqual:=36) | not IsEmpty(order6) and &and [Trace(x) eq 0 : x in order6] where order6 := [x : x in H`subgroup | Order(x) eq 6] ]; assert #G7 eq 1; G7 := G7; H7 := [H`subgroup : H in Subgroups(G7:OrderEqual:=2) | #Centralizer(G7, H`subgroup) eq 4]; assert #H7 eq 1; H7 := H7; assert IsTrivial(&meet Conjugates(G7,H7)); end if; // C3:S3.C2 if not ex_skip or not assigned(G8) then // printf "."; G8 := [H`subgroup : H in Subgroups(GSp4 : OrderEqual:=36) | IsEmpty(order6) where order6 := [x : x in H`subgroup | Order(x) eq 6] ]; assert #G8 eq 1; G8 := G8; H8 := Subgroups(G8 : OrderEqual:=2); assert #H8 eq 1; H8 := H8`subgroup; assert IsTrivial(&meet Conjugates(G8,H8)); end if; // F5 if not ex_skip or not assigned(G9) then // printf "."; G9 := Subgroups(GSp4 : OrderEqual:=20); assert #G9 eq 1; G9 := G9`subgroup; H9 := Subgroups(G9 : OrderEqual:=2); assert #H9 eq 1; H9 := H9`subgroup; assert IsTrivial(&meet Conjugates(G9,H9)); end if; //print ""; Gs := [G1, G2, G3, G4, G5, G6, G7, G8, G9]; Hs := [H1, H2, H3, H4, H5, H6, H7, H8, H9];
 AttachSpec("mod.spec"); ZZ := IntegerRing(); ZZx := PolynomialRing(ZZ); //load "ex.m"; load "ex-353.m"; /// DATA for C353 load "../Brumer_G72/TR36v"; load "../Brumer_G72/test353Gal36"; m := ModNew(R1, rho); PS := Multiset([]); time for i := 1 to #all do R2:=NumberField(Polynomial(R1, [-all[i], 0, 1])); proj, phis := ModPhis(m, R2); dim := Integers() ! Log(2, #Domain(phis)/#G5); ps := [ ModPrimes( m, R2, proj, phi : check_residual:=[<5,1>] ) : phi in phis ]; for p in ps do Include(~PS, p); end for; printf "%4o: dim =%2o, %o\n", i, dim, Sort(ps); K0 := NumberField(CAND353_18[1,3]); residual_traces := [<5,1>]; if i mod 10 eq 0 then printf "\n%o\n\n", PS; end if; num_fields := #CAND353_18; fields := func; gals := func; end for; printf "\n\nFINAL: %o\n\n", PS; load "run-test.m";
 ... ... @@ -33,8 +33,6 @@ end for; assert #rhos eq 1; rho := rhos; assert IsConjugate(Sp(4,2), Image(rho), G1); tr := func; tr1 := func; ... ... @@ -62,7 +60,7 @@ time for i := 1 to num_fields do ///// dim := Integers() ! Log(2, #Domain(phis)/#G1); dim := Integers() ! Log(2, #gal2/#gal); ps := []; for phi in phis do ... ... @@ -96,6 +94,10 @@ time for i := 1 to num_fields do continue; end if; pat := ; if not IsDefined(fc, pat) then Append(~ps, -p); continue phi; end if; all_classes := fc[pat]; bad_classes := [ c : c in all_classes | tr(phi(c)) eq 0 ]; if bad_classes eq [] then ... ...
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!