summaryrefslogtreecommitdiffstats
path: root/divers/sageries/sous-groupes-s6
blob: a8a1cc6864110f1c262236212d7d970429de418a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
s6 = SymmetricGroup(6)
tuplegens = [[[(1, 4), (2, 3), (5, 6)], [(1, 5, 3), (2, 6, 4)]], [[(1, 4), (2, 5), (3, 6)], [(1, 5, 3), (2, 6, 4)]], [[(2, 5), (3, 6)], [(1, 4), (2, 5)], [(1, 6, 5), (2, 4, 3)]], [[(2, 6), (3, 5)], [(1, 4), (2, 5), (3, 6)], [(1, 5, 3), (2, 6, 4)]], [[(2, 6, 4)], [(1, 4), (2, 5), (3, 6)], [(1, 5, 3)]], [[(3, 6)], [(2, 5)], [(1, 4)], [(1, 6, 5), (2, 4, 3)]], [[(2, 3), (5, 6)], [(2, 5), (3, 6)], [(1, 4), (2, 5)], [(1, 6, 5), (2, 4, 3)]], [[(2, 5), (3, 6)], [(2, 6, 5, 3)], [(1, 4), (2, 5)], [(1, 6, 5), (2, 4, 3)]], [[(2, 6, 4)], [(2, 6), (3, 5)], [(1, 4), (2, 5), (3, 6)], [(1, 5, 3)]], [[(2, 6, 4)], [(2, 6), (3, 5)], [(1, 4), (2, 3, 6, 5)], [(1, 5, 3)]], [[(3, 6)], [(2, 3), (5, 6)], [(2, 5)], [(1, 3, 5), (2, 4, 6)], [(1, 4)]], [[(1, 4), (2, 6)], [(1, 5, 3, 4, 6)]], [[(4, 6)], [(3, 5)], [(2, 6, 4)], [(1, 4), (2, 5), (3, 6)], [(1, 5, 3)]], [[(2, 3, 4, 6)], [(1, 2, 3, 6, 4)], [(1, 6), (4, 5)]], [[(2, 6, 4)], [(1, 5, 3, 4, 2)]], [[(1, 2, 3, 4, 5, 6)], [(1, 2)]]]
groups = [s6.subgroup(l) for l in tuplegens]
a6 = [h for h in groups if h.order()==360][0]
groupdesc = [(h.order(), gap.StructureDescription(h), h.is_subgroup(a6), s6.order()/s6.normalizer(h).order()) for h in groups]
alsocontains = [(4, 0), (11, 2), (13, 2), (13, 7)]
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):
        if gap.IsSubgroup(x,h):
            return True
    return False

# 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 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*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] = z1*z4 + z2*z5 + z3*z6
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*z3 + z1*z2^3*z3^2 + z1^2*z2*z3^3 + z2^2*z3^3*z4 + z2^3*z3*z4^2 + z2*z3^2*z4^3 + z1^3*z3^2*z5 + z3^3*z4^2*z5 + z1*z3^3*z5^2 + z3*z4^3*z5^2 + z1^2*z3*z5^3 + z3^2*z4*z5^3 + z1^2*z2^3*z6 + z2^2*z4^3*z6 + z1^3*z5^2*z6 + z4^2*z5^3*z6 + z1^3*z2*z6^2 + z2^3*z4*z6^2 + z4^3*z5*z6^2 + z1*z5^3*z6^2 + z1*z2^2*z6^3 + z2*z4^2*z6^3 + z1^2*z5*z6^3 + z4*z5^2*z6^3
pols[6] = z1*z2*z3 + z3*z4*z5 + z2*z4*z6 + z1*z5*z6
pols[5] = z1*z2*z4 + z2*z3*z5 + z1*z4*z5 + z1*z3*z6 + z3*z4*z6 + z2*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*z3 + z1*z2^3*z3^2 + z1^2*z2*z3^3 + z3^3*z4^2*z5 + z3*z4^3*z5^2 + z3^2*z4*z5^3 + z2^2*z4^3*z6 + z1^3*z5^2*z6 + z2^3*z4*z6^2 + z1*z5^3*z6^2 + z2*z4^2*z6^3 + z1^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