File:Higman-Sims-01.svg

Summary

Description
English: A representation of the Higman–Sims graph as an orthogonal projection from a subset of the Leech lattice emphasizing a rotational symmetry of order 11. (There are 11 possible such projections if we require all 22 points connected to the center point to form a regular 22-gon around it.)
Français : Une représentation du graphe de Higman–Sims comme projection orthogonale d'un sous-ensemble du réseau de Leech mettant en évidence une symétrie rotationnelle d'ordre 11. (Il y a 11 telles projections possibles si on impose aux 22 points reliés au point central de former un 22-gone régulier autour de lui.)
Date
Source Own work
Author Gro-Tsen

Source code

The following Sage source code can be used to generate the graph data for this file and the similarly named ones (the actual SVG files were generated by postprocessing this output with a simple Perl script, not listed here).

m24 = MathieuGroup(24)
lst = m24.conjugacy_classes_representatives()
elt = ([x for x in lst if x.order()==11])[0]
fixthis = Permutation(elt).fixed_points()
octad0 = ([Permutation(x).fixed_points() for x in lst if x.order()==2 and len(Permutation(x).fixed_points())==8])[0]
octads = gap.Orbit(gap(m24), octad0, "OnSets").sage()
octads22 = [o for o in octads if fixthis[0] in o and fixthis[1] in o]
pointP = (QQ^24)([4 if i+1 in fixthis else 0 for i in range(24)])
pointsQ = [(QQ^24)([-3 if i==k else 1 for i in range(24)]) for k in range(24) if not k+1 in fixthis]
pointsR = [(QQ^24)([2 if i+1 in o else 0 for i in range(24)]) for o in octads22]
hsGraph = [pointP] + pointsQ + pointsR
melt = elt.matrix()

def sqnorm(v):
    return sum([x*x for x in v])

adjacency = [[i for i in range(i0) if sqnorm(hsGraph[i]-hsGraph[i0])==48] for i0 in range(100)]

def chop(v):
    if abs(v)<1.e-9:
        return 0
    return v

p = sum([melt^i*N(exp(-2*I*i*pi/11)) for i in range(11)])/11
def writeit(twist, fname):
    v = p * (CC^24)([1 if i==0 else N(exp(twist*I*pi/11)) if i==1 else 0 for i in range(24)])
    va = (RR^24)([v[i].real() for i in range(24)])
    vb = (RR^24)([v[i].imag() for i in range(24)])
    t = va.norm()
    v /= t
    va /= t
    vb /= t
    coords = [(va*pt, vb*pt) for pt in hsGraph]
    fd = open(fname, "w")
    for i0 in range(100):
        for i in adjacency[i0]:
            print >>fd, "line", (chop(coords[i0][0]), chop(coords[i0][1])), (chop(coords[i][0]), chop(coords[i][1]))
    for pt in coords:
        print >>fd, "point", (chop(pt[0]), chop(pt[1]))
    fd.close()

for i in range(1,22,2):
    writeit(i, "/tmp/hs%02d.dat"%i)

Licensing

Public domain I, the copyright holder of this work, release this work into the public domain. This applies worldwide.
In some countries this may not be legally possible; if so:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.
Category:Self-published work#Higman-Sims-01.svgCategory:PD-self#Higman-Sims-01.svg Category:Higman-Sims Graph Category:Images with Sage source code Category:Conjugacy class
Category:Conjugacy class Category:Created with SageMath Category:Higman-Sims Graph Category:Images with Sage source code Category:PD-self Category:Self-published work