---
format:
  html:
    html-math-method: katex
---


A Game of Permutations, Part 3: With Apologies to H.S.M. Coxeter
================================================================

This post assumes you have read the [first post](), which talks about swap diagrams and the symmetric group. The section about Cayley graphs from the [second post]() will also be useful.

To summarize, a swap diagram is a graph where each vertex represents a list index and each edge represents the permutation which swaps the two entries. I singled out three graph families for their symmetry:

- Paths, which link adjacent swaps
- Stars, in which all swaps are "adjacent" to a distinguished index
- Complete graphs, which contain all possible swaps

Swap diagrams provide a great deal of intrigue, but are ultimately limited by only being able to contain 2-cycles. If we wanted to include higher-order elements, we'd require a weaker mathematical structure called a [hypergraph](https://en.wikipedia.org/wiki/Hypergraph). These are even more difficult to draw than simple graphs, much less understand.

Another way we are limited is in the kinds of groups which can be encoded. One rather quickly brushes up with the limitation that swap diagrams can only generate symmetric groups and direct products thereof. Also, while edges are members of a generating set, the vertices contain information which is ultimately irrelevant to the group.


Upgrading Diagrams
------------------

What if we forgot the role of the vertices, allowed the role of the edges to take its place? Ideally, we'd still like to preserve some information about coincident edges. Graph-theoretically, we can elevate the role of the edges to that of the vertices by making a [line graph](https://en.wikipedia.org/wiki/Line_graph). This produces a new graph such that vertices in the new graph are connected if the edges they correspond to in the old graph share a vertex (i.e., are adjacent). In other words, it converts edge adjacency to vertex adjacency.

The line graph of a swap diagram results in a graph where the vertices are the 2-cycles. In a swap diagram, when two distinct 2-cycles share an index (vertex), their product has order 3. Thus, in the line graph, the edges mean that the product of the two vertices has order 3. Non-adjacent vertices still have a product with order 2, since they represent disjoint 2-cycles.

::: {}
![]()
While line graphs of paths simply shrink, $\bigstar_5$ shrinks to $K_4$ before expanding to $K_{2,2,2}$
:::

To push the group-graph correspondence the furthest it can go, we can impose a final restriction. Namely, an induced subgraph (a subset of vertices and all edges whose endpoints are in this subset) must represent a (proper) sub*group*. This way, graphs have observable layers which tie neatly in with layers of group. Unfortunately, this disqualifies many of the line graphs of swap diagrams. At least beloved paths are left untouched, since $L(P_n) = P_{n-1}$.

As it turns out, these restrictions are significant and produce some very deep mathematical objects, known as *Coxeter diagrams* (named for the same Coxeter as in [Goldberg-Coxeter]()).

In this domain, the aforementioned rules about vertices and edges apply: each vertex corresponds to an order 2 element and each edge signifies that the product of two elements has order 3. Furthermore, *disconnected* vertices correspond to elements which commute with one another, just like disjoint 2-cycles. However, each vertex need not correspond to a single 2-cycle, and can instead be *any* element of order 2, i.e., a product of disjoint 2-cycles.

The most important Coxeter diagrams can be seen below. The $A_n$ diagrams are just the familiar path graphs.

::: {}
<figure class="wp-block-image size-full">
<a title="Rgugliel, CC BY-SA 3.0 <https://creativecommons.org/licenses/by-sa/3.0>, via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File:Finite_coxeter.svg#/media/File:Finite_coxeter.svg"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Finite_coxeter.svg/600px-Finite_coxeter.svg.png" style="background-color:white !important; border-radius: 5px; padding: 5px;" alt="Finite coxeter.svg"></a>
<figcaption>
Some important Coxeter diagrams
<br>
Source: Rgugliel, via Wikimedia Commons
</figcaption>
</figure>
:::

Coxeter diagrams also allow one to describe higher-order products by labelling the edge. For example, the product between $(1 ~ 2)(3 ~ 4)$ and $(2 ~ 3)$ has order 4. Therefore, to make $B_2$, we draw two  vertices (for these elements) and connect them with an edge labelled "4". Unlabelled edges still have order 3.


How Big and What Shape?
-----------------------

We know how big the group a swap diagram generates. For each connected component with n vertices, we generate the group $S_n$. They combine via the direct product to give a group of order

$$
\left | \prod_i S_{n_i} \right | = \prod_i | S_{n_i} | = \prod_i n_i!
$$

Removing an edge from a swap diagram will either leave the graph connected or disconnected. The latter case splits the graph into two parts, which map to $S_m$ and $S_n$. This tells us that $S_m \times S_n$ embeds in $S_{m+n}$, which on a Cayley table would appear as catty-cornered boxes.

The subgroup restriction makes Coxeter diagrams a lot more sensitive to changes. We at least know that if we remove a vertex, the resulting diagram is a subgroup of the whole diagram. What we need is some way to measure the effect this has on the rest of the group.


### Coxeter-Todd Algorithm

The procedure for creating Cayley graphs contains a fragment of what we need. Namely, we convert products between group generators to paths in a graph. In this case, our generators are the vertices of the Coxeter diagram.

This procedure is known as the [*Coxeter-Todd algorithm*](https://en.wikipedia.org/wiki/Todd%E2%80%93Coxeter_algorithm). Let's apply the algorithm to the diagram $A_3$. First, we need to label our generators. Then, if we select a select a vertex to remove, we create a graph according to the following steps:


#### 1. Initialization

Like in a Cayley graph, where we start out with a single vertex representing the identity, we also start off with a single vertex. It corresponds to the subdiagram formed by removing the Coxeter vertex being considered. In the future, I will distinguish between graphs by calling vertices (or edges) in the Coxeter diagram "generators".

For each of the generators in the subdiagram, we attach loops to the vertex. This is because the subgroup is closed -- when we multiply the set of all elements of the subgroup by any of its elements, it doesn't change the set. In other words, $hH = H, h \in H$.

The remaining vertex doesn't have this property, so we draw an edge connecting to a new vertex, which represents a new set of elements. These "sets" are cosets of the group, that is, disjoint partitions of the (groups corresponding to the) whole diagram by the subdiagram.

::: {}
![]()
Left: the Coxeter diagram $A_3$ <br>
Right: the first step of generating a graph from removing vertex *a*. The *bc* subdiagram is represented by the vertex with the *b* and *c* loops.
:::

Notably, all loops and edges we draw will be undirected, since all generators have order 2. Performing the same operation twice just takes us back to where we started.


#### 2. Loop Transference

At the new vertex, we transfer over every loop whose label is not connected to the label of the edge. This is due to the rule that the product of non-adjacent generators has order 2. The generators are said to *commute*, since $acac = (ac)^2 = id = a^2 c^2$. In the graph, this means we can follow the path acac and see that we don't end up going anywhere.

![]()


#### 3. Extension, Branching, and Rejoining

Adjacent Coxeter vertices have a product whose order is the label (*n*) on the edge connecting them (defaulting to 3 for unlabelled ones). This means we need to form a path alternating between the two generators, such that following it would loop back to the vertex we started at. That is,

$$
(ab)^n = \stackrel{n \text{ times}}{\overbrace{(ab)(ab) ... (ab)(ab)}} = id
$$

::: {}
![]()
Attaching a loop so that $ababab = id$
:::

If the Coxeter diagram branches, then so does the graph. But the labels of pairs of branches have a product with a certain order, so following a path which alternates between them must return to the same vertex. This ends up including even-sided polygons in our graph; even since it alternates between the two labels *n* times. Commuting vertices form either a square or a pair of loops connected by an edge. The latter is actually a special case of the former, which can be seen by folding the square in half.

::: {}
![]()
Top: two nonadjacent vertices form a square <br>
Bottom: two adjacent vertices form a hexagon
:::


#### 4. Finalization

If we ensure at each new vertex that we can follow a valid path for every pair of generators, then this process either terminates or continues indefinitely. A quick sanity check on the resulting graph is to add the number of loops and the number of edges at at a vertex. The sum should be the number of generators.

::: {}
![]()
Final graph to the middle right. The ***ab*** and ***bc*** paths are shown above and below.
:::

As stated earlier, each vertex in the graph corresponds to a coset of the group under the subgroup being considered. The number of cosets is what we were after the whole time: the index of the subgroup. In this case, the index of the three-vertex diagram ($A_3$) on the two-vertex diagram ($A_2$, the same diagram without *a*) is 4.


### Results

We can remove vertices one-by-one until we eventually reduce the graph to a single vertex, which we know has order 2. Multiplying all of the indices at each stage together gives us the order of the group we are after.

::: {}
![]()
Coxeter diagrams (right) and the graph generated by removing the a vertex (left). <br>
Permutations shown above vertices which give a permutation group embedding.
:::

It is readily shown that the group generated by $A_3$ has order $4 \cdot 3 \cdot 2 = 24$, which coincides with the order of $S_4$. We can assign a permutation to each of our generators, so long as the edge condition as it relates to their product is obeyed. In the diagrams above, $(1 ~ 2)$ and $(2 ~ 3)$ have a product of order 3, but $(1 ~ 2)$ and $(3 ~ 4)$ have a product of order 2, since the cycles (and in the diagram, the vertices) are disjoint. This entire argument nicely generalizes to higher $A_n$.


Other Diagrams for $A_3$
------------------------

A path is hardly the most interesting diagram. However, there are yet more graphs which can be produced from $A_3$.


### Starting in the Middle

Selecting either endpoint of the diagram (vertex *a* or *c*) will generate the same vertex as shown above. This is easy to see if you read the graph from right-to-left rather than left-to-right. However, the center point *b* has two neighbors. If we try generating a graph by removing this vertex, our graph branches.

![]()

The index of 6 given by this graph is still correct, since $A_1 A_1$ has an order of $2 \cdot 2 = 4$. This diagram also shows us a bit of the [Klein four-group](https://en.wikipedia.org/wiki/Klein_four-group) within $S_4$, corresponding to $A_1 A_1$.


### Removing Multiple Vertices

We can actually remove more than one vertex from the Coxeter diagram at once, as long as we follow all the rules. Instead, the initial vertex in the new graph has fewer loops and more than one outward edge. If we remove both vertices in $A_2$, we end up with a hexagon.

::: {}
![]()
Graph generated by removing vertices a and b from $A_2$. All starting vertices in the graph to the right are equivalent.
:::

Similarly, removing two vertices from $A_3$ produces a figure with squares and hexagons:

::: {}
![]()
Graph generated by removing any two vertices from $A_3$. <br>
The top diagram starts from either of the bottom two vertices with a c loop. <br>
The middle diagram starts from either the leftmost or rightmost vertex, which both have a b loop. <br>
The bottom diagram starts from either of the top two vertices with an a loop
:::

Hopefully, a figure composed of squares and hexagons sounds familiar. Recalling permutahedra, the truncated octahedron also contains only squares and hexagons and is generated by $S_4$. In fact, the figure above is the truncated octahedron folded in half. In this case, the "half" comes from the single remaining vertex in the Coxeter diagram having order 2. Consequently, the number of vertices in the graph must be half that of the whole group (or complete permutahedron). In this way, the Cayley graph can be thought of as a sort of "limiting" graph of the Coxeter diagram, where each coset contains only a single element.


The Traditional Explanation
---------------------------

I must now admit that that I have not given anywhere near the whole explanation of Coxeter diagrams, and have only succeeded in leading us down the proverbial algebraic rabbit hole.

Coxeter diagrams also come equipped with a standard geometric interpretation. The "order 2 elements" we discussed previously are replaced with mirrors, and the edge labels are the angle between mirrors, interpreted as half of the central angle of a regular *n*-gon (digon: 90°, triangle: 60°, square: 45°, ...).

::: {}
<figure class="wp-block-image size-full">
<a title="Tomruen, CC BY-SA 4.0 <https://creativecommons.org/licenses/by-sa/4.0>, via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File:Dihedral_symmetry_domains_3.png"><img width="192" alt="Dihedral symmetry domains 3" src="https://upload.wikimedia.org/wikipedia/commons/e/e2/Dihedral_symmetry_domains_3.png"></a>
<figcaption>
Fundamental domains of Coxeter diagram <img src="https://zenzicubi.cowp-content/uploads/2022/05/coxeter-3.png" alt="" class="wp-image-2451" width="32" height="16" style="vertical-align: middle"><br>
Source: Tomuren, via Wikimedia Commons
</figcaption>
</figure>
:::

The image to the left is composed of the mirrors specified by $A_2$. One of the vertices is the red reflection and the other vertex is the the green reflection. It is clear that alternating between red and green three times will take one back to where they started, just like the algebra tells us.

All of the plane ends up assigned to one of the domains. Note also that points along mirrors which are equidistant from the center form a hexagon made up of six equilateral triangles, one in each domain.

$A_3$ has an additional vertex and edge. This means that an additional mirror needs to be placed in along every preexisting reflection. We end up reflecting into another dimension, and our domains echo out into space. It is easier to imagine the additional domains by rotating two of the axes around each other, so that the pairs will join together into equilateral triangular "cones".

::: {}
![]()
Mirror axes in 3D for $A_3$. The red, green, and blue lines all lie within the same plane, and correspond to $A_2$. The cyan line is perpendicular to the red one, and is formed by rotating either green about blue or blue about green by 60°.
:::

While in 2D, equidistant points form a hexagon, in 3D, the points form a cuboctahedron. Connecting the triangular faces of the cuboctahedron to the origin gives a family of eight tetrahedra meeting at a point. At this point the reflections become clearer, since certain reflections do the same thing as in the plane above, while others will "double" a tetrahedron.

:::: {}
::: {}
![]()
:::

::: {}
![]()
:::
Left: Cuboctahedron <br>
Right: Six of the eight tetrahedra formed by connecting equidistant points ("roots") to the origin. <br>
Note how whole tetrahedra are reflected in a line.
::::

Personally, I think the geometric way of thinking becomes very difficult in 3D. Every axis needs its own rotation, which is simple enough. But we're trying to create infinite cones of symmetry domains in 3D space, and we only have a 2D screen with which to attempt interacting. We'll certainly run out of room if we want to go to 4D space. Also, while the angle between two mirrors is 60°, I find it easy to slip into thinking about the dihedral angle between two faces (domains) of the cones, which is *not* 60°.


Closing
-------

When I initially wrote the article about swap diagrams (a name I hadn't given them at the time) I had no idea about how close I was to understanding something I didn't at the time. Now knowing better, I split the article and pushed the basics a little harder. I find it interesting how Coxeter diagrams are so close to swap diagrams, but, at the cost of simplicity, enable the ability to encode higher-order cycles and give rise to exceptional mathematical objects.

It was difficult for me to find information documenting how to understand the algebraic perspective. It also bears mentioning that I know very little about Lie Theory, another field of math where Coxeter diagrams turn up. When I finally found a group theory video by [Professor Richard Borcherds](https://www.youtube.com/watch?v=BHezLvEH1DU), I was dismayed that there seems to be even less material online which depicts the coset graphs. I have written [an appendix]() cataloguing some graphs that appear when applying the Coxeter-Todd algorithm, since I believe they are interesting in their own right.

Images from Wikimedia belong to their respective owners. All other diagrams created with GeoGebra.
