diff --git a/posts/permutations/1/index.qmd b/posts/permutations/1/index.qmd
new file mode 100644
index 0000000..d158f9d
--- /dev/null
+++ b/posts/permutations/1/index.qmd
@@ -0,0 +1,269 @@
+---
+format:
+ html:
+ html-math-method: katex
+---
+
+
+A Game of Permutations, Part 1: Basics
+======================================
+
+In the time since [my last post]() discussing graphs, I have been spurred on to continue playing with them, with a slight focus on abstract algebra. This post will primarily focus on some fundamental concepts before launching into some constructions which will make the journey down this road more manageable. However, I will still assume you are already familiar with what both a [group](https://mathworld.wolfram.com/Group.html) and a [graph](https://mathworld.wolfram.com/Graph.html) are.
+
+
+The Symmetric Group
+-------------------
+
+Some of the most important finite groups are the symmetric group of degree *n* ($S_n$). They are the groups formed by permutations of lists containing *n* elements. There is a group element for each permutation, so the order of the group is the same as the number of permutations, $n!$.
+
+Note: Since both lists and groups consist of "elements", I will do my best to refer to objects in a group as "group elements" and the objects in a list as "items".
+
+There are many ways to denote elements of the symmetric group. I will take the liberty of explaining some common notations, each of which are useful in different ways. More information about them can be found [elsewhere](https://mathworld.wolfram.com/Permutation.html) [online](https://en.wikipedia.org/wiki/Permutation#Notations) as well as any adequate group theory text.
+
+
+Naive List Notation
+-------------------
+
+Arguably the simplest way to do things is just apply the permutation to the list $[1, 2, 3]$. Take the element of $S_3$ which can be described as the action "assign the first item to the second index, the second to the third, and the third to the first". When applied to our list, it results in $[3, 1, 2]$, since "1" is in position 2, and similarly for the other items.
+
+The problem is that this choice is too results-oriented. We can't compose group elements in a meaningful way since all of the information about the permutation is in the position of items in the list, rather than the items of the list themselves.
+
+
+True List Notations (One- and Two-line Notation)
+------------------------------------------------
+
+Therefore, we do the opposite. We instead denote an element of the group by a list of (1-based) indices. The *n*th item in the list describes the position in which *n* can be found after the element acts on a list. Using the same example as previous, we obtain the list $[\![2, 3, 1]\!]$, using double brackets to express that it is a permutation. The first item "2" describes the destination of 1, and similarly for the other items.
+
+This is known as "one-line notation". By using it, it is straightforward to encode symmetric group elements on a computer. After all, we only have to read the items of a list by the indices in another. Here's a compact definition in Haskell:
+
+
+```{haskell}
+-- convenient wrapper type for below
+newtype Permutation = P { unP :: [Int] }
+apply :: [a] -> Permutation -> [a]
+apply xs =
+ map ( -- for each item of the permutation, map it to...
+ (xs !!) . -- the nth item of the first list
+ (+(-1)) -- (indexed starting with 1)
+ ) . unP -- (after undoing the wrapping)
+-- written in a non-point free form
+apply' xs (P ys) = map ( \n -> xs !! (n-1) ) ys
+
+print $ [1,2,3] `apply` P [2,3,1]
+```
+
+One-line notation can be made made more explicit by writing the list $[1, 2, 3, ..., n]$ above it, resulting in "two-line notation". A distinct benefit over one-line notation is that we can easily find the inverse of an element. All we have to do is sort the columns of the permutation by the value in the second row, then swap the two rows.
+
+$$
+[\![2, 3, 1]\!]^{-1} =
+\begin{bmatrix}
+1 & 2 & 3 \\
+2 & 3 & 1
+\end{bmatrix}^{-1} =
+\begin{bmatrix}
+3 & 1 & 2 \\
+1 & 2 & 3
+\end{bmatrix}^{-1} =
+\begin{bmatrix}
+1 & 2 & 3 \\
+3 & 1 & 2
+\end{bmatrix} =
+[\![3, 1, 2]\!]
+$$
+
+This also makes clear what the naive notation describes: the inverse of the (true) one-line notation.
+
+
+While lists are great for being explicit and easy to describe for a computer, humans can easily misinterpret them, and mistakenly switch back and forth between naive and true list notation. There is also a lot of redundancy: $[\![2, 1]\!]$ and $[\![2, 3, 1]\!]$ both describe a group element which swaps the first two items of a list. Worst of all, the notation is so explicit that it is group-theoretically unintuitive.
+
+
+Cycle Notation
+--------------
+
+*Cycle notation* addresses all of these issues at the expense of a more complex group operation. Let's try phrasing our earlier element differently. We start at position 1 and follow it to "2". Then, we see that in position 2, we have "3", and in position 3 we have "1". We have just described a *cycle*, since continuing in this manner would go on forever. We denote this cycle as $(1 ~ 2 ~ 3)$.
+
+Cycle notation is much more delicate than list notation, since the notation is nonunique:
+
+- Naturally, the elements of a cycle may be cycled to produce an equivalent expression.
+
+ - $(1 ~ 2 ~ 3) = (3 ~ 1 ~ 2) = (2 ~ 3 ~ 1)$
+
+- Cycles which have no common elements (i.e., are disjoint) commute, since they act on separate parts of the list.
+
+ - $(1 ~ 2 ~ 3)(4 ~ 5) = (4 ~ 5)(1 ~ 2 ~ 3)$
+
+The true benefit of cycles is that they are easy to manipulate algebraically. For some reason, [Wikipedia](https://en.wikipedia.org/wiki/Permutation#Cycle_notation) does not elaborate on the composition rules for cycles, and the text which I read as an introduction to group theory simply listed it as an exercise. While playing around with them and deriving these rules oneself *is* a good idea, I will list the most important here:
+
+- Cycles can be inverted by reversing the order of the indices, and are unchanged by cycling them.
+
+ - $(1 ~ 2 ~ 3)^{-1} = (3 ~ 2 ~ 1) = (1 ~ 3 ~ 2)$
+
+- Cycles may be composed if the last element in the first is the first index on the right. Inversely, cycles may also be decomposed by partitioning it on an index and duplicating.
+
+ - $(1 ~ 2 ~ 3) = (1 ~ 2 )(2 ~ 3)$
+
+- If an index in a cycle is repeated twice, it may be omitted from the cycle.
+
+ - $(1 ~ 2 ~ 3)(1 ~ 3) = (1 ~ 2 ~ 3)(3 ~ 1) = (1 ~ 2 ~ 3 ~ 1) = (1 ~ 1 ~ 2 ~ 3) = (2 ~ 3)$
+
+Going back to $(1 ~ 2 ~ 3)$, if we apply this permutation to the list $[1, 2, 3]$:
+
+$$
+(1 ~ 2 ~ 3) \left( \vphantom{0\over1} [1, 2, 3] \right)
+= (1 ~ 2)(2 ~ 3) \left( \vphantom{0\over1} [1, 2, 3] \right)
+= (1 ~ 2) \left( \vphantom{0\over1} [1, 3, 2] \right)
+= [3, 1, 2]
+$$
+
+Which is exactly what we expected with our naive notation.
+
+
+Generators, Permutation Groups, and Sorting
+-------------------------------------------
+
+Remember that if we have a group G, then we can select a set of elements $\langle g_1, g_2, g_3, ... \rangle$ as *generators*. If we form all possible products -- not only the pairwise ones $g_1 g_2$, but also $g_1 g_2 g_3$ and all powers of any $g_n$ -- then the products form a subgroup of G. Naturally, the set is called the *generating set*.
+
+Symmetric groups are of primary interest because of their subgroups, also known as permutation groups. A fundamental result of group theory, known as [Cayley's theorem](https://en.wikipedia.org/wiki/Cayley%27s_theorem), states that all finite groups are isomorphic to one of these subgroups. This means that we can code effectively any group by using elements of the symmetric group.
+
+For example, consider the generating set $\langle (1 ~ 2) \rangle$, which contains a single element that swaps the first two items of a list. Its square is the identity, meaning that its inverse is itself. The identity and $(1 ~ 2)$ are the only two elements of the generated group, which is isomorphic to $C_2$, the cyclic group of order 2. Similarly, the 3-cycle in the generating set $\langle (1 ~ 2 ~ 3) \rangle$ generates $C_3$, cyclic group of order 3.
+
+However, the generating set $\langle (1 ~ 2), (1 ~ 2 ~ 3)\rangle$, which contains both of these permutations, generates the entirety of $S_3$. In fact, [every symmetric group can be generated by two elements](https://groupprops.subwiki.org/wiki/Symmetric_group_on_a_finite_set_is_2-generated): a permutation which cycles all elements once, and the permutation which swaps the first two elements, i.e., $\langle (1 ~ 2), (1 ~ 2 ~ 3 ~ 4 ~ ... ~ n) \rangle$.
+
+
+### Sorting and 2-Cycles
+
+The proof linked to above, that every symmetric group can be generated by two elements, uses the (somewhat obvious) result that one can produce any permutation of a list by picking two items, swapping them, and repeating until the list is in the desired order.
+
+This is reminiscent of how sorting algorithms are able to sort a list by only comparing and swapping items. As mentioned earlier when finding inverses using in two-line notation, sorting is almost the inverse of permuting.
+
+
+### Bubble Sort
+
+However, not all 2-cycles are necessary to generate the whole symmetric group. Consider [bubble sort](https://en.wikipedia.org/wiki/Bubble_sort), where two elements are swapped when, of two adjacent elements, the latter is less than the former. Until the list is sorted, the algorithm finds all such adjacent inversions. In the worst case, it will swap every pair of adjacent elements, some possibly multiple times, corresponding to the generating set $\langle (1 ~ 2), (2 ~ 3), (3 ~ 4), (4 ~ 5), …, (n-1 ~\ ~ n) \rangle$.
+
+::: {}
+![]()
+Bubble sort ordering a reverse-sorted list
+:::
+
+
+### Selection Sort
+
+Another method, [selection sort](https://en.wikipedia.org/wiki/Selection_sort), searches through the list for the smallest item and swaps it to the beginning. If this is the final item of the list, this results in the permutation $(1 ~ n)$. Supposing that process is continued with the second element and we also want it to swap with the final element, then the next swap corresponds to $(2 ~ n)$. Continuing until the last element, this gives the generating set $\langle (1 ~ n), (2 ~ n), (3 ~ n), (4 ~ n), …, (n-1 ~\ ~ n) \rangle$.
+
+::: {}
+![]()
+Selection sort ordering a particular list, using only swaps with the final element
+:::
+
+Note that this behavior for selection sort is uncommon, and this animation omits the selection of a swap candidate. The animation below shows a more destructive selection sort, in which the least element candidate is placed at the end of the list (position 5). Once the algorithm hits the end of the list, the candidate is swapped to the least unsorted position, and the algorithm continues on the rest of the list.
+
+::: {}
+![]()
+"Destructive" selection sort. The actual list being sorted consists of the initial four items, with the final item as temporary storage.
+:::
+
+
+Swap Diagrams
+-------------
+
+Given a set of 2-cycles, it would be nice to know at a glance if the entire group is generated. At its simplest, a 2-cycle expressed in cycle notation is simply an unordered pair of natural numbers which swap items of an n-list. Similarly, the edges of an undirected graph on n vertices (labelled from 1 to n) may be interpreted as an unordered pair of the vertices it connects.
+
+If we treat the two objects as the same, then we can convert between graphs and sets of 2-cycles. Going from the latter to the former, we start on an empty graph on n vertices (labelled from 1 to n). Then, we connect two vertices with an edge when the set includes the permutation swapping the indices labelled by the vertices.
+
+Returning to the generating sets we identified with sorting algorithms we identify with each a graph family.
+
+- Bubble sort: $\langle (1 ~ 2), (2 ~ 3), (3 ~ 4), (4 ~ 5), …, (n-1 ~~ n) \rangle$
+
+ - The path graphs ($P_n$), which are precisely as they sound: an unbranching path formed by n vertices.
+
+- "Selection" sort: $\langle (1 ~ n), (2 ~ n), (3 ~ n), (4 ~ n), …, (n-1 ~~ n) \rangle$
+
+ - The star graphs ($\bigstar_n$, since $S_n$ means the symmetric group), one vertex connected to all others.
+
+- Every 2-cycle in $S_n$
+
+ - The complete graphs ($K_n$), which connect every vertex to every other vertex.
+
+::: {}
+![]()
+:::
+
+This interpretation of these objects doesn't have proper name, but I think the name "swap diagram" fits. They allow us to answer at least one question about the generating set from a graph theory perspective.
+
+
+### Connected Graphs
+
+A graph is connected if a path exists between all pairs of vertices. The simplest possible path is simply a single edge, which we already know to be an available 2-cycle. The next simplest case is a path consisting of two edges. Some cycle algebra shows that we can produce a third cycle which corresponds to an edge connecting the two distant vertices.
+
+:::: {layout-ncol = "2"}
+::: {}
+![]()
+:::
+
+::: {}
+$$
+\begin{align*}
+&(m ~ n) (n ~ o) (m ~ n) \\
+&= (m ~ n ~ o) (m ~ n) \\
+&= (n ~ o ~ m) (m ~ n) \\
+&= (n ~ o ~ m ~ n) \\
+&= (o ~ m) = (m ~ o)
+\end{align*}
+$$
+Note that this is just the conjugation of $(n ~ o)$ by $(m ~ n)$
+:::
+::::
+
+In other words, if we have have two adjacent edges, the new edge corresponds to the product of elements from the generating set. Graph theory has a name for this operation: when we produce *all* new edges by linking vertices that were separated by a distance of 2, the result is called the *square of that graph*. In fact, [higher graph](https://en.wikipedia.org/wiki/Graph_power) powers will reflect connections induced by more conjugations of adjacent edges.
+
+::: {}
+![]()
+As you might be able to guess, this implies that $(1 ~~ 4) = (3 ~~ 4)(2 ~~ 3)(1 ~~ 2)(2 ~~ 3)(3 ~~ 4)$
+
+Also, $\bigstar_n^2 = K_n$
+:::
+
+If our graph is connected, then repeating this operation will tend toward a complete graph. Complete graphs contain every possible edge, and correspond to all possible 2-cycles, which in turn generate the symmetric group. Conversely, if a graph has *n* vertices, then for it to be connected, it must have at least $n-1$ edges. Thus, a generating set of 2-cycles must have at least $n-1$ items to generate the symmetric group.
+
+Picking a different vertex labelling will correspond to a different generating set. For example, in the image of $P_4$ above, if the edge connecting vertices 1 and 2 is replaced with an edge connecting 1 and 4, then the resulting graph is still $P_4$, even though it describes a different generating set. We can ignore these extra cases entirely -- either way, the graph power argument shows that a connected graph corresponds to a generating set of the whole symmetric group.
+
+
+### Disconnected Graphs
+
+A disconnected graph is the [disjoint union](https://en.wikipedia.org/wiki/Disjoint_union_of_graphs) of connected graphs. Under graph powers, we know that each connected graph tends toward a complete graph, meaning a disconnected graph as a whole tends toward a disjoint union of complete graphs, or [cluster graph](https://en.wikipedia.org/wiki/Cluster_graph). But what groups do cluster graphs correspond to?
+
+The simplest case to consider is what happens when the graph is $P_2 \oplus P_2$. One of the generating sets it corresponds to is $\langle (1 ~ 2), (3 ~ 4) \rangle$, a pair of disjoint cycles. The group they generate is
+
+$$
+\{id, (1 ~ 2), (3 ~ 4), (1 ~ 2)(3 ~ 4) \} \cong S_2 \times S_2 \cong \mathbb{Z}_2 \times \mathbb{Z}_2
+$$
+
+One way to look at this is by considering paths on each component: we can either cross an edge on the first component (corresponding to $(1 ~ 2)$), the second component (corresponding to $(3 ~ 4)$), or both at the same time. This independence means that one group's structure is duplicated over the other's, or more directly, gives the direct product. In general, if we denote $\gamma$ as the map which "runs" the swap diagram and produces the group, then
+
+$$
+\gamma( A \oplus B ) = S_{|A|} \times S_{|B|}, ~ A, B \text{ connected}
+$$
+
+where $|A|$ is the number of vertices in A. Or, if we express a disconnected graph *G* as the disjoint union of its connected components $H_i$
+
+$$
+\begin{gather*}
+G = \bigsqcup_i H_i \\
+\gamma( G ) = \gamma( ~ \bigsqcup_i H_i ~ ) = \prod_i S_{|H_i|}
+\end{gather*}
+$$
+
+Which takes care of every simple graph. While we're rather limited by what kinds of groups can be expressed by a swap diagram, it is rather satisfying that $\gamma$ maps a sum-like object onto a product-like object.
+
+
+Closing
+-------
+
+This concludes the dry introduction to this series of posts discussing some investigations of mine into symmetric groups. I probably could have omitted the sections about permutation notation and generators, but I wanted to be thorough and tie it to concepts which were useful to my understanding. The notion of a graph encoding a generating set in particular will be fairly important going forward.
+
+Originally, this post was half of a single, sprawling article which meandered this way and that. I hope I've improved the organization by keeping the digression about sorting algorithms to this initial article. The next post will cover some interesting structures which can fill Euclidean space and incredibly large graphs.
+
+Sorting and graph diagrams made with GeoGebra.
diff --git a/posts/permutations/2/index.qmd b/posts/permutations/2/index.qmd
new file mode 100644
index 0000000..c50e51f
--- /dev/null
+++ b/posts/permutations/2/index.qmd
@@ -0,0 +1,402 @@
+---
+format:
+ html:
+ html-math-method: katex
+---
+
+
+A Game of Permutations, Part 2: Permutohedra and very large Graphs
+==================================================================
+
+This post assumes you have read (or at least skimmed over parts of) the [first post](), which talks about graphs and the symmetric group. This post will contain some more "empirical" results, since I'm not an expert on graph theory. However, one hardly needs to be an expert to learn or to make computations, observations, and predictions. We left off talking about producing a group from a graph, so we begin now by considering how to do the reverse.
+
+
+Cayley Graphs
+-------------
+
+For a given generating set, we can assign every element in the group it generates to a vertex in a graph. Starting with each of the generators, we draw arrows from one vertex to the other when the product of the initial vertex and a generator (in that order) is the product vertex. If we continue until there are no more arrows to draw, the resulting figure is known as a [Cayley graph](https://mathworld.wolfram.com/CayleyGraph.html).
+
+Owing to the way in which they are generated, Cayley graphs have a few useful properties as graphs. At every vertex, we have as many outward edges as we do generators in the generating set, so the outward (and in fact, inward) degree of each vertex is the same. In other words, it is a regular graph. More than that, it is vertex-transitive, since labelling a single vertex's outward edges will label that of the entire graph.
+
+Cayley graphs can take a wide variety of shapes, which depend on the generating set used. Their construction implies a labelling of vertices by permutations and an edge labelling indicative of its generating set, but they can just as easily be abstract graphs separate from the procedure that was used to generate them. Here are a few examples of Cayley graphs made from elements of $S_4$:
+
+
+::: {}
+![]()
+Left: $\{(1 ~ 3 ~ 2 ~ 4), (3 ~ 4), (1 ~ 4 ~ 2 ~ 3)\}$, cube graph
+Middle: $\{(1 ~ 2 ~ 3), (2 ~ 3 ~ 4)\}$ cuboctahedral graph
+Right: $\{(2 ~ 3), (3 ~ 4), (2 ~ 3 ~ 4)\}$, octahedral graph
+Generating sets obtained from the previous MathWorld article
+:::
+
+In general, the Cayley graph is a directed graph. However, if for every member of the generating set, we also include its inverse, every directed edge will be matched by an edge in the opposite direction, and the Cayley graph is undirected.
+
+
+Graphs to Graphs
+----------------
+
+Since all 2-cycles are their own inverse, the generating sets which include only them produce undirected Cayley graphs. Furthermore, since the generating set can itself be thought of as a graph, we may consider an operation from graphs to graphs that maps a swap diagram to its Cayley graph.
+
+::: {}
+~~Since this operation involves permutations and the number of vertices in the resulting graph grows factorially, I've taken to calling this operation the "graph factorial".~~
+:::
+
+I've since renamed this operation the "graph exponential" because of its apparent relationship with the disjoint union. Namely, it seems to be the case that $\exp( A \oplus B ) = \exp( A ) \times \exp( B )$, where $\times$ signifies the [Cartesian (box) product of graphs](https://en.wikipedia.org/wiki/Cartesian_product_of_graphs) rather than the tensor product. While I believe this is a better name, some images in this article retain the earlier A! notation.
+
+::: {}
+![]()
+An example of the graph exponential. While the individual Cayley graphs for $(1 ~ 2)$ and $(3 ~ 4)$ are not shown (they are also 2-paths), their (box) product, the 4-cycle graph, is in the center.
+:::
+
+This operation is my own invention, so I am unsure whether or not it constitutes anything useful. In fact, the possible graphs grow so rapidly that computing anything about the exponential of order 8 graphs starts to overwhelm a single computer.
+
+A random graph will not generally correspond to an interesting generating set, and therefore, will also generally have an uninteresting exponential graph. Hence, I will continue with the examples used previously: paths, stars, and complete graphs. They are among the simplest graphs one can consider, and as we will see shortly, have exponentials which appear to have natural correspondences to other graph families.
+
+
+Some Small Exponential Graphs
+-----------------------------
+
+Because of the difficulty in determining graph isomorphism, it is challenging for a computer to find a graph in an encyclopedia. Computers think of graphs as a list of vertices and their outward edges. But this implementation faces inherent labelling issues. These persist even if the graph is described as a list of (un)ordered pairs, an adjacency matrix, or an incidence matrix, the latter two of which have very large memory footprints. I was able to locate a project named the [Encyclopedia of Finite Graphs](https://github.com/thoppe/Encyclopedia-of-Finite-Graphs), but it is only able to build a database simple connected graphs which can be queried by invariants (and is outdated since it uses Python 2).
+
+However, as visual objects, humans can compare graphs fairly easily -- the name means "drawing" after all. Exponentials of 3- and 4- graphs are neither so small as to be uninteresting nor so big as to be unparsable by humans.
+
+### Order 3
+
+![]()
+
+At this stage, we only really have two graphs to consider, since $P_3 = \bigstar_3$. Immediately, one can see that $\exp( P_3 ) = \exp( \bigstar_3 ) = C_6$, the 6-cycle graph (or hexagonal graph). It is also apparent that $\exp( K_3 )$ is the utility graph, $K_{3,3}$.
+
+![]()
+
+We can again demonstrate the sum law of the graph exponential with $\exp( P_3 \oplus P_2 )$. Simplifying, since we know $\exp( P_3 ) = C_6$, the expression is $C_6 \times P_2 = \text{Prism}_6$, the hexagonal prism graph.
+
+
+### Order 4 (and beyond)
+
+:::: {}
+::: {}
+![]()
+$\exp( P_4 )$
+:::
+
+::: {}
+![]()
+$\exp( \bigstar_4 )$
+:::
+::::
+
+![]()
+
+With some effort, $\exp( P_4 )$ can be imagined as a projection of a 3D object, the [truncated octahedron](https://en.wikipedia.org/wiki/Truncated_octahedron). Because of its correspondence to a solid figure, this graph is obviously planar. Both the hexagon and this solid belong to a class of polytopes called [*permutohedra*](https://en.wikipedia.org/wiki/Permutohedron), which are figures that are also formed by permutations of the coordinate (1, 2, 3, ..., *n*) in Euclidean space. In fact, they are able to completely tessellate the n-1 dimensional subspace of $\mathbb{R}^n$ where the coordinates sum to the $n-1$th triangular number. Note that the previous graph in the sequence of $P_n!$, the hexagonal graph, is visible in the truncated octahedron. This can be seen in the orthographic projection obtained by the map $(x,y,z,w) \mapsto (x,y,z)$.
+
+Technically, there is a distinction between the Cayley graphs and permutohedra since their labellings differ. Both have edges generated by swaps, but in the latter case, there is a uniform Euclidean metric between two vertices. More information about the distinction can be found at this article on [Wikimedia](https://commons.wikimedia.org/wiki/Category:Permutohedron_of_order_4_%28raytraced%29#Permutohedron_vs._Cayley_graph). Actually, if one considers a *right* Cayley graph, where each generator is right-multiplied to the permutation at a node rather than left-multiplied, then a true correspondence is obtained.
+
+Meanwhile, $\exp( \bigstar_4 )$ is more difficult to identify, at least without rearranging its vertices. It turns out to be isomorphic to the [Nauru graph](https://mathworld.wolfram.com/NauruGraph.html), a graph with many strange properties I can't begin to describe. Notably, whereas the graph isomorphic to the permutohedron is obviously a spherical polyhedron, the Nauru graph can be topologically embedded on a torus. The Nauru graph also belongs to the family of [permutation star graphs](https://mathworld.wolfram.com/PermutationStarGraph.html) $PS_n$ (*n* = 4), which also includes the hexagonal graph (*n* = 3). The MathWorld article confirms a correspondence, stating graphs of this form are generated by pairwise swaps.
+
+My attempts at finding a graph isomorphic to $\exp( K_4 )$ have thus far ended in failure. It is certainly *not* isomorphic to $K_{4,4}$, since $24 \neq 8$.
+
+
+### Graph Invariants
+
+While I have managed to identify the families to which some of these graphs belong, I am rather fond of computing (and conjecturing) sequences from objects. Not only is it much easier to consult something like the OEIS for these quantities, but when finding a matching sequence, there are ample articles to consult for more information. By linking to their respective entries, I hope you'll consider reading more there.
+
+Even though I have obtained these values empirically, I am certain that the sequences for $\exp( P_n )$ and $\exp( \bigstar_n )$ match the corresponding OEIS entries. I also have great confidence in the sequences I found for $\exp( K_n )$.
+
+
+#### Edge Counts
+
+Despite knowing how many vertices there are ($n!$, the order of the symmetric group), we don't necessarily know how many edges there are.
+
+ *n* | $\#E(\exp( P_n ))$ | $\#E(\exp( \bigstar_n ))$ | $\#E(\exp( K_n ))$
+-----|--------------------|---------------------------|-------------------
+ 3 | 6 | 6 | 9
+ 4 | 36 | 36 | 72
+ 5 | 240 | 240 | 600
+ 6 | 1800 | 1800 | 5400
+ 7 | 15120 | 15120 | 52920
+Rule | Second column of Lah numbers $L(n,2) = n!{(n-1)(n-2) \over 4}$ [OEIS A001286](http://oeis.org/A001286) | Same as previous | $n!{n(n-1) \over 4}$ [OEIS 001809](http://oeis.org/A001809)
+
+
+#### Radius and Distance Classes
+
+The radius of a graph is the smallest possible distance which separates two maximally-separated vertices. Due to vertex transitivity, the greatest distance between two vertices is the same for every vertex.
+
+ *n* | $r(\exp( P_n ))$ | $r(\exp( \bigstar_n ))$ | $r(\exp( K_n ))$
+-----|------------------|-------------------------|-----------------
+ 3 | 3 | 3 | 2
+ 4 | 6 | 4 | 3
+ 5 | 10 | 6 | 4
+ 6 | 15 | 7 | 5
+ 7 | 21 | 9 | 6
+Rule | Triangular numbers $\Delta_{n-1} = {n(n-1) \over 2}$ [OEIS A00021](http://oeis.org/A000217) | Integers not congruent to 2 (mod 3) $\lfloor {n-1 \over 2} \rfloor + n -\ 1$ [OEIS A032766](http://oeis.org/A032766) | *n* - 1
+
+More information can be gathered about distances on the graph than these reductive quantities. If a vertex is distinguished and the remaining vertices are partitioned into classes by their distances from it, then the size of each class will be the same for every vertex. Including the vertex itself (which is distance 0 away), there will be $r+1$ such classes, where r is the radius. In the case of these graphs, they are a partition of the factorial numbers.
+
+```{python}
+#| echo: false
+
+from IPython.display import Markdown
+from tabulate import tabulate
+
+Markdown(tabulate(
+ [
+ [3, "[1, 2, 2, 1]", "[1, 2, 2, 1]", "[1, 3, 2]"],
+ [4, "[1, 3, 5, 6, 5, 3, 1]", "[1, 2, 2, 1]", "[1, 6, 11, 6]"],
+ [5, "[1, 4, 9, 15, 20, 22, 20, 15, 9, 4, 1]", "[1, 4, 12, 30, 44, 26, 3]", "[1, 10, 35, 50, 24]"],
+ [6, "[1, 5, 14, 29, 49, 71, 90, 101, 101, 90, 71, 49, 29, 14, 5, 1]", "[1, 5, 20, 70, 170, 250, 169, 35]", "[1, 15, 85, 225, 274, 120]"],
+ [7, "[1, 6, 20, 49, 98, 169, 259, 359, 455, 531, 573, 573, 531, 455, 359, 259, 169, 98, 49, 20, 6, 1]", "[1, 6, 30, 135, 460, 1110, 1689, 1254, 340, 15]", "[1, 21, 175, 735, 1624, 1764, 720]"],
+ ["Rule", "Mahonian numbers [OEIS A008302](http://oeis.org/A008302)", "Whitney numbers of the second kind (star poset) [OEIS A007799](http://oeis.org/A007799)", "Stirling numbers of the first kind [OEIS A132393](http://oeis.org/A132393)"],
+ ],
+ headers=[
+ "*n*",
+ r"$dists(\exp( P_n ))$",
+ r"$dists(\exp( \bigstar_n ))$",
+ r"$dists(\exp( K_n ))$"
+ ]
+))
+```
+
+I am certain that the appearance of the Stirling numbers here is legitimate, since these numbers count the number of permutations of *n* objects with *k* disjoint cycles. Obviously, the identity element is distance 1 from all 2-cycles since they are all in the generating set; likewise, all 3-cycles are distance 2 from the identity (but distance 1 from the 2-cycles), and so on until the entire graph has been mapped. The shapes induced by these classes were used to create the diagrams of $\exp( K_3 )$ and $\exp( K_4 )$ above.
+
+
+#### Spectrum
+
+The eigenvalues of the adjacency matrix of a graph can be interesting and sometimes help in identifying a graph. Unfortunately, eigenvalues are not necessarily integers, and therefore not easily found in the OEIS (though they are always real for graphs).
+
+```{python}
+#| echo: false
+
+from IPython.display import Markdown
+from tabulate import tabulate
+
+f = lambda x: x.replace("\n", "")
+
+Markdown(tabulate(
+ [
+ [3, r"$(\pm 1)^2 (\pm 2)$", r"$(\pm 1)^2 (\pm 2)$", r"$(0)^4 (\pm 3)$"],
+ [4, f(r"""$$\begin{gather*}
+(\pm 1)^3 (\pm 3) \\
+(x^2 -\ 3)^2 \\
+(x^2 -\ 2x -\ 1)^3
+(x^2 + 2x -\ 1)^3
+\end{gather*}$$"""), f(r"""$$\begin{gather*}
+(0)^4 \\
+(\pm 1)^3 \\
+(\pm 2)^6 \\
+(\pm 3)^{\phantom{0}}
+\end{gather*}$$"""), f(r"""$$\begin{gather*}
+(0)^4 \\
+(\pm 2)^9 \\
+(\pm 6)^{\phantom{0}}
+\end{gather*}$$""")],
+ [5, f(r"""$$\begin{gather*}
+(0)^{12} (\pm 1)^6 (\pm 4) \\
+(x^2 -\ 5)^6 \\
+(x^2 -\ 5x + 5)^4
+(x^2 + 5x + 5)^4 \\
+(x^2 -\ 3x + 1)^4
+ (x^2 + 3x + 1)^4 \\
+(x^2 -\ 2x -\ 1)^5
+(x^2 + 2x -\ 1)^5 \\
+(x^3 -\ 2x^2 -\ 5x + 4)^5 \\
+(x^3 + 2x^2 -\ 5x -\ 4)^5
+\end{gather*}$$"""), f(r"""$$\begin{gather*}
+(0)^{30} \\
+(\pm 1)^{4\phantom{0}} \\
+(\pm 2)^{28} \\
+(\pm 3)^{12} \\
+(\pm 4)^{\phantom{00}}
+\end{gather*}$$"""), f(r"""$$\begin{gather*}
+(0)^{36} \\
+(\pm 2)^{25} \\
+(\pm 5)^{16} \\
+(\pm 10)^{\phantom{00}}
+\end{gather*}$$""")],
+ [6, f(r"""$$\begin{gather*}
+(0)^{20} (\pm 1)^{25} (\pm 2)^{15} \\
+(\pm 3)^5 (\pm 4)^5 (\pm 5) \\
+(x^2 -\ 3)^{20} \\
+\end{gather*}$$
+*Not shown: 558 other roots*"""), f(r"""$$\begin{gather*}
+(0)^{168} \\
+(\pm 1)^{30\phantom{0}} \\
+(\pm 2)^{120} \\
+(\pm 3)^{105} \\
+(\pm 4)^{20\phantom{0}} \\
+(\pm 5)^{\phantom{000}}
+\end{gather*}$$"""), f(r"""$$\begin{gather*}
+(0)^{256} \\
+(\pm 3)^{125} \\
+(\pm 5)^{81\phantom{0}} \\
+(\pm 9)^{25\phantom{0}} \\
+(\pm 15)^{\phantom{000}}
+\end{gather*}$$""")],
+ [7, f(r"""
+ $(0)^{35} (\pm 1)^{20} (\pm 2)^{45} (6)$
+*Not shown: 4873 other roots*
+ """), f(r"""
+ $$\begin{gather*}
+(0)^{840} \\
+(\pm 1)^{468} \\
+(\pm 2)^{495} \\
+(\pm 3)^{830} \\
+(\pm 4)^{276} \\
+(\pm 5)^{30\phantom{0}} \\
+(\pm 6)^{\phantom{000}}
+\end{gather*}$$"""), f(r"""$$\begin{gather*}
+(0)^{400\phantom{0}} \\
+(\pm 1)^{441\phantom{0}} \\
+(\pm 3)^{1225} \\
+(\pm 6)^{196\phantom{0}} \\
+(\pm 7)^{225\phantom{0}} \\
+(\pm 9)^{196\phantom{0}} \\
+(\pm 14)^{36\phantom{00}} \\
+(\pm 21)^{\phantom{0000}}
+\end{gather*}$$
+ """)],
+ [8, f(r"""*Not shown: all 40320 roots*"""), f(r"""$$\begin{gather*}
+(0)^{3960} \\
+(\pm 1)^{5691} \\
+(\pm 2)^{2198} \\
+(\pm 3)^{6321} \\
+(\pm 4)^{3332} \\
+(\pm 5)^{595\phantom{0}} \\
+(\pm 6)^{42\phantom{00}} \\
+(\pm 7)^{\phantom{0000}}
+\end{gather*}$$"""), f(r"""$$\begin{gather*}
+(0)^{9864} \\
+(\pm 2)^{3136} \\
+(\pm 4)^{6125} \\
+(\pm 7)^{4096} \\
+(\pm 8)^{196\phantom{0}} \\
+(\pm 10)^{784\phantom{0}} \\
+(\pm 12)^{441\phantom{0}} \\
+(\pm 20)^{49\phantom{00}} \\
+(\pm 28)^{\phantom{0000}}
+\end{gather*}$$""")
+ ],
+ ],
+ headers=[
+ "*n*",
+ r"$\text{Spec}(\exp( P_n ))$",
+ r"$\text{Spec}(\exp( \bigstar_n)$",
+ r"$\text{Spec}(\exp( K_n ))$"
+ ]
+))
+```
+
+From what I have been able to identify, the spectrum of an exponential graph is symmetric about 0, by which I mean that the characteristic polynomial is even. This has been the case for all graphs I have tried testing, even outside these graph families.
+
+Since all eigenvalues of $\exp( \bigstar_n )$ calculated are integers, it appears they are integral graphs, a fact of which I am reasonably sure because of the correspondence to permutation star graphs. Additionally, the eigenvalues are very conveniently the integers up to $n-1$ and down to $-n+1$. Unfortunately, despite the ease of reading the eigenvalues across, there isn't an OEIS entry for the multiplicities. I was able to identify the multiplicity of the 0 eigenvalue with [OEIS A217213](http://oeis.org/A217213), which counts orderings on Dyck paths. If this is truly the sequence being generated, it means there is a 1:1 correspondence between these orderings and a basis of the nullspace of the adjacency matrix.
+
+It seems to be the case that $\exp( K_n )$ are also integral graphs. Perplexingly, the multiplicities for each of the eigenvalues appear to be perfect powers. This is the case until n = 8, which ruins the pattern because neither of $9864 = 2^3 \cdot 3^2 \cdot 137$ or $6125 = 5^3 \cdot 7^2$ are perfect powers. I find both this and the fact that 137 appears among the factorization of the former rather creepy -- some physicists are fond of this number for its closeness to the reciprocal of the fine structure constant (a bit of harmless numerology). Not only that, but this prime is so much larger than any of the primes appearing in the factorization of the other numbers (which are exclusively 2, 3, 5, and 7).
+
+
+#### Notes about Spectral Computation
+
+For *n* = 3 through 6, exactly computing the spectrum (or more accurately, the characteristic polynomial) is possible, although it takes upwards of 10 minutes for *n* = 6 on my machine using sympy. The spectra of *n* = 7, 8 are marked with an asterisk because they were computed numerically, which still took nearly 8 hours in the case of the latter. In fact, these graphs grow so quickly that it becomes nearly impossible to compute the spectrum without an explicit formula.
+
+For *n* = 8, even storing the adjacency matrix in memory is a problem. Assuming the use of single-precision floating point, this behemoth of a matrix is $(8!)^2 \cdot 4 \text{ bytes} = 6.5\text{GB}$. This doesn't even factor in additional space requirements for eigenvalue algorithms, and is the reason I certainly won't be attempting to compute the spectrum for *n* = 9.
+
+
+Gallery of Adjacency Matrices
+-----------------------------
+
+The patterns in adjacency matrices depend on an enumeration of $S_n$ so that the vertices can be labelled from 1 to $n!$. While this is a fascinating topic unto itself, this post is already long enough as is, and I feel comfortable with just sharing the pictures.
+
+
+### [Plain Changes](https://en.wikipedia.org/wiki/Steinhaus%E2%80%93Johnson%E2%80%93Trotter_algorithm)
+
+:::: {}
+::: {}
+![]()
+$P_5$
+:::
+
+::: {}
+![]()
+$\bigstar_5$
+:::
+
+::: {}
+![]()
+$K_5$
+:::
+
+::: {}
+![]()
+$P_6$
+:::
+
+::: {}
+![]()
+$\bigstar_6$
+:::
+
+::: {}
+![]()
+$K_6$
+:::
+::::
+
+
+### [Heap's Algorithm](https://en.wikipedia.org/wiki/Heap%27s_algorithm)
+
+:::: {}
+::: {}
+![]()
+$P_5$
+:::
+
+::: {}
+![]()
+$\bigstar_5$
+:::
+
+::: {}
+![]()
+$K_5$
+:::
+
+::: {}
+![]()
+$P_6$
+:::
+
+::: {}
+![]()
+$\bigstar_6$
+:::
+
+::: {}
+![]()
+$K_6$
+:::
+
+GHC's `Data.List.permutations` is slightly different from Heap's algorithm as displayed on Wikipedia
+::::
+
+
+Closing
+-------
+
+As previously stated, I am only mostly sure of the validity of the exponential law for graphs. It *seems* too good to be true, but testing it directly on some graphs by comparing the spectra of the exponential of the sum against the product of the exponentials shows that they are at least cospectral. Try it yourself, preferably with a better tool than [the ones I made in Haskell](https://github.com/queue-miscreant/SymmetricGraph).
+
+From the articles I was able to find, permutation star graphs have applications to parallel computing, which is somewhat ironic considering how little care I had for the topic when writing this article. If I needed ruthless efficiency, I probably could have used a library with GPU algorithms (or taken a stab at writing a shader myself). However, I *was* able to use this as a learning experience regarding mutable objects in Haskell. With only immutable objects (and enough garbage to create an island in the Pacific), I was running out of memory even with 16GB of RAM and 16GB of swap. Introducing mutability not only brought improvements in space, but also a great deal of speedup, enough to make rendering adjacency matrix images of order 8 graphs just barely doable within a reasonable time span.
+
+Said images are cursed. Remember, as raw bitmaps, these files are on the order of *gigabytes* big. On a much weaker computer than I used to render the images, merely opening my file explorer to the folder containing *the folder containing* the images caused its all-too-eager thumbnailer to run. It started to consume all of my system resources, crashing all of my browser's tabs, distorting audio, and locking up the computer. Despite this, PNG is a wonderful format that is able to compress them down to just 4MB, which demonstrates just how sparse these matrices are.
+
+Despite everything I was able to find about permutation star graphs and permutohedra, I was surprised that there is no information about the Cayley graphs generated by *all* 2-cycles (or at least information which is easy to find). This is especially disappointing considering the phantom pattern which gets destroyed by 137, and I would love to know more about why this happens in the first place.
+
+Graph diagrams made with GeoGebra and NetworkX (GraphViz).
+
+
+### Additional Links
+
+- [Whitney Numbers of the Second Kind for the Star Poset (Paper from ScienceDirect)](https://www.sciencedirect.com/science/article/pii/S0195669813801278)
+
+ - This article includes a section about representing a list of generators as a graph, making me wonder if someone has tried defining this operation before
+
+- [Whitney Numbers (Josh Cooper's Mathpages)](https://people.math.sc.edu/cooper/graph.html)
+
+- [The Many Faces of the Nauru Graph (Blogpost by David Eppstein)](https://11011110.github.io/blog/2007/12/12/many-faces-of.html)
diff --git a/posts/permutations/3/index.qmd b/posts/permutations/3/index.qmd
new file mode 100644
index 0000000..6ad3c6d
--- /dev/null
+++ b/posts/permutations/3/index.qmd
@@ -0,0 +1,240 @@
+---
+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.
+
+::: {}
+
+
+
+Some important Coxeter diagrams
+
+Source: Rgugliel, via Wikimedia Commons
+
+
+:::
+
+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$
+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
+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).
+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$.
+The top diagram starts from either of the bottom two vertices with a c loop.
+The middle diagram starts from either the leftmost or rightmost vertex, which both have a b loop.
+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°, ...).
+
+::: {}
+
+
+
+Fundamental domains of Coxeter diagram
+Source: Tomuren, via Wikimedia Commons
+
+
+:::
+
+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
+Right: Six of the eight tetrahedra formed by connecting equidistant points ("roots") to the origin.
+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.
diff --git a/posts/permutations/appendix/index.qmd b/posts/permutations/appendix/index.qmd
new file mode 100644
index 0000000..ac37e2a
--- /dev/null
+++ b/posts/permutations/appendix/index.qmd
@@ -0,0 +1,363 @@
+---
+format:
+ html:
+ html-math-method: katex
+---
+
+
+Appendix: Partial Cayley Graphs of Coxeter Diagrams
+===================================================
+
+This post is an appendix to [another post]() discussing the basics of Coxeter diagrams. It focuses on transforming path-like swap diagrams into proper $A_n$ Coxeter diagrams, which correspond to symmetric groups. This post focuses on the graphs made by the cosets made by removing a single generator (Coxeter diagram vertex).
+
+For finite diagrams whose order is not prohibitively big, I will provide an embedding as a permutation group by labelling each generator in the Coxeter diagram. Since each generator is the product of disjoint swaps, I will also show their swap diagrams, as well as interactions via the edges.
+
+
+Platonic Symmetry
+-----------------
+
+The symmetric group $S_n$ also happens to describe the symmetries of an $(n-1)$-dimensional simplex. The 3-simplex is simply a tetrahedron and has symmetry group $S_4$, also called $T_h$. We know that $S_4$ can be encoded by the diagram $A_3$. The string {3, 3} can be read across the edges of $A_3$, denoting the order of certain symmetries.
+
+This happens to coincide with another description of the tetrahedron: its [Schläfli symbol](https://en.wikipedia.org/wiki/Schl%C3%A4fli_symbol). It describes triangles (the first 3) which meet in triples (the second 3) at a vertex. It may also be interpreted as the symmetry of the 2-dimensional components (faces) and the vertex-centered symmetry. [The Wikipedia article](https://en.wikipedia.org/wiki/Tetrahedron) on the tetrahedron presents both of these objects in its information column.
+
+::: {}
+![]()
+
+From the Wikipedia article on the tetrahedron. The Conway notation, Schläfli symbol, Coxeter diagram, and symmetry groups are shown.
+:::
+
+The image above shows more sophisticated diagrams alongside $A_3$, which I will not attempt describing (mostly because I don't completely understand them myself). Other Platonic solids and their higher-dimensional analogues have different Schläfli symbols, and correspond to different Coxeter diagrams.
+
+
+### $B_3$: Octahedral Group
+
+Adding an order-4 product into the mix makes things a lot more interesting. The cube ({4, 3}) and octahedron ({3, 4}) share a symmetry group, $O_h$, which corresponds to the Coxeter diagram $B_3$.
+
+:::: {layout-ncol="3"}
+::: {}
+![]()
+:::
+
+::: {}
+![]()
+:::
+
+::: {}
+![]()
+:::
+::::
+
+The third graph is entirely path-like, similar to the ones created by removing an endpoint from the $A_n$ diagrams. In the same vein, the graph for $B_3$ resembles the graph for $A_3$ made by removing the center vertex, albeit with two extra vertices. The center diagram is the first to have a hexagon created by removing a single vertex. Going across left to right, the order suggested by each index is
+
+::: {}
+- $8 \cdot |A_2| = 8 \cdot 6 = 48$
+- $12 \cdot |A_1 A_1| = 12 \cdot 4 = 48$
+- $6 \cdot |B_2| = 6 \cdot 8 = 48$
+ - $B_2$ describes the symmetry of a square, i.e., $Dih_4$, the dihedral group of order 8
+:::
+
+Each diagram suggests the same order, which is good. A simple embedding which obeys the edge condition assigns $(1 ~ 2)(3 ~ 4)$ to *a*, $(2 ~ 3)$ to *b*, and $(1 ~ 2)$ to *c*. Then $ab = (1 ~ 2 ~ 4 ~ 3)$ and $bc = (1 ~ 3 ~ 2)$, with *ac* obviously having order 2.
+
+There's a problem though. These generate a group of order 24 (actually, the rotational symmetries of a cube, $O \cong S_4 \cong T_h$). The group we want is $O_h \cong S_4 \times \mathbb{Z}_2$. If we want to embed a group of order 48 in a symmetric group, we need one for which 48 divides its order. $|S_6| = 720$ divides 48, and indeed, a quick fix is just to multiply each generator by $(5 ~ 6)$.
+
+These two embeddings generate different (proper) Cayley graphs. The one for O has 24 vertices and is nonplanar. On the other hand, the one for $O_h$ is planar, and is the skeleton of the [truncated cuboctahedron](https://en.wikipedia.org/wiki/Truncated_cuboctahedron), a figure containing octagons, hexagons, and squares. This is exactly what is suggested by the orders of the products in the Coxeter diagram. Note also that the cuboctahedron is the rectification of the cube and octahedron, i.e., is midway between them with respect to the dual operation.
+
+In either case, the products of adjacent generators (the permutations on the edges) are the same. When made into a Cayley graph, these products generate the [rhombicuboctahedron](https://en.wikipedia.org/wiki/Rhombicuboctahedron), which is another shape midway between the cube and octahedron. Since all of these generators are in $S_4$, it only has half the number of vertices as the truncated cuboctahedron.
+
+:::: {layout-ncol="3"}
+::: {.column width="32%"}
+![]()
+
+"Bad" embedding
+:::
+
+::: {.column width="32%"}
+![]()
+
+Good embedding
+:::
+
+::: {.column width="32%"}
+![]()
+
+Edge-generated
+:::
+::::
+
+![]()
+
+
+### $H_3$: Icosahedral Group
+
+Continuing with groups based on 3D shapes, the dodecahedron ({5, 3}) and icosahedron ({3, 5}) also share symmetry groups. It is known as $I_h$ and corresponds to Coxeter diagram $H_3$.
+
+:::: {layout-ncol="3"}
+::: {.column width="32%"}
+![]()
+:::
+
+::: {.column width="32%"}
+![]()
+:::
+
+::: {.column width="32%"}
+![]()
+:::
+::::
+
+Two of these graphs are similar to the cube/octahedron graphs. The other contains a decagon, corresponding to the order 5 product between *a* and *b*. We have the orders:
+
+::: {}
+- $20 \cdot |A_2| = 20 \cdot 6 = 120$
+ - Graph resembles an extension of $B_3 / A_1 A_1$, as hexagons joining blocks of squares
+- $30 \cdot |A_1 A_1| = 30 \cdot 4 = 120$
+- $12 \cdot |H_2| = 12 \cdot 10 = 120$
+ - Graph resembles an extension of $B_3 / A_2$, as a single square joining paths
+:::
+
+The order 120 is the same as the order of $S_5$, which corresponds to diagram $A_4$. However, these are not the same group, since $I_h \cong \text{Alt}_5 \times \mathbb{Z}_2 \ncong S_5$. A naive (though slightly less obvious) embedding, found similarly to $B_3$'s, incorrectly assigns the following:
+
+::: {}
+- $a = (1 ~ 2)(3 ~ 4)$
+- $b = (2 ~ 3)(4 ~ 5)$
+- $c = (2 ~ 3)(1 ~ 4)$
+:::
+
+This is certainly wrong, since all these permutations are within $S_5$. Actually, they are all even permutations and in fact generate $I \cong \text{Alt}_5$, with order 60. Yet again, multiplying $(6 ~ 7)$ to each vertex boosts the order to 120 and gives a proper embedding of $I_h$.
+
+Similarly, the first, incorrect embedding gives a nonplanar Cayley graph. Correspondingly, the second one gives a planar graph, the skeleton of the [truncated icosidodecahedron](https://en.wikipedia.org/wiki/Truncated_icosidodecahedron). It consists of decagons, hexagons, and squares, just like those which appear in the graphs above. Again, note that icosidodecahedron is the rectification of the dodecahedron and icosahedron. In this case, the edges generate the [rhombicosidodecahedronal graph](https://en.wikipedia.org/wiki/Rhombicosidodecahedron).
+
+:::: {layout-ncol="3"}
+::: {.column width="32%"}
+![]()
+
+"Bad" embedding
+:::
+
+::: {.column width="32%"}
+![]()
+
+Good embedding
+:::
+
+::: {.column width="32%"}
+![]()
+
+Edge-generated
+:::
+::::
+
+![]()
+
+It is remarkable that the truncations of the rectifications (also called omnitruncation) have skeleta that are the same as the Cayley graphs generated by their respective Platonic solids' Coxeter diagrams. In a way, these figures describe their own symmetry. Notably, both of these figures belong to a class of polyhedra known as [zonohedra](https://en.wikipedia.org/wiki/Zonohedron).
+
+
+### $B_4$: Hyperoctahedral Group
+
+Up a dimension from the cube and octahedron lie their 4D counterparts, the tesseract ({4, 3, 3}, interpreted as three cubes ({4, 3}) around an edge) and 16-cell ({3, 3, 4}). They correspond to Coxeter diagram $B_4$.
+
+:::: {layout-ncol="2"}
+::: {.column width="49%"}
+![]()
+:::
+
+::: {.column width="49%"}
+![]()
+:::
+::::
+
+Three of these graphs are *also* similar to those encountered one dimension lower. The remaining graph is best understood in three dimensions, befitting the 4D symmetries it encodes. It appears to have similar regions to the [omnitruncated tesseract](https://en.wikipedia.org/wiki/Runcinated_tesseracts#Omnitruncated_tesseract), featuring both the truncated octahedron and hexagonal prism cells. We have the orders:
+
+::: {}
+- $16 \cdot |A_3| = 16 \cdot 24 = 384$
+ - Graph resembles an extension of $B_3 / A_2$, as squares connecting paths
+- $32 \cdot |A_1 A_2| = 32 \cdot 2 \cdot 6 = 384$
+- $24 \cdot |B_2 A_1| = 24 \cdot 8 \cdot 2 = 384$
+ - Graph resembles an extension of $B_3 / A_1 A_1$, as hexagons joining blocks of squares
+- $8 \cdot |B_3| = 8 \cdot 48 = 384$
+ - Graph resembles an extension of $B_3 / B_2$, a simple path
+:::
+
+The order of the group, 384, suggests that it needs to be embedded in at least $S_8$ since $384 ~ \vert ~ 8! ~ ( = 40320)$. Indeed, such an embedding exists, found by computer search rather than by hand:
+
+::: {}
+- $a = (1 ~ 3)$
+- $b = (1 ~ 2)(3 ~ 4)(5 ~ 6)(7 ~ 8)$
+- $c = (1 ~ 3)(2 ~ 6)(4 ~ 5)(7 ~ 8)$
+- $d = (1 ~ 3)(2 ~ 4)(5 ~ 7)(6 ~ 8)$
+:::
+
+Notably, this embedding takes advantage of the possibility of the product of an order 2 and an order 4 element having order 4. A similar computer search yielded an insufficient embedding in $S_8$, with order 192:
+
+::: {}
+- $a = (1 ~ 2)(3 ~ 4)(5 ~ 6)(7 ~ 8)$
+- $b = (1 ~ 3)(2 ~ 5)(4 ~ 7)(6 ~ 8)$
+- $c = (1 ~ 2)(3 ~ 4)(5 ~ 7)(6 ~ 8)$
+- $d = (1 ~ 2)(3 ~ 5)(4 ~ 6)(7 ~ 8)$
+:::
+
+The latter embedding *cannot* be "fixed" by going to $S_{10}$, either by multiplying one or all elements by $(9 ~ 10)$. Only *a* is a viable choice for the former since its products with the rest of the generators have an order divisible by 2. Quickly "running" the generators shows that the order of the group is unchanged by this maneuver. Much of the structure permutations ensures that nonadjacent vertices still have order-2 products.
+
+![]()
+
+I won't try to identify either of these generating sets' Cayley graphs since they will in all likelihood correspond to a 4D object's skeleton and because it is impractical to try comparing graphs of this size. In fact, *H* appears to not be isomorphic to a subgroup of $W(B_4)$. The latter has at least 2 subgroups of order 192: one generated by the edges in the above embedding, and one containing only the even permutations. These are distinct from one another, since the number of elements of a particular order is different. The latter subgroup is closer to *H*, matching the number of elements of each order, but the even permutations have commutator subgroup has order 96 while *H* has a commutator subgroup of order 48.
+
+
+Other Finite Diagrams
+---------------------
+
+Higher-dimensional Platonic solids are hardly the limits of what these diagrams can encode. The following three diagrams also give rise to finite graphs.
+
+### $D_4$
+
+$D_4$ is the first Coxeter diagram with a branch. Like $B_4$ before it, it is corresponds to the symmetries of a 4D object. We only really have two choices in which vertex to remove, which generate the following diagrams
+
+:::: {layout-ncol="2"}
+::: {.column width="49%"}
+![]()
+:::
+
+::: {.column width="49%"}
+![]()
+:::
+::::
+
+While we could also remove *c* or *d*, this would just produce a graph identical to the one on the left, just with different labelling. The right diagram is rather interesting, as it can be described geometrically as two cubes attached to a triple of coaxial hexagons. Both of these cases give the order
+
+::: {}
+- $8 \cdot |A_3| = 8 \cdot 24 = 192$
+- $24 \cdot |A_1 A_1 A_1| = 24 \cdot 8 = 192$
+:::
+
+The order of 192 requires at minimum, $S_8$, since $192 ~ \vert ~ 40320$. Fortunately, a computer search yields a correct embedding immediately:
+
+::: {}
+- $b = (1 ~ 2)(3 ~ 4)(5 ~ 6)(7 ~ 8)$
+- $a = (1 ~ 8)(2 ~ 3)(4 ~ 7)(5 ~ 6)$
+- $c = (1 ~ 5)(2 ~ 7)(3 ~ 4)(6 ~ 8)$
+- $d = (1 ~ 8)(2 ~ 4)(3 ~ 7)(5 ~ 6)$
+:::
+
+::: {}
+![]()
+:::
+
+In fact, the group generated by this diagram is isomorphic to the even permutation subgroup of $W(B_4)$. This can be verified by selecting order 2 elements from the latter which obey the laws in $D_4$. *H*, and the edge-generated subgroup, on the other hand do not satisfy this diagram.
+
+
+### $D_5$
+
+D-type diagrams continue by elongating one of the paths. The next diagram, $D_5$ has really only four distinct graphs, of which I will show only two:
+
+:::: {layout-ncol="2"}
+::: {.column width="49%"}
+![]()
+:::
+
+::: {.column width="49%"}
+![]()
+:::
+::::
+
+First, note how the graph to the right is generated by removing the vertex *e*, but the left and right sides of the diagram are asymmetrical. This is because *d* and *e* are equivalent with respect to the branch, and shows us that removing either vertex *d* or *e* results in the same graph. The order suggested by each is
+
+::: {}
+- $10 \cdot |D_4| = 10 \cdot 192 = 1920$
+- $16 \cdot |A_4| = 16 \cdot 120 = 1920$
+:::
+
+If we were to remove vertex b, we'd end up with the diagram $A_1 A_3$, which has order 48. The diagram would have 1920 / 48 = 40 vertices, which would be fairly difficult to render. Removing vertex c would be even worse, since the resulting diagram, $A_2 A_1 A_1$, has order 24, and would require 80 vertices, twice as many.
+
+Finding an embedding at this point is difficult. The order of 1920 also divides $40320 = |S_8|$, but computer search has failed to find an embedding in up to $S_{11}$.
+
+
+### $E_6$
+
+If one of the shorter paths of $D_5$ is extended, then we end up with the diagram $E_6$. I will only show one of its graphs.
+
+![]()
+
+Similarly to one of the graphs for $D_5$, this graph goes in with *a* and comes out with *e*, which are again symmetric with respect to the branch. I particularly like how on this graph, most of the squares are structured so that they can bridge to the *ae* commuting square in the middle.
+
+The order of this group is $27 \cdot 1920 = 51840$, which is starting to be incomprehensible, if it hasn't been already. The graphs not shown would have the following number of vertices, which is precisely why I won't draw them out:
+
+::: {}
+- Removing *f*: $[E_6 : A_5] = 51840 / 720 = 72$ vertices
+- Removing *b* or *d*: $[E_6 : A_1 A_4] = 51840 / 240 = 216$ vertices
+- Removing *c*: $[E_6 : A_2 A_2 A_1] = 51840 / 72 = 720$ vertices
+:::
+
+Going by order alone, $E_6$ should embed in $S_9$ ($51840 ~ \vert ~ 9!$), but since $S_11$ was too small for its subgroup $D_5$, this too optimistic. I don't know what the minimum degree is required to embed $S_6$, but finding it directly it is beyond my computational power.
+
+The E diagrams continue with $E_7$ and $E_8$. Each of the three corresponds to the symmetries of semi-regular higher-dimensional objects, whose significance and structure I can't even begin to comprehend. Their size alone makes continuing onward by hand a fool's errand, and I won't be attempting to draw them out right just now.
+
+
+Infinite (Affine) Diagrams
+--------------------------
+
+Not every Coxeter diagram results in a closed graph. Instead, they may proliferate vertices forever. They are termed either "affine" or "hyperbolic", depending respectively on whether the diagrams join up with themselves or seem to require more and more room as the algorithm advances. This is also related to the collection of fundamental domains and roots that the diagram describes.
+
+Since hyperbolic graphs are difficult to draw, I'll be restricting myself to the affine diagrams. Unlike hyperbolic diagrams, which are unnamed, affine ones are typically named by altering finite diagrams.
+
+### $\widetilde A_2$
+
+The Coxeter diagram associated to the triangle graph $K_3$ is called $\widetilde A_2$. This graph is also the line graph of $\bigstar_3$ so it might make sense to assign to the vertices the generators $(1 ~ 2)$, $(2 ~ 3)$, and $(1 ~ 3)$, which we know to generate $S_3$. However, $S_3$ already has a diagram, $A_2$, which is clearly a subdiagram of $\widetilde A_2$, so the new group must be larger.
+
+![]()
+
+Attempting to make a graph by following the generators results in an infinite tiling by hexagons. There are three distinct types of hexagon -- *ab*, *ac*, and *bc* -- since each pair of elements has a product of order 3. Removing a pair of vertices from the diagram would get rid of the initial edge (*a* in this case), and the "limiting case" where all three vertices are removed is just the true hexagonal tiling.
+
+
+### $\widetilde G_2$
+
+The hexagonal tiling has a Schläfli symbol of {6, 3}, and is dual to the triangular tiling. As a Coxeter diagram, this symbol matches the Coxeter diagram $\widetilde G_2$.
+
+![]()
+
+The graph generated by removing a vertex is another infinite tiling, in this case the [truncated trihexagonal tiling](https://en.wikipedia.org/wiki/Truncated_trihexagonal_tiling). Once again, this tiling is the truncation of the rectification of the symmetry it typically describes. Each of the three figures corresponds to a unique pair of products: dodecagons to *ab*, squares to *ac*, and hexagons to *bc*.
+
+
+### $\widetilde C_2$
+
+The only remaining regular 2D tiling is the square tiling ({4, 4}), whose Coxeter diagram is named $\widetilde C_2$.
+
+![]()
+
+The tiling generated by this diagram is known as the [truncated square tiling](https://en.wikipedia.org/wiki/Truncated_square_tiling). Mirroring the other cases, it is also the truncated *rectified* square tiling, since rectifying the square tiling merely rotates it by 45°. In this tiling, while the squares distinctly correspond to the product *ac*, the octagons are either order-4 product, *ab* or *bc*.
+
+
+### $\widetilde A_3$
+
+The above diagrams are the only rank-2 affine diagrams. The simplest diagram of rank 3 is $\widetilde A_3$, which appears similar to 4-cyclic graph. Similar to how $\widetilde A_2$'s graph is the tiling of $A_2$'s, its Cayley graph is the honeycomb of $A_3$'s.
+
+:::: {layout-ncol="2"}
+::: {.column width="49%"}
+![]()
+:::
+
+::: {.column width="49%"}
+![]()
+:::
+::::
+
+The left diagram shows the initial branches, while the left image shows the four distinct cells which form the honeycomb. From left to right, the diagrams contain only *abd*, *abc*, *bcd*, and *acd*. The squares always represent commuting pairs on opposite ends of the diagram: *ac* and *bd*.
+
+I am not certain in general whether $\widetilde A_n$ generates the honeycomb formed by $A_n$, but this tessellation should always exist, since the solids formed by the generators of $A_n$ are always permutohedra.
+
+
+Closing
+-------
+
+The diagrams I have studied here are only the smaller ones which I can either visualize or compute. I might have gotten carried away with studying the groups themselves in the 4D case, since there appears to be so much contention. Despite this, I examined only half of the available Platonic solids in 4D, missing out on the 24-cell ({3, 4, 3}, $F_4$), 120-cell ({5, 3, 3}, $H_4$), and 600-cell ({3, 3, 5}, $H_4$). If 4D symmetries are hard to understand, then things can only get worse in higher dimensions.
+
+One of the things I'm curious about is the minimal degree of symmetric group needed to embed the finite diagrams (known as $\mu$). While $S_6$ is minimal for the octahedral group, it doesn't appear to be big enough for the icosahedral one. Certain groups obey $\mu(G \times H) = \mu(G) + \mu(H)$ (typically abelian ones), but I'm not sure whether that's the case here.
+
+Coset and embedding diagrams made with GeoGebra. Cayley graph images made with NetworkX (GraphViz).
+
+
+### Additional Links
+
+- [Point groups in three dimensions](https://en.wikipedia.org/wiki/Point_groups_in_three_dimensions) (Wikipedia)
+- [Point groups in four dimensions](https://en.wikipedia.org/wiki/Point_groups_in_four_dimensions) (Wikipedia)
+- [Finding the minimal n such that a given finite group G is a subgroup of Sn](https://math.stackexchange.com/questions/1597347/finding-the-minimal-n-such-that-a-given-finite-group-g-is-a-subgroup-of-s-n) (Mathematics Stack Exchange)
+- [Omnitruncated](https://community.wolfram.com/groups/-/m/t/774393), by Clayton Shonkwiler