summaryrefslogtreecommitdiffstats
path: root/divers/sageries
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2011-12-14 21:08:03 +0100
committerDavid A. Madore <david+git@madore.org>2011-12-14 21:08:03 +0100
commit12e2fb62bbebba2196722858a9e8af62abbcbc60 (patch)
treefe36808970d4e6cc1bd3cab7cc549054afbb4e38 /divers/sageries
parent83e08e0392cb6055f8a11b7bd06937f80e3bdc23 (diff)
downloadgalois-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/sageries')
-rw-r--r--divers/sageries/sous-groupes-s656
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