FenchelNielsenZomorrodian.Discrete.Coordinates.ZModFamily

3 Theorem | 2 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
  • Mathlib.Data.ZMod.Basic
Imported by

Declarations

abbrev ZModCoordinateFamily {ι : Type*} (periods : ι → ℕ) :=
  ∀ i : ι, ZMod (periods i)

The family of cyclic coordinates used to record period data modulo each period.

def zmodBasisVector {ι : Type*} [DecidableEq ι] (periods : ι → ℕ) (i : ι) :
    ZModCoordinateFamily periods :=
  Pi.single i (1 : ZMod (periods i))

The standard basis vector in the corresponding cyclic-coordinate family.

theorem zmodBasisVector_nsmul_eq_zero
    {ι : Type*} [DecidableEq ι] (periods : ι → ℕ) (i : ι) :
    periods i • zmodBasisVector periods i = 0

A basis vector in the cyclic-coordinate family is killed by its period scalar.

Show proof
theorem zmodBasisVector_addOrderOf
    {ι : Type*} [DecidableEq ι] (periods : ι → ℕ) (i : ι) :
    addOrderOf (zmodBasisVector periods i) = periods i

Adding the coordinate order does not change the corresponding \(\mathbb{Z}/n\mathbb{Z}\) basis vector.

Show proof
theorem zmodBasisVector_pair_neg_addOrderOf
    {ι : Type*} [DecidableEq ι] (periods : ι → ℕ) (i : ι) :
    addOrderOf (zmodBasisVector periods i, -zmodBasisVector periods i) =
      periods i

Adding the coordinate order to the negative paired \(\mathbb{Z}/n\mathbb{Z}\) basis vector leaves the class unchanged.

Show proof
noncomputable def zmodCoordinateFamily_finite
    {ι : Type*} [Fintype ι] (periods : ι → ℕ) (hpos : ∀ i, 0 < periods i) :
    Finite (ZModCoordinateFamily periods) := by
  classical
  letI (i : ι) : NeZero (periods i) := ⟨ne_of_gt (hpos i)⟩
  letI (i : ι) : Fintype (ZMod (periods i)) := ZMod.fintype (periods i)
  exact Finite.of_fintype (ZModCoordinateFamily periods)

The integer-coordinate family used by the presentation reduction is finite.