FenchelNielsenZomorrodian.Discrete.Singerman.FreeGroupWords

7 Theorem

This module studies free group words for fenchel nielsen zomorrodian. A finite list indexed by \(\mathrm{Fin}(1+n)\) splits into its first entry and the remaining \(n\) entries. A finite list indexed by \(\mathrm{Fin}(2+n)\) splits into its first two entries and the remaining \(n\) entries.

import
Imported by

Declarations

theorem list_ofFn_one_add {α : Type*} {n : ℕ} (f : Fin (1 + n) → α) :
    List.ofFn f =
      f ⟨0, by omega⟩ ::
        List.ofFn (fun j : Fin n => f ⟨1 + j.val, by omega⟩)

A finite list indexed by \(\mathrm{Fin}(1+n)\) splits into its first entry and the remaining \(n\) entries.

Show proof
theorem list_ofFn_two_add {α : Type*} {n : ℕ} (f : Fin (2 + n) → α) :
    List.ofFn f =
      f ⟨0, by omega⟩ :: f ⟨1, by omega⟩ ::
        List.ofFn (fun j : Fin n => f ⟨2 + j.val, by omega⟩)

A finite list indexed by \(\mathrm{Fin}(2+n)\) splits into its first two entries and the remaining \(n\) entries.

Show proof
theorem freeGroup_of_pow_ne_one {X : Type*}
    (x : X) {n : ℕ} (hn : n ≠ 0) :
    (FreeGroup.of x : FreeGroup X) ^ n ≠ 1

A nonzero power of a free generator is nontrivial.

Show proof
private theorem freeGroup_isReduced_pow_mul_of_mul_pow_inv_word {X : Type*}
    {x y : X} (hxy : x ≠ y) (a b : ℕ) :
    FreeGroup.IsReduced
      (List.replicate a (x, true) ++ [(y, true)] ++ List.replicate b (x, false))

The explicit word with \(a\) copies of \(x\), then \(y\), then \(b\) copies of \(x^{-1}\), is reduced when \(x e y\).

Show proof
theorem freeGroup_toWord_pow_mul_of_mul_pow_inv {X : Type*} [DecidableEq X]
    {x y : X} (hxy : x ≠ y) (a b : ℕ) :
    FreeGroup.toWord
        ((FreeGroup.of x : FreeGroup X) ^ a * FreeGroup.of y *
          ((FreeGroup.of x : FreeGroup X) ^ b)⁻¹) =
      List.replicate a (x, true) ++ [(y, true)] ++ List.replicate b (x, false)

The reduced word for \(x^a y x^{-b}\) is the explicit list of \(a\) positive \(x\) letters, one positive \(y\), and \(b\) negative \(x\) letters.

Show proof
private theorem freeGroup_pow_mul_of_mul_pow_inv_word_initialLength {X : Type*} [DecidableEq X]
    {x y : X} (hxy : x ≠ y) (a b : ℕ) :
    (List.takeWhile (fun q : X × Bool => q = (x, true))
      (List.replicate a (x, true) ++ [(y, true)] ++ List.replicate b (x, false))).length =
        a

In the explicit reduced word for \(x^a y x^{-b}\), the initial run of positive \(x\) letters has length \(a\).

Show proof
theorem freeGroup_pow_mul_of_mul_pow_inv_left_exponent_eq_of_eq {X : Type*}
    {x y : X} (hxy : x ≠ y) {a b c d : ℕ}
    (h :
      (FreeGroup.of x : FreeGroup X) ^ a * FreeGroup.of y *
          ((FreeGroup.of x : FreeGroup X) ^ b)⁻¹ =
        (FreeGroup.of x : FreeGroup X) ^ c * FreeGroup.of y *
          ((FreeGroup.of x : FreeGroup X) ^ d)⁻¹) :
    a = c

Equality of words \(x^a y x^{-b}=x^c y x^{-d}\) with \(x e y\) forces \(a=c\).

Show proof