\( \newcommand\al{\alpha} \newcommand\be{\beta} \newcommand\de{\delta} \newcommand\De{\Delta} \newcommand\eps{\epsilon} \newcommand\ga{\gamma} \newcommand\Ga{\Gamma} \newcommand\ka{\kappa} \newcommand\la{\lambda} \newcommand\La{\Lambda} \newcommand\om{\omega} \newcommand\Om{\Omega} \newcommand\sg{\sigma} \newcommand\Sg{\Sigma} \renewcommand\th{\theta} %--- Latex uses \th for a Norse character \newcommand\Th{\Theta} \newcommand\vphi{\varphi} % % some calligraphy % \newcommand\cA{{\mathcal A}} \newcommand\cB{{\mathcal B}} \newcommand\cC{{\mathcal C}} \newcommand\cD{{\mathcal D}} \newcommand\cE{{\mathcal E}} \newcommand\cF{{\mathcal F}} \newcommand\cG{{\mathcal G}} \newcommand\cH{{\mathcal H}} \newcommand\cI{{\mathcal I}} \newcommand\cJ{{\mathcal J}} \newcommand\cK{{\mathcal K}} \newcommand\cL{{\mathcal L}} \newcommand\cM{{\mathcal M}} \newcommand\cN{{\mathcal N}} \newcommand\cO{{\mathcal O}} \newcommand\cP{{\mathcal P}} \newcommand\cQ{{\mathcal Q}} \newcommand\cR{{\mathcal R}} \newcommand\cS{{\mathcal S}} \newcommand\cT{{\mathcal T}} \newcommand\cU{{\mathcal U}} \newcommand\cV{{\mathcal V}} % % fields and rings (and a semigroup) % \newcommand\cx{{\mathbb C}}% complexes \newcommand\fld{{\mathbb F}} \newcommand\flde{{\mathbb E}} \newcommand\ints{{\mathbb Z}} \newcommand\nn{{\mathbb N}}%non-negative integers \newcommand\re{{\mathbb R}}%reals \newcommand\rats{{\mathbb Q}} % % the really useful stuff % \newcommand\comp[1]{{\mkern2mu\overline{\mkern-2mu#1}}} \newcommand\diff{\mathbin{\mkern-1.5mu\setminus\mkern-1.5mu}}% for \setminus \newcommand\res{\mathbin{\mkern-2.0mu\restriction\mkern-2.0mu}} \newcommand\sbs{\subseteq} \newcommand\sps{\supseteq} \newcommand\seq[3]{#1_{#2},\ldots,#1_{#3}} \DeclareMathOperator{\supp}{supp} \DeclareMathOperator{\im}{im} \DeclareMathOperator{\row}{row} \newcommand\pmat[1]{\begin{pmatrix} #1 \end{pmatrix}} \newcommand\cprod{\mathbin{\square}} \newcommand\gbin[2]{\genfrac{[}{]}{0pt}{}{#1}{#2}} % % matrix theory % \newcommand\ip[2]{\langle#1,#2\rangle} \newcommand\one{{\bf1}} \DeclareMathOperator{\rk}{rk} \DeclareMathOperator{\tr}{tr} \DeclareMathOperator{\col}{col} \newcommand\mat[3]{\mathrm{Mat}_{#1\times #2}(#3)} \newcommand\sm[3]{\sum_{#1=#2}^{#3}} % % some group theory % \newcommand\aut[1]{{\rm Aut}(#1)} \newcommand\fx[1]{{\rm fix}(#1)}% ch2 \newcommand\grp[1]{\langle #1\rangle} \newcommand\nrml{\vartriangleleft} \newcommand\nrmleq{\trianglelefteq} \DeclareMathOperator{\Sym}{Sym} \newcommand\sym[1]{\Sym(#1)} \DeclareMathOperator{\Alt}{Alt} \newcommand\alt[1]{\Alt(#1)} \)

Section3.3The 600-Cell

It's a wikifact that if \(f:=(1+\sqrt{5})/2\), then the vertices of a 600-cell centered at the origin of 4-space with edges of length \(1/f\) can be given as follows:

  1. 16 vertices of the form
    \[\frac12(\pm1,\pm1,\pm1,\pm1)\]
  2. 8 vertices obtained from all permutations of the coordinates of
    \[(\pm1,0,0,0)\]
  3. 96 vertices obtained by taking all even permutations of
    \[\frac12\left(\pm1,\pm f,\pm f^{-1},0\right).\]

The first step is produce a \(120\times 4\) matrix \(U\) with these vectors its rows. The game is to do this without using a for-loop. We set up our background,

So we work with quaternions over \(\rats(f)\), where \(f\) is a zero of \(f^2-f-1\). Due to an unfortunate feature of Python, we must remember now never to use \(i\) or \(j\) or \(k\) as an index in a list comprehension. If we evaluate [i^2 for i in [1..5]] the value of \(i\) becomes \(5\) once complete.

Now we create \(U\).

The best we can say for the above code is that it works. Interestingly enough, the columns of \(U\) are orthogonal since \(U^TU =30I\).

Two vectors are adjacent in the 1-skeleton if their inner product is \(1/f\).

We compute the orbits of the vertex stabilizer of \(\aut{DC}\).

We convert the rows of \(U\) to quaternions.

The reduced trace of a quaternion \(q\) is \(q+q^*\), in other words it is twice its real part. The multiplicative order of a quaternion is determined by its real trace. We compute a partition of \(qu\) according to the reduced trace.

Comparing the number of quaternions with given reduced trace with the sizes of the orbits of the vertex stabilizer, suggests that the two partitions are equal. You should verify this. You should also verify that the multiplicative order of an element of qu is determined by its reduced trace. (Use qq.order().) In particular the quaternions with reduced trace \(f\) or \(1-f\) have order 10. The quaternions in qu form a multiplicative group isomorphic to \(SL(2,5)\). You can access this group in Sage by

The 600-cell is a Cayley graph for this group with a connection set consisting of a conjugacy class of elements of order 10. There are two such conjugacy classes, one formed by the elements with reduced trace \(f\) and the other consisting of the elements of reduced trace \(1-f\). We show now that the Cayley graph with respect to the first of these conjugacy classes is isomorphic to \(DC\), you should verify that the second is.

and now

The quaternion

\[th = (-1/2) + 1/2*i + 1/2*j + 1/2*k\]
has order three and its orbits on \(DC\) are cocliques. The quotient over its orbits is a graph on 40 vertices which, like DC, is locally an icosahedron. We confirm the last claim: