We will consider \(S_9\), the symmetric group on 9 elements, and representations of its elements. First we will load the package and change the default print method:

```
library("permutations")
options("print_word_as_cycle" = FALSE)
```

Now we will generate a couple of permutations, `a`

and `b`

:

```
a <- as.word(char2cycle("(175296)(348)"))
b <- as.word(char2cycle("(27)(45)(89)"))
a
#> {1} {2} {3} {4} {5} {6} {7} {8} {9}
#> [1] 7 9 4 8 2 1 5 3 6
b
#> {1} {2} {3} {4} {5} {6} {7} {8} {9}
#> [1] . 7 . 5 4 . 2 9 8
```

Now we will show a representation of \(S_9\), using permutation matrices:

```
M <- diag(9)
rownames(M) <- 1:9
colnames(M) <- 1:9
M
#> 1 2 3 4 5 6 7 8 9
#> 1 1 0 0 0 0 0 0 0 0
#> 2 0 1 0 0 0 0 0 0 0
#> 3 0 0 1 0 0 0 0 0 0
#> 4 0 0 0 1 0 0 0 0 0
#> 5 0 0 0 0 1 0 0 0 0
#> 6 0 0 0 0 0 1 0 0 0
#> 7 0 0 0 0 0 0 1 0 0
#> 8 0 0 0 0 0 0 0 1 0
#> 9 0 0 0 0 0 0 0 0 1
```

We will use the map \(\phi\colon S_9\longrightarrow\operatorname{Aut}\left(\mathbb{R}^9\right)\) given by \(\phi(a)=\) `M[a,]`

. Then

```
M[a,]
#> 1 2 3 4 5 6 7 8 9
#> 7 0 0 0 0 0 0 1 0 0
#> 9 0 0 0 0 0 0 0 0 1
#> 4 0 0 0 1 0 0 0 0 0
#> 8 0 0 0 0 0 0 0 1 0
#> 2 0 1 0 0 0 0 0 0 0
#> 1 1 0 0 0 0 0 0 0 0
#> 5 0 0 0 0 1 0 0 0 0
#> 3 0 0 1 0 0 0 0 0 0
#> 6 0 0 0 0 0 1 0 0 0
```

permutes the rows of \(M\) with permutation `a`

. Note how the row names are permuted as well as the elements of \(M\). Verifying that \(\phi\) is indeed a homomorphism—that is, \(\phi(\iota)=I_9\) and \(\phi(a)\phi(b)=\phi(a\circ b)\)—is straightforward:

```
all(M[as.word(id,9),] == diag(9))
#> [1] TRUE
all(M[a*b,] == M[a,] %*% M[b,])
#> [1] TRUE
```

In the second line above, note that the left hand side of the equality is group composition, while the right hand side is matrix multiplication. We can further verify that \(\phi\left(a^{-1}\right)=\phi(a)^{-1}\):

```
all(M[inverse(a),] == solve(M[a,]))
#> [1] TRUE
```

again with group inversion on the left and matrix inversion on the right.

The map \(\psi(a)=\) `M[,a]`

is not a homomorphism:

```
all(M[,a*b] == M[,a] %*% M[,b])
#> [1] FALSE
```

but we can “rescue” it by considering a group operation \(\star\) defined by \(a\star b=b\circ a\):

```
all(M[,b*a] == M[,a] %*% M[,b])
#> [1] TRUE
```