## ยง Permutations-and-lyndon-factorization

For a string `s`

, the Lyndon factorization writes `s`

as the concatenation of
substrings `t1`

, `t2`

, ..., `tn`

, such that:
- each
`ti`

is a simple word. That is, it is lexicographically smaller than all of its cyclic shifts. - the words are in non-increasing order:
`t1 >= t2 >= t3 ... >= tn`

.

For example, given the word `banana`

, the lyndon factorization is:
```
b; an; an; a;
```

We can define a notation for writing permutation as:
- Each term in a cycle is written in
*ascending * order. - Cycles are written in
*descending * order of the first element. - Single element are ignored.

```
(7) (2 3) (1 4 5)
```

If we treat it as a string `723145`

,
the duval algorithm provides the decomposition:
```
7; 23; 145;
```

So, we can treat the duval algorithm as a way to recover the permutation given
the raw string. It's a nice way to *remember * the definition of lyndon
decomposition if nothng else.