Normal syllable lists for free groups #
A syllable list [(x₁, e₁), …, (x_k, e_k)] represents the free group element
syllableProd s = x₁ ^ e₁ ⋯ x_k ^ e_k; it is IsSyllableNormal when every exponent is nonzero
and consecutive generators are distinct. exists_isSyllableNormal writes any free group element
as the product of a normal syllable list.
@[simp]
The empty syllable list represents the identity.
A syllable list is normal iff its exponents are nonzero and consecutive generators are distinct.
theorem
FreeGroup.exists_isSyllableNormal
{X : Type u_1}
(w : FreeGroup X)
:
∃ (s : List (X × ℤ)), IsSyllableNormal s ∧ syllableProd s = w
Every element of a free group is the product of a normal syllable list.