FenchelNielsenZomorrodian.Discrete.Singerman.CyclicProductIdentities

11 Theorem | 2 Definition

This module develops the maps induced by continuous homomorphisms. It organizes the relevant quotient pullbacks and finite-stage maps, then proves the compatibility statements needed for the completed construction.

import
Imported by

Declarations

def conjugateRangeProduct {G : Type*} [Group G] (x t : G) (n : ℕ) : G :=
  ((List.finRange n).map fun k : Fin n => x ^ (k : ℕ) * t * (x ^ (k : ℕ))⁻¹).prod

Definition of the conjugate range product used in the Singerman cyclic-product calculation.

theorem MonoidHom.map_list_prod_ofFn₂
    {M N : Type*} [Monoid M] [Monoid N] (f : M →* N) {p n : ℕ}
    (g : Fin p → Fin n → M) :
    f ((List.ofFn (fun k : Fin p => (List.ofFn (fun j : Fin n => g k j)).prod)).prod) =
      (List.ofFn (fun k : Fin p =>
        (List.ofFn (fun j : Fin n => f (g k j))).prod)).prod

A monoid homomorphism sends the product over the finite \(\mathrm{ofFn}_2\) list to the product of its image list.

Show proof
theorem list_ofFn_reverse_last_desc {α : Type*} {p : ℕ} (hp : 0 < p)
    (B : Fin p → α) :
    (List.ofFn B).reverse =
      B ⟨p - 1, by omega⟩ ::
        List.ofFn (fun i : Fin (p - 1) => B ⟨p - 2 - i.val, by omega⟩)

The reversed finite list is the descending list ending at the last index.

Show proof
theorem descending_block_inv_product_eq {G : Type*} [Group G] {p : ℕ} (hp : 0 < p)
    (A : G) (B : Fin p → G) :
    (B ⟨p - 1, by omega⟩ * A)⁻¹ *
        (List.ofFn (fun i : Fin (p - 1) => (B ⟨p - 2 - i.val, by omega⟩)⁻¹)).prod =
      A⁻¹ * (List.ofFn B).prod⁻¹

The descending inverse block product equals the corresponding regrouped cyclic product.

Show proof
theorem conjugateRangeProduct_list_prod_eq_blocks
    {G : Type*} [Group G] (x : G) {n : ℕ} (t : Fin n → G) (p : ℕ) :
    conjugateRangeProduct x (List.ofFn t).prod p =
      (List.ofFn (fun k : Fin p =>
        (List.ofFn (fun j : Fin n =>
          x ^ (k : ℕ) * t j * (x ^ (k : ℕ))⁻¹)).prod)).prod

Expanding a conjugate range product over a finite list gives the corresponding block product.

Show proof
theorem conjugateRangeProduct_succ {G : Type*} [Group G] (x t : G) (n : ℕ) :
    conjugateRangeProduct x t (n + 1) =
      conjugateRangeProduct x t n * (x ^ n * t * (x ^ n)⁻¹)

Successor formula for the conjugate range product.

Show proof
theorem pow_mul_pow_mul_conjugateRangeProduct_eq_one_of_mul_eq_one
    {G : Type*} [Group G] (x y t : G) (n : ℕ) (h : x * y * t = 1) :
    x ^ n * y ^ n * conjugateRangeProduct x t n = 1

The conjugate range product is trivial whenever the corresponding product relation is trivial.

Show proof
theorem pow_mul_pow_mul_conjugateBlockProduct_eq_one_of_mul_eq_one
    {G : Type*} [Group G] (x y : G) {n : ℕ} (t : Fin n → G) (p : ℕ)
    (h : x * y * (List.ofFn t).prod = 1) :
    x ^ p * y ^ p *
        (List.ofFn (fun k : Fin p =>
          (List.ofFn (fun j : Fin n =>
            x ^ (k : ℕ) * t j * (x ^ (k : ℕ))⁻¹)).prod)).prod = 1

The displayed block-product relation follows from the corresponding product relation after regrouping the conjugate blocks.

Show proof
theorem pow_mul_pow_mul_conjugateBlockProduct_mem_normalClosure_of_mul_mem_normalClosure
    {G : Type*} [Group G] {R : Set G} (x y : G) {n : ℕ} (t : Fin n → G) (p : ℕ)
    (h : x * y * (List.ofFn t).prod ∈ Subgroup.normalClosure R) :
    x ^ p * y ^ p *
        (List.ofFn (fun k : Fin p =>
          (List.ofFn (fun j : Fin n =>
            x ^ (k : ℕ) * t j * (x ^ (k : ℕ))⁻¹)).prod)).prod ∈
      Subgroup.normalClosure R

The conjugate block product lies in the normal closure whenever the corresponding product relation does.

Show proof
def negOneCycleTailProduct {G : Type*} [Group G] (x y : G) (n : ℕ) : G :=
  (List.ofFn (fun i : Fin n =>
    x ^ (n - i.val) * y * (x ^ (n - 1 - i.val))⁻¹)).prod

The tail product in the negative-one cycle decomposition.

theorem negOneCycleTailProduct_succ {G : Type*} [Group G] (x y : G) (n : ℕ) :
    negOneCycleTailProduct x y (n + 1) =
      x ^ (n + 1) * y * (x ^ n)⁻¹ * negOneCycleTailProduct x y n

Successor formula for the negative-one cycle tail product.

Show proof
theorem negOneCycleTailProduct_eq {G : Type*} [Group G] (x y : G) (n : ℕ) :
    negOneCycleTailProduct x y n = x ^ n * y ^ n

Closed form for the negative-one cycle tail product.

Show proof
theorem negOneCycleProduct_eq_pow {G : Type*} [Group G] (x y : G) (n : ℕ) :
    y * (x ^ n)⁻¹ * negOneCycleTailProduct x y n = y ^ (n + 1)

The negative-one cycle product is the corresponding power product after cyclic regrouping.

Show proof