diff options
author | David A. Madore <david+git@madore.org> | 2011-12-14 21:08:03 +0100 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2011-12-14 21:08:03 +0100 |
commit | 12e2fb62bbebba2196722858a9e8af62abbcbc60 (patch) | |
tree | fe36808970d4e6cc1bd3cab7cc549054afbb4e38 /divers | |
parent | 83e08e0392cb6055f8a11b7bd06937f80e3bdc23 (diff) | |
download | galois-12e2fb62bbebba2196722858a9e8af62abbcbc60.tar.gz galois-12e2fb62bbebba2196722858a9e8af62abbcbc60.tar.bz2 galois-12e2fb62bbebba2196722858a9e8af62abbcbc60.zip |
sageries: Polynômes plus systématiques pour les sous-groupes de 𝔖_6
Diffstat (limited to 'divers')
-rw-r--r-- | divers/sageries/sous-groupes-s6 | 56 |
1 files changed, 48 insertions, 8 deletions
diff --git a/divers/sageries/sous-groupes-s6 b/divers/sageries/sous-groupes-s6 index 7cafa74..4a17c8f 100644 --- a/divers/sageries/sous-groupes-s6 +++ b/divers/sageries/sous-groupes-s6 @@ -1,8 +1,8 @@ s6 = SymmetricGroup(6) tuplegens = [[[(1, 5, 3), (4, 2, 6)], [(1, 4), (5, 6), (3, 2)]], [[(1, 5, 3), (4, 2, 6)], [(1, 4), (5, 2), (3, 6)]], [[(5, 4), (3, 2)], [(1, 5, 3), (4, 2, 6)], [(1, 6), (3, 2)]], [[(5, 3), (2, 6)], [(1, 5, 3), (4, 2, 6)], [(1, 4), (5, 2), (3, 6)]], [[(4, 2, 6)], [(1, 5, 3)], [(1, 4), (5, 2), (3, 6)]], [[(3, 2)], [(5, 4)], [(1, 5, 3), (4, 2, 6)], [(1, 6)]], [[(5, 3), (4, 2)], [(5, 4), (3, 2)], [(1, 5, 3), (4, 2, 6)], [(1, 6), (3, 2)]], [[(5, 3, 4, 2)], [(5, 4), (3, 2)], [(1, 5, 3), (4, 2, 6)], [(1, 6), (3, 2)]], [[(4, 2, 6)], [(5, 3), (2, 6)], [(1, 5, 3)], [(1, 4), (5, 2), (3, 6)]], [[(4, 2, 6)], [(5, 3), (2, 6)], [(1, 5, 3)], [(1, 4), (5, 2, 3, 6)]], [[(3, 2)], [(5, 3), (4, 2)], [(5, 4)], [(1, 4, 3), (5, 2, 6)], [(1, 6)]], [[(1, 5, 3, 4, 6)], [(1, 4), (2, 6)]], [[(4, 2, 6)], [(4, 6)], [(5, 3)], [(1, 5, 3)], [(1, 4), (5, 2), (3, 6)]], [[(3, 4, 6, 2)], [(1, 2, 3, 6, 4)], [(1, 6), (5, 4)]], [[(4, 2, 6)], [(1, 5, 3, 4, 2)]], [[(1, 5)], [(1, 5, 3, 4, 2, 6)]]] -reps = [s6.subgroup(l) for l in tuplegens] +groups = [s6.subgroup(l) for l in tuplegens] alsocontains = [(4, 0), (5, 1), (10, 1), (10, 3)] -strictcontains = [(i,j) for i in range(16) for j in range(16) if reps[j].is_subgroup(reps[i])] +strictcontains = [(i,j) for i in range(16) for j in range(16) if groups[j].is_subgroup(groups[i])] contains = [(i,j) for i in range(16) for j in range(16) if (i,j) in strictcontains or (i,j) in alsocontains] def subgroup_up_to_conjugacy(g,h): for x in gap.ConjugateSubgroups(s6,g): @@ -10,20 +10,60 @@ def subgroup_up_to_conjugacy(g,h): return True return False -# contains == [(i,j) for i in range(16) for j in range(16) if subgroup_up_to_conjugacy(reps[i],reps[j])] +# contains == [(i,j) for i in range(16) for j in range(16) if subgroup_up_to_conjugacy(groups[i],groups[j])] R.<t> = PowerSeriesRing(QQ,'t',default_prec=30) -hilbertnum = [(sum([1/((1-x.matrix()*t).determinant()) for x in reps[j]]))*prod([1-t^i for i in range(1,7)])/reps[j].order() for j in range(16)] - +hilbertnum = [(sum([1/((1-x.matrix()*t).determinant()) for x in groups[j]]))*prod([1-t^i for i in range(1,7)])/groups[j].order() for j in range(16)] +minover = [[i for i in range(16) if (i,j) in contains and len([k for k in range(16) if (i,k) in contains and (k,j) in contains])==2] for j in range(16)] S.<z1,z2,z3,z4,z5,z6> = QQ['z1','z2','z3','z4','z5','z6'] +def monomials(deg): + mons = [z1^(deg-i2-i3-i4-i5-i6)*z2^i2*z3^i3*z4^i4*z5^i5*z6^i6 for i6 in range(deg+1) for i5 in range(deg+1-i6) for i4 in range(deg+1-i5-i6) for i3 in range(deg+1-i4-i5-i6) for i2 in range(deg+1-i3-i4-i5-i6)] + return mons + +def find_friendly_polynomial(grpnum,deg): + grp = groups[grpnum] + grpord = grp.order() + cand = [sum([mon*sig for sig in grp]) for mon in monomials(deg)] + cand.sort(key = lambda pol: len(pol.coefficients())) + zappers = [None for i in range(len(minover[grpnum]))] + for i in range(len(minover[grpnum])): + while True: + zap = groups[minover[grpnum][i]].random_element() + if not zap in grp: + zappers[i] = zap + break + for pol in cand: + happy = True + for zap in zappers: + if pol*zap == pol: + happy = False + break + if happy: + if len([None for sig in s6 if pol*sig==pol]) == grpord: + return pol + +def find_friendly_polynomial_alldegrees(grpnum): + deg = 1 + while True: + pol = find_friendly_polynomial(grpnum, deg) + if pol != None: + return pol + deg = deg+1 + pols = [None for j in range(16)] pols[15] = S(1) pols[14] = prod([S.gens()[i]-S.gens()[j] for j in range(6) for i in range(j)]) pols[13] = z1^2*z2^2*z3*z4 + z1*z2*z3^2*z4^2 + z1^2*z2*z3^2*z5 + z2^2*z3^2*z4*z5 + z1*z2^2*z4^2*z5 + z1^2*z3*z4^2*z5 + z1*z2^2*z3*z5^2 + z1^2*z2*z4*z5^2 + z1*z3^2*z4*z5^2 + z2*z3*z4^2*z5^2 + z1*z2^2*z3^2*z6 + z1^2*z3^2*z4*z6 + z1^2*z2*z4^2*z6 + z2^2*z3*z4^2*z6 + z1^2*z2^2*z5*z6 + z3^2*z4^2*z5*z6 + z1^2*z3*z5^2*z6 + z2*z3^2*z5^2*z6 + z2^2*z4*z5^2*z6 + z1*z4^2*z5^2*z6 + z1^2*z2*z3*z6^2 + z1*z2^2*z4*z6^2 + z2*z3^2*z4*z6^2 + z1*z3*z4^2*z6^2 + z2^2*z3*z5*z6^2 + z1*z3^2*z5*z6^2 + z1^2*z4*z5*z6^2 + z2*z4^2*z5*z6^2 + z1*z2*z5^2*z6^2 + z3*z4*z5^2*z6^2 pols[12] = z1*z3 + z2*z4 + z1*z5 + z3*z5 + z2*z6 + z4*z6 -pols[11] = z1*z3*z4 + z2*z3*z4 + z1*z2*z5 + z2*z3*z5 + z1*z4*z5 + z1*z2*z6 + z1*z3*z6 + z2*z4*z6 + z3*z5*z6 + z4*z5*z6 +pols[11] = z1*z2*z3 + z1*z2*z4 + z1*z3*z5 + z2*z4*z5 + z3*z4*z5 + z2*z3*z6 + z1*z4*z6 + z3*z4*z6 + z1*z5*z6 + z2*z5*z6 pols[10] = z2*z3 + z4*z5 + z1*z6 -pols[9] = z1^2*z2^3*z3*z4 + z1*z2^2*z3^3*z4 + z1^3*z2*z3*z4^2 + z1*z2*z3^2*z4^3 + z1^3*z2^2*z4*z5 + z2^3*z3^2*z4*z5 + z2*z3^3*z4^2*z5 + z1^2*z2*z4^3*z5 + z1*z2^3*z4*z5^2 + z2*z3*z4^3*z5^2 + z2^2*z3*z4*z5^3 + z1*z2*z4^2*z5^3 + z1^3*z2^2*z3*z6 + z1*z2^3*z3^2*z6 + z1*z3^3*z4^2*z6 + z1^2*z3*z4^3*z6 + z1^2*z2^3*z5*z6 + z2^2*z3^3*z5*z6 + z1^3*z4^2*z5*z6 + z3^2*z4^3*z5*z6 + z2^3*z3*z5^2*z6 + z1*z4^3*z5^2*z6 + z1*z2^2*z5^3*z6 + z3*z4^2*z5^3*z6 + z1*z2*z3^3*z6^2 + z1^3*z3*z4*z6^2 + z1^3*z2*z5*z6^2 + z3^3*z4*z5*z6^2 + z2*z3*z5^3*z6^2 + z1*z4*z5^3*z6^2 + z1^2*z2*z3*z6^3 + z1*z3^2*z4*z6^3 + z2*z3^2*z5*z6^3 + z1^2*z4*z5*z6^3 + z1*z2*z5^2*z6^3 + z3*z4*z5^2*z6^3 +pols[9] = z1^3*z2^2*z3*z4 + z1*z2^3*z3^2*z4 + z1*z2*z3^3*z4^2 + z1^2*z2*z3*z4^3 + z1^2*z2^3*z4*z5 + z2^2*z3^3*z4*z5 + z1^3*z2*z4^2*z5 + z2*z3^2*z4^3*z5 + z2^3*z3*z4*z5^2 + z1*z2*z4^3*z5^2 + z1*z2^2*z4*z5^3 + z2*z3*z4^2*z5^3 + z1^2*z2^3*z3*z6 + z1*z2^2*z3^3*z6 + z1^3*z3*z4^2*z6 + z1*z3^2*z4^3*z6 + z1^3*z2^2*z5*z6 + z2^3*z3^2*z5*z6 + z3^3*z4^2*z5*z6 + z1^2*z4^3*z5*z6 + z1*z2^3*z5^2*z6 + z3*z4^3*z5^2*z6 + z2^2*z3*z5^3*z6 + z1*z4^2*z5^3*z6 + z1^3*z2*z3*z6^2 + z1*z3^3*z4*z6^2 + z2*z3^3*z5*z6^2 + z1^3*z4*z5*z6^2 + z1*z2*z5^3*z6^2 + z3*z4*z5^3*z6^2 + z1*z2*z3^2*z6^3 + z1^2*z3*z4*z6^3 + z1^2*z2*z5*z6^3 + z3^2*z4*z5*z6^3 + z2*z3*z5^2*z6^3 + z1*z4*z5^2*z6^3 pols[8] = z1^2*z2^2*z3*z4 + z1*z2*z3^2*z4^2 + z2^2*z3^2*z4*z5 + z1^2*z2*z4^2*z5 + z1*z2^2*z4*z5^2 + z2*z3*z4^2*z5^2 + z1*z2^2*z3^2*z6 + z1^2*z3*z4^2*z6 + z1^2*z2^2*z5*z6 + z3^2*z4^2*z5*z6 + z2^2*z3*z5^2*z6 + z1*z4^2*z5^2*z6 + z1^2*z2*z3*z6^2 + z1*z3^2*z4*z6^2 + z2*z3^2*z5*z6^2 + z1^2*z4*z5*z6^2 + z1*z2*z5^2*z6^2 + z3*z4*z5^2*z6^2 pols[7] = z1^3*z2^2*z4 + z1^2*z3^3*z4 + z1*z2^3*z4^2 + z1^3*z3*z4^2 + z1^2*z2*z4^3 + z1*z3^2*z4^3 + z1^2*z2^3*z5 + z1^3*z3^2*z5 + z1^3*z2*z5^2 + z1*z3^3*z5^2 + z1*z2^2*z5^3 + z1^2*z3*z5^3 + z3^3*z4^2*z6 + z2^2*z4^3*z6 + z2^3*z5^2*z6 + z3^2*z5^3*z6 + z2^3*z4*z6^2 + z3*z4^3*z6^2 + z3^3*z5*z6^2 + z2*z5^3*z6^2 + z3^2*z4*z6^3 + z2*z4^2*z6^3 + z2^2*z5*z6^3 + z3*z5^2*z6^3 -pols[6] = z1*z3*z4 + z1*z2*z5 + z2*z4*z6 + z3*z5*z6 +pols[6] = z1*z2*z4 + z1*z3*z5 + z3*z4*z6 + z2*z5*z6 +pols[5] = z1*z2*z3 + z2*z4*z5 + z3*z4*z5 + z2*z3*z6 + z1*z4*z6 + z1*z5*z6 +pols[4] = z1^2*z3 + z2^2*z4 + z3^2*z5 + z1*z5^2 + z4^2*z6 + z2*z6^2 +pols[3] = z1*z2 + z2*z3 + z3*z4 + z4*z5 + z1*z6 + z5*z6 +pols[2] = z1^3*z2^2*z4 + z1*z2^3*z4^2 + z1^2*z2*z4^3 + z1^3*z3^2*z5 + z1*z3^3*z5^2 + z1^2*z3*z5^3 + z3^3*z4^2*z6 + z2^3*z5^2*z6 + z3*z4^3*z6^2 + z2*z5^3*z6^2 + z3^2*z4*z6^3 + z2^2*z5*z6^3 +pols[1] = z1^2*z2 + z2^2*z3 + z3^2*z4 + z4^2*z5 + z5^2*z6 + z1*z6^2 +pols[0] = z1^2*z2*z3 + z2*z3*z4^2 + z3^2*z4*z5 + z1*z2^2*z6 + z1*z5^2*z6 + z4*z5*z6^2 |