ReidemeisterSchreier.Discrete.OpenSubgroups.Generators

18 Theorem | 5 Definition | 1 Abbreviation

This module develops the rewriting and basis constructions behind the subgroup calculations. It tracks words and relations through the chosen transversal to obtain the required presentation or basis statements.

import
Imported by

Declarations

noncomputable def schreierTransversalRightCosetAction {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T) :
    MulAction (FreeGroup X) T := by
  letI : MulAction (FreeGroup X) (Quotient (QuotientGroup.rightRel L)) :=
    rightCosetLeftMulActionByInverse L
  let e : T ≃ Quotient (QuotientGroup.rightRel L) := hT.1.rightQuotientEquiv.symm
  refine
    { smul := fun g t => e.symm (g • e t)
      one_smul := by
        intro t
        change e.symm (1 • e t) = t
        rw [one_smul]
        exact e.left_inv t
      mul_smul := by
        intro g h t
        change e.symm ((g * h) • e t) = e.symm (g • e (e.symm (h • e t)))
        rw [mul_smul, e.apply_symm_apply] }

The Schreier transversal itself carries the same right-coset action, transported along the equivalence with right cosets.

noncomputable def schreierRepresentative {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T) :
    FreeGroup X → T :=
  hT.1.toRightFun

The chosen representative of a right coset attached to a right Schreier transversal.

@[simp] theorem schreierRepresentative_eq_of_mem {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {t : FreeGroup X} (ht : t ∈ T) :
  schreierRepresentative (X := X) hT t = ⟨t, ht⟩

The Schreier representative is the chosen transversal element determined by the stated subgroup-membership condition.

Show proof
@[simp] theorem schreierRepresentative_eq_one_of_mem {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {g : FreeGroup X} (hg : g ∈ L) :
    schreierRepresentative (X := X) hT g = ⟨1, hT.2.1⟩

The Schreier representative is the chosen transversal element determined by the stated subgroup-membership condition.

Show proof
theorem schreierRepresentative_eq_of_mem_mul_inv_mem {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {g t : FreeGroup X} (ht : t ∈ T) (hgt : g * t⁻¹ ∈ L) :
    schreierRepresentative (X := X) hT g = ⟨t, ht⟩

The Schreier representative is the chosen transversal element determined by the stated subgroup-membership condition.

Show proof
theorem prefixParent_mem_of_mem {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {t : FreeGroup X} (ht : t ∈ T) :
    FreeGroup.prefixParent t ∈ T

Membership of a word in the prefix tree implies membership of its prefix parent.

Show proof
theorem schreierTransversalRightCosetAction_smul {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    (g : FreeGroup X) (t : T) :
    letI

The right-coset action updates a Schreier representative by multiplying on the right and then choosing the representative of the resulting coset.

Show proof
noncomputable def schreierGenerator {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T) (t : FreeGroup X) (x : X) : L := by
  refine
    ⟨t * FreeGroup.of x *
        ((schreierRepresentative (X := X) hT (t * FreeGroup.of x) : T) : FreeGroup X)⁻¹, ?_⟩
  exact hT.1.mul_inv_toRightFun_mem (t * FreeGroup.of x)

The Schreier expression attached to any word \(t\) and basis element \(x\).

abbrev NontrivialSchreierPair {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T) : Type u :=
  {p : T × X // schreierGenerator (X := X) hT ((p.1 : T) : FreeGroup X) p.2 ≠ 1}

The canonical index type for the nontrivial Schreier generators attached to a right Schreier transversal. This pair-indexed type is the preferred basis index; the value-set Schreier generator set records the same nontrivial generators by their subgroup values.

noncomputable def nontrivialSchreierPairGenerator {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T) :
    NontrivialSchreierPair (X := X) hT → L :=
  fun p => schreierGenerator (X := X) hT ((p.1.1 : T) : FreeGroup X) p.1.2

The Schreier generator value represented by a nontrivial Schreier pair.

@[simp] theorem nontrivialSchreierPairGenerator_apply {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    (p : NontrivialSchreierPair (X := X) hT) :
    nontrivialSchreierPairGenerator (X := X) hT p =
      schreierGenerator (X := X) hT ((p.1.1 : T) : FreeGroup X) p.1.2

The Schreier generator or pair map is evaluated by the chosen section and coset representative.

Show proof
def schreierGeneratorSet {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T) : Set L :=
  {z | ∃ t ∈ T, ∃ x : X, z = schreierGenerator (X := X) hT t x ∧ z ≠ 1}

The classical Schreier generator value set attached to a right Schreier transversal. This value set records the resulting Schreier generators, while the nontrivial Schreier pairs provide the preferred basis index.

@[simp] theorem mem_schreierGeneratorSet_iff {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T) {z : L} :
    z ∈ schreierGeneratorSet (X := X) hT ↔
      ∃ t ∈ T, ∃ x : X, z = schreierGenerator (X := X) hT t x ∧ z ≠ 1

Membership in the Schreier generator set is equivalent to the displayed generator condition.

Show proof
theorem schreierGenerator_mem_schreierGeneratorSet_of_mem_of_ne_one
    {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {t : FreeGroup X} (ht : t ∈ T) (x : X)
    (hne : schreierGenerator (X := X) hT t x ≠ 1) :
    schreierGenerator (X := X) hT t x ∈ schreierGeneratorSet (X := X) hT

A nontrivial Schreier generator associated to an element of the transversal lies in the Schreier generator set.

Show proof
theorem schreierGenerator_mem_schreierGeneratorSet_of_ne_one
    {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    (t : T) (x : X)
    (hne : schreierGenerator (X := X) hT (t : FreeGroup X) x ≠ 1) :
    schreierGenerator (X := X) hT (t : FreeGroup X) x ∈
      schreierGeneratorSet (X := X) hT

A nontrivial Schreier generator belongs to the Schreier generator set.

Show proof
theorem schreierGeneratorSet_eq_range_nontrivialSchreierPairGenerator
    {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T) :
    schreierGeneratorSet (X := X) hT =
      Set.range (nontrivialSchreierPairGenerator (X := X) hT)

The value-set formulation is precisely the range of the pair-indexed generator map.

Show proof
@[simp] theorem schreierGenerator_eq_one_of_mem {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {t : FreeGroup X} {x : X}
    (htx : t * FreeGroup.of x ∈ T) :
    schreierGenerator (X := X) hT t x = 1

The Schreier generator is trivial exactly in the corresponding subgroup-membership case.

Show proof
@[simp] theorem schreierGenerator_eq_of_mul_mem {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {t : FreeGroup X} {x : X}
    (htx : t * FreeGroup.of x ∈ L) :
    schreierGenerator (X := X) hT t x = ⟨t * FreeGroup.of x, htx⟩

If the representative-generator product lies in the subgroup, the corresponding Schreier generator is the represented subgroup element.

Show proof
theorem schreierGenerator_eq_one_iff {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    {hT : IsRightSchreierTransversal (X := X) L T}
    {t : FreeGroup X} {x : X} :
    schreierGenerator (X := X) hT t x = 1 ↔
      ((schreierRepresentative (X := X) hT (t * FreeGroup.of x) : T) : FreeGroup X) =
        t * FreeGroup.of x

The Schreier generator is trivial exactly under the corresponding coset condition.

Show proof
theorem exists_rightSchreierTransversal_of_minimalGeneratorPower
    {X : Type u} [DecidableEq X] {L : Subgroup (FreeGroup X)} (x : X) {N : ℕ}
    (hN : 0 < N)
    (hpow : (FreeGroup.of x) ^ N ∈ L)
    (hmin : ∀ m : ℕ, 0 < m → m < N → (FreeGroup.of x) ^ m ∉ L) :
    ∃ T : Set (FreeGroup X), ∃ hT : IsRightSchreierTransversal (X := X) L T,
      (FreeGroup.of x) ^ (N - 1) ∈ T ∧
        schreierGenerator (X := X) hT ((FreeGroup.of x) ^ (N - 1)) x =
          ⟨(FreeGroup.of x) ^ N, hpow⟩

Pointed discrete Reidemeister--Schreier statement: if \(x^N\) is the first positive power of a free generator landing in \(L\), one may choose a right Schreier transversal whose distinguished Schreier generator is exactly \(x^N\).

Show proof
theorem schreierRepresentative_eq_prefixParent_of_cancels {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {t : FreeGroup X} {x : X}
    (ht : t ∈ T) (hw : FreeGroup.toWord t ≠ [])
    (hlast : (FreeGroup.toWord t).getLast hw = (x, false)) :
    schreierRepresentative (X := X) hT (t * FreeGroup.of x) =
      ⟨FreeGroup.prefixParent t, prefixParent_mem_of_mem (X := X) hT ht⟩

If the last letter of a transversal word cancels with x, the Schreier representative of t x is the prefix parent of t.

Show proof
theorem schreierRepresentative_eq_of_prefixParent_last_pos {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {t : FreeGroup X} (ht : t ∈ T) {x : X}
    (hw : FreeGroup.toWord t ≠ [])
    (hlast : (FreeGroup.toWord t).getLast hw = (x, true)) :
    schreierRepresentative (X := X) hT (FreeGroup.prefixParent t * FreeGroup.of x) = ⟨t, ht⟩

If a transversal word ends in x, the Schreier representative of its prefix parent multiplied by x is the original word.

Show proof
@[simp] theorem schreierGenerator_eq_one_of_cancels {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {t : FreeGroup X} {x : X}
    (ht : t ∈ T) (hw : FreeGroup.toWord t ≠ [])
    (hlast : (FreeGroup.toWord t).getLast hw = (x, false)) :
    schreierGenerator (X := X) hT t x = 1

If the last letter of a transversal word cancels with x, the corresponding Schreier generator is trivial.

Show proof
@[simp] theorem schreierGenerator_eq_one_of_prefixParent_last_pos {X : Type u} [DecidableEq X]
    {L : Subgroup (FreeGroup X)} {T : Set (FreeGroup X)}
    (hT : IsRightSchreierTransversal (X := X) L T)
    {t : FreeGroup X} (ht : t ∈ T) {x : X}
    (hw : FreeGroup.toWord t ≠ [])
    (hlast : (FreeGroup.toWord t).getLast hw = (x, true)) :
    schreierGenerator (X := X) hT (FreeGroup.prefixParent t) x = 1

If a transversal word ends in x, the Schreier generator attached to its prefix parent and x is trivial.

Show proof