Documentation

GQ2.FoxHeisenberg.Heisenberg

§5.2 definitions: the Heisenberg lift H(A) ⋊ C and the finite Stokes formula #

Split off from GQ2.FoxHeisenberg, building on GQ2.FoxHeisenberg.Basic. This file provides:

See GQ2.FoxHeisenberg for the umbrella module docstring.

The Heisenberg lift group H(A) ⋊ C (§5.2) #

structure GQ2.FoxH.HeisLift (A : Type u_1) (C : Type u_2) [AddCommGroup A] :
Type (max u_1 u_2)

H(A) ⋊ C: quadruples (a, λ, z, g) with the §5.2 multiplication (a,λ,z)(a',λ',z') = (a+a', λ+λ', z+z'+λ(a')) twisted by the diagonal C-action. The central coordinate z is the carrier of the mixed derivatives.

  • a : A

    The A-coordinate (the first derivative D_u).

  • l : ElemDual A

    The dual coordinate (D^∨_u).

  • z : ZMod 2

    The central coordinate (β_u).

  • g : C

    The base value in C.

Instances For
    theorem GQ2.FoxH.HeisLift.ext_iff {A : Type u_1} {C : Type u_2} {inst✝ : AddCommGroup A} {x y : HeisLift A C} :
    x = y x.a = y.a x.l = y.l x.z = y.z x.g = y.g
    theorem GQ2.FoxH.HeisLift.ext {A : Type u_1} {C : Type u_2} {inst✝ : AddCommGroup A} {x y : HeisLift A C} (a : x.a = y.a) (l : x.l = y.l) (z : x.z = y.z) (g : x.g = y.g) :
    x = y
    @[implicit_reducible]
    noncomputable instance GQ2.FoxH.HeisLift.instOne {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] :
    One (HeisLift A C)
    Equations
    @[implicit_reducible]
    noncomputable instance GQ2.FoxH.HeisLift.instMul {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] :
    Mul (HeisLift A C)
    Equations
    @[implicit_reducible]
    noncomputable instance GQ2.FoxH.HeisLift.instInv {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] :
    Inv (HeisLift A C)
    Equations
    @[simp]
    theorem GQ2.FoxH.HeisLift.one_a {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] :
    a 1 = 0
    @[simp]
    theorem GQ2.FoxH.HeisLift.one_l {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] :
    l 1 = 0
    @[simp]
    theorem GQ2.FoxH.HeisLift.one_z {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] :
    z 1 = 0
    @[simp]
    theorem GQ2.FoxH.HeisLift.one_g {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] :
    g 1 = 1
    @[simp]
    theorem GQ2.FoxH.HeisLift.mul_a {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) :
    (p * q).a = p.a + p.g q.a
    @[simp]
    theorem GQ2.FoxH.HeisLift.mul_l {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) :
    (p * q).l = p.l + p.g q.l
    @[simp]
    theorem GQ2.FoxH.HeisLift.mul_z {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) :
    (p * q).z = p.z + q.z + p.l (p.g q.a)
    @[simp]
    theorem GQ2.FoxH.HeisLift.mul_g {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) :
    (p * q).g = p.g * q.g
    @[simp]
    theorem GQ2.FoxH.HeisLift.inv_a {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p : HeisLift A C) :
    p⁻¹.a = -(p.g⁻¹ p.a)
    @[simp]
    theorem GQ2.FoxH.HeisLift.inv_l {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p : HeisLift A C) :
    p⁻¹.l = -(p.g⁻¹ p.l)
    @[simp]
    theorem GQ2.FoxH.HeisLift.inv_z {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p : HeisLift A C) :
    p⁻¹.z = p.z + p.l p.a
    @[simp]
    theorem GQ2.FoxH.HeisLift.inv_g {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p : HeisLift A C) :
    p⁻¹.g = p.g⁻¹
    @[implicit_reducible]
    noncomputable instance GQ2.FoxH.HeisLift.instGroup {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] :
    Group (HeisLift A C)
    Equations
    • One or more equations did not get rendered due to their size.
    instance GQ2.FoxH.HeisLift.instFinite {C : Type u_1} {A : Type u_2} [AddCommGroup A] [Finite A] [Finite C] :
    Finite (HeisLift A C)

    H(A) ⋊ C is finite when A and C are (all four coordinates range over finite types).

    def GQ2.FoxH.HeisLift.gHom {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] :
    HeisLift A C →* C

    The base projection HeisLift A C →* C.

    Equations
    Instances For
      noncomputable def GQ2.FoxH.HeisLift.zc {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] (w : ZMod 2) :

      The central element ⟨0, 0, w, 1⟩ (the paper's z(w)). It is genuinely central.

      Equations
      Instances For
        @[simp]
        theorem GQ2.FoxH.HeisLift.zc_z {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] (w : ZMod 2) :
        (zc w).z = w
        @[simp]
        theorem GQ2.FoxH.HeisLift.zc_zero {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] :
        zc 0 = 1
        theorem GQ2.FoxH.HeisLift.zc_add {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (u v : ZMod 2) :
        zc (u + v) = zc u * zc v

        zc is additive in its argument: z(u+v) = z(u)·z(v).

        theorem GQ2.FoxH.HeisLift.zc_comm {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (w : ZMod 2) (q : HeisLift A C) :
        zc w * q = q * zc w

        zc w is central in H(A) ⋊ C.

        noncomputable def GQ2.FoxH.HeisLift.zcHom {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] :
        Multiplicative (ZMod 2) →* HeisLift A C

        The central factor z(·) as a homomorphism Multiplicative (ZMod 2) →* H(A) ⋊ C.

        Equations
        Instances For
          theorem GQ2.FoxH.HeisLift.zcHom_comm {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (v : Multiplicative (ZMod 2)) (q : HeisLift A C) :
          zcHom v * q = q * zcHom v

          The image of zcHom is central.

          theorem GQ2.FoxH.HeisLift.conj_gen {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (a : A) (lam : ElemDual A) (g : C) :
          { a := a, l := 0, z := 0, g := 1 }⁻¹ * { a := 0, l := lam, z := 0, g := g } * { a := a, l := 0, z := 0, g := 1 } = { a := g a - a, l := lam, z := lam (g a), g := g }

          The conjugation computation p_a⁻¹ · ⟨0,λ,0,g⟩ · p_a = ⟨g·a − a, λ, λ(g·a), g⟩, where p_a = ⟨a,0,0,1⟩. This is the algebraic heart of Lemma 5.7's left form: conjugating a g=1-slot generator by the A-translation p_a shifts its A-coordinate by the coboundary g·a − a and drops the central defect λ(g·a).

          theorem GQ2.FoxH.HeisLift.conj_gen_r {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (a : A) (lam : ElemDual A) (g : C) :
          { a := 0, l := lam, z := 0, g := 1 }⁻¹ * { a := a, l := 0, z := 0, g := g } * { a := 0, l := lam, z := 0, g := 1 } = { a := a, l := g lam - lam, z := -lam a, g := g }

          The dual conjugation computation q_λ⁻¹ · ⟨a,0,0,g⟩ · q_λ = ⟨a, g·λ − λ, −λ(a), g⟩, where q_λ = ⟨0,λ,0,1⟩. This is the algebraic heart of Lemma 5.7's right form: conjugating a g=1-slot generator by the dual translation q_λ shifts its dual coordinate by the coboundary g·λ − λ and records the central defect −λ(a).

          theorem GQ2.FoxH.HeisLift.commP_z_fiber {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) (hp : p.g = 1) (hq : q.g = 1) :
          (commP p q).z = p.l q.a + q.l p.a

          The Heisenberg commutator central coordinate (symplectic B-form), in the g = 1 fiber H(A) = A × A^∨ × 𝔽₂. For p, q with trivial base value, the central coordinate of the commutator [p,q] = p⁻¹q⁻¹pq is the alternating pairing p.l(q.a) + q.l(p.a) (the sign is absorbed in char 2). This is the extraspecial/Heisenberg central kernel B of Lemma 5.14: it supplies the [d₀,z₀] mixed contribution λ(U⁻¹c) + (U^∨λ)(c) = λ((U⁻¹+U)c).

          The trivially-based toolkit for the mixed Hessian (Lemma 5.14) #

          Mirror of the WordLift toolkit for the central coordinate. On elements whose base g acts trivially on the module, .a and .l are additive homs and .z follows the Heisenberg cocycle (p*q).z = p.z + q.z + p.l(q.a). This drives the h₀ ↦ λ(c) / [d₀,z₀] ↦ 0 central ledger.

          theorem GQ2.FoxH.HeisLift.smul_elemdual_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (g : C) (hg : ∀ (a : A), g a = a) (lam : ElemDual A) :
          g lam = lam

          A C-element acting trivially on the module acts trivially on its 𝔽₂-dual (contragredient).

          theorem GQ2.FoxH.HeisLift.mul_g_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) (hp : ∀ (a : A), p.g a = a) (hq : ∀ (a : A), q.g a = a) (a : A) :
          (p * q).g a = a
          theorem GQ2.FoxH.HeisLift.inv_g_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p : HeisLift A C) (hp : ∀ (a : A), p.g a = a) (a : A) :
          p⁻¹.g a = a
          theorem GQ2.FoxH.HeisLift.conjP_g_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p g : HeisLift A C) (hp : ∀ (a : A), p.g a = a) (a : A) :
          (conjP p g).g a = a
          theorem GQ2.FoxH.HeisLift.commP_g_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) (hp : ∀ (a : A), p.g a = a) (hq : ∀ (a : A), q.g a = a) (a : A) :
          (commP p q).g a = a
          theorem GQ2.FoxH.HeisLift.mul_a_of_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) (hp : ∀ (a : A), p.g a = a) :
          (p * q).a = p.a + q.a
          theorem GQ2.FoxH.HeisLift.mul_l_of_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) (hp : ∀ (a : A), p.g a = a) :
          (p * q).l = p.l + q.l
          theorem GQ2.FoxH.HeisLift.mul_z_of_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) (hp : ∀ (a : A), p.g a = a) :
          (p * q).z = p.z + q.z + p.l q.a
          theorem GQ2.FoxH.HeisLift.inv_a_of_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p : HeisLift A C) (hp : ∀ (a : A), p.g a = a) :
          p⁻¹.a = -p.a
          theorem GQ2.FoxH.HeisLift.inv_l_of_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p : HeisLift A C) (hp : ∀ (a : A), p.g a = a) :
          p⁻¹.l = -p.l

          Conjugation by a g-slice element g (g.a = 0, g.l = 0, g.z = 0) with trivially-acting base preserves all three Heisenberg coordinates — it only conjugates the base. This is φ = conj by g₀ in the h₀-shadow (g₀ = σ₂² lands in the base slice on the x₀-supported rep).

          theorem GQ2.FoxH.HeisLift.conjP_a_of_gslice {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p g : HeisLift A C) (hga : g.a = 0) (hgt : ∀ (a : A), g.g a = a) :
          (conjP p g).a = p.a
          theorem GQ2.FoxH.HeisLift.conjP_l_of_gslice {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p g : HeisLift A C) (hgl : g.l = 0) (hgt : ∀ (a : A), g.g a = a) :
          (conjP p g).l = p.l
          theorem GQ2.FoxH.HeisLift.conjP_z_of_gslice {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p g : HeisLift A C) (hga : g.a = 0) (hgl : g.l = 0) (hgz : g.z = 0) (hgt : ∀ (a : A), g.g a = a) :
          (conjP p g).z = p.z
          theorem GQ2.FoxH.HeisLift.conjP_a_of_slice {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p g : HeisLift A C) (hga : g.a = 0) :
          (conjP p g).a = g.g⁻¹ p.a

          Conjugation by a base-slice element g (g.a = 0), whose base may act nontrivially: (conjP p g).a = g.g⁻¹ • p.a. Generalises conjP_a_of_gslice (drops the base-triviality; used in the ramified Hessian where g₀ = σ₂² acts by ).

          theorem GQ2.FoxH.HeisLift.conjP_l_of_slice {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p g : HeisLift A C) (hgl : g.l = 0) :
          (conjP p g).l = g.g⁻¹ p.l

          Conjugation by a base-slice element g (g.l = 0): (conjP p g).l = g.g⁻¹ • p.l (dual).

          theorem GQ2.FoxH.HeisLift.conjP_z_of_slice {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p g : HeisLift A C) (hga : g.a = 0) (hgl : g.l = 0) (hgz : g.z = 0) :
          (conjP p g).z = p.z

          Conjugation by a base-slice element g (a = l = z = 0) fixes the central coordinate, even when the base g.g acts nontrivially: (conjP p g).z = p.z.

          theorem GQ2.FoxH.HeisLift.commP_z_of_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) (hp : ∀ (a : A), p.g a = a) (hq : ∀ (a : A), q.g a = a) :
          (commP p q).z = p.l q.a + q.l p.a

          The commutator symplectic B-form for trivially-based elements (not just the g = 1 fiber): [p,q].z = p.l(q.a) + q.l(p.a). Gives c₀ = [d₀,z₀] ↦ 0 once d₀.a = d₀.l = 0.

          theorem GQ2.FoxH.HeisLift.commP_a_of_trivial {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (p q : HeisLift A C) (hp : ∀ (a : A), p.g a = a) (hq : ∀ (a : A), q.g a = a) :
          (commP p q).a = 0

          The A-coordinate of a commutator of trivially-based elements vanishes (.a is additive).

          noncomputable def GQ2.FoxH.heisMarking {C : Type u_1} {A : Type u_2} [AddCommGroup A] (t : Marking C) (x : Fin 4A) (y : Fin 4ElemDual A) :

          The Heisenberg-lifted marking over t with offsets x and dual offsets y.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            noncomputable def GQ2.FoxH.mixedB {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (t : Marking C) (x : Fin 4A) (y : Fin 4ElemDual A) :
            ZMod 2

            B_{ρ,A} (Prop 5.8): the traced mixed central coordinate — the sum of the central coordinates of the two evaluated relators (not the central coordinate of their product).

            Equations
            Instances For

              Lemma 5.7: the finite-word Stokes formula (general form) #

              noncomputable def GQ2.FoxH.stokesEval {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (x : Fin nA) (y : Fin nElemDual A) :
              FreeGroup (Fin n) →* HeisLift A C

              Evaluation of an ordinary free-group word after the substitution gᵢ ↦ (xᵢ, yᵢ, 0; cᵢ) ∈ H(A) ⋊ C (Lemma 5.7).

              Equations
              Instances For
                def GQ2.FoxH.expMod2 {n : } (i : Fin n) :
                FreeGroup (Fin n) →* Multiplicative (ZMod 2)

                The mod-2 total exponent ε_i(r) of the i-th generator in an ordinary word.

                Equations
                • GQ2.FoxH.expMod2 i = FreeGroup.lift fun (j : Fin n) => Multiplicative.ofAdd (if j = i then 1 else 0)
                Instances For
                  @[simp]
                  theorem GQ2.FoxH.stokesEval_g {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (x : Fin nA) (y : Fin nElemDual A) (r : FreeGroup (Fin n)) :
                  ((stokesEval c x y) r).g = (FreeGroup.lift c) r

                  The base coordinate of a Stokes evaluation is the underlying word value in C.

                  theorem GQ2.FoxH.stokesEval_zero {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (y : Fin nElemDual A) (r : FreeGroup (Fin n)) :
                  ((stokesEval c 0 y) r).a = 0 ((stokesEval c 0 y) r).z = 0

                  With zero A-offsets, the A- and central coordinates of a Stokes evaluation vanish (the elements ⟨0, λ, 0, g⟩ form a subgroup on which the central defect is inert).

                  The conjugation model of the coboundary evaluation (Lemma 5.7, left form) #

                  The generic coboundary substitution x = d⁰a factors, one generator at a time, as ⟨cᵢa−a, yᵢ, 0, cᵢ⟩ = p_a⁻¹ · ⟨0, yᵢ, 0, cᵢ⟩ · p_a · z(yᵢ(cᵢa)) (with p_a = ⟨a,0,0,1⟩). Because z(·) is central, the per-generator central factors telescope into a single z(Σᵢ εᵢ(r)·yᵢ(cᵢa)), and the conjugation commutes with word evaluation. This makes stokesEval c (d⁰a) y = conjPa astokesEval c 0 y · zepsWord an identity of homomorphisms, which we prove by FreeGroup.ext_hom and then read off the z-coordinate.

                  noncomputable def GQ2.FoxH.conjPa {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (a : A) :
                  HeisLift A C →* HeisLift A C

                  Conjugation q ↦ p_a⁻¹ · q · p_a by the A-translation p_a = ⟨a,0,0,1⟩, as a group hom.

                  Equations
                  • GQ2.FoxH.conjPa a = { toFun := fun (q : GQ2.FoxH.HeisLift A C) => { a := a, l := 0, z := 0, g := 1 }⁻¹ * q * { a := a, l := 0, z := 0, g := 1 }, map_one' := , map_mul' := }
                  Instances For
                    theorem GQ2.FoxH.conjPa_z {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (a : A) (q : HeisLift A C) (ha : q.a = 0) (hz : q.z = 0) :
                    ((conjPa a) q).z = q.l (q.g a)

                    The z-coordinate of p_a⁻¹ · q · p_a when q sits in the g-slice (q.a = 0, q.z = 0): conjugation records the central defect q.l (q.g · a).

                    noncomputable def GQ2.FoxH.freeExp {n : } (f : Fin nZMod 2) :
                    FreeGroup (Fin n) →* Multiplicative (ZMod 2)

                    The central exponent word r ↦ ∏ᵢ z(εᵢ(r)·fᵢ) for a mod-2 coefficient vector f, packaged as a hom to Multiplicative (ZMod 2) so that zfreeExp f is the telescoped central factor of a Stokes evaluation.

                    Equations
                    • GQ2.FoxH.freeExp f = FreeGroup.lift fun (i : Fin n) => Multiplicative.ofAdd (f i)
                    Instances For
                      theorem GQ2.FoxH.freeExp_toAdd {n : } (f : Fin nZMod 2) (r : FreeGroup (Fin n)) :
                      Multiplicative.toAdd ((freeExp f) r) = i : Fin n, Multiplicative.toAdd ((expMod2 i) r) * f i

                      The additive value of freeExp f is the ε-counting sum Σᵢ εᵢ(r)·fᵢ (mod 2): each generator i contributes fᵢ once per occurrence, so mod 2 exactly εᵢ(r) times.

                      noncomputable def GQ2.FoxH.epsWord {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (a : A) (y : Fin nElemDual A) :
                      FreeGroup (Fin n) →* Multiplicative (ZMod 2)

                      The central ε-word of the left form: r ↦ ∏ᵢ z(εᵢ(r)·yᵢ(cᵢa)).

                      Equations
                      Instances For
                        theorem GQ2.FoxH.epsWord_toAdd {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (a : A) (y : Fin nElemDual A) (r : FreeGroup (Fin n)) :
                        Multiplicative.toAdd ((epsWord c a y) r) = i : Fin n, Multiplicative.toAdd ((expMod2 i) r) * (y i) (c i a)

                        epsWord's additive value is the ε-counting sum Σᵢ εᵢ(r)·yᵢ(cᵢa) (mod 2).

                        noncomputable def GQ2.FoxH.stokesRhs {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (a : A) (y : Fin nElemDual A) :
                        FreeGroup (Fin n) →* HeisLift A C

                        The RHS conjugation model of stokesEval c (d⁰a) y: conjugate the y-only evaluation by p_a and multiply by the telescoped central factor.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem GQ2.FoxH.stokesEval_eq_rhs {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (a : A) (y : Fin nElemDual A) :
                          stokesEval c (fun (i : Fin n) => c i a - a) y = stokesRhs c a y

                          The Lemma 5.7 factorization (identity of homomorphisms): stokesEval at the coboundary d⁰a equals conjPa a of the y-only evaluation, corrected by the central ε-word.

                          theorem GQ2.FoxH.lemma_5_7_left {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (r : FreeGroup (Fin n)) (hr : (FreeGroup.lift c) r = 1) (a : A) (y : Fin nElemDual A) :
                          ((stokesEval c (fun (i : Fin n) => c i a - a) y) r).z = ((stokesEval c 0 y) r).l a + i : Fin n, Multiplicative.toAdd ((expMod2 i) r) * (y i) (c i a)

                          Lemma 5.7, display (38): for a word r with trivial lower value, evaluating at the generic coboundary x = d⁰a = ((cᵢ−1)a)ᵢ gives β_r(d⁰a, y) = ⟨a, L^{A^∨}_r(y)⟩ + Σᵢ εᵢ(r)·yᵢ(cᵢa).

                          The dual conjugation model (Lemma 5.7, right form) #

                          The dual coboundary substitution y = d⁰λ factors, one generator at a time, as ⟨xᵢ, cᵢλ−λ, 0, cᵢ⟩ = q_λ⁻¹ · ⟨xᵢ, 0, 0, cᵢ⟩ · q_λ · z(λ(xᵢ)) (with q_λ = ⟨0,λ,0,1⟩), mirroring the left form with the roles of the A- and dual coordinates exchanged.

                          noncomputable def GQ2.FoxH.conjQlam {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (lam : ElemDual A) :
                          HeisLift A C →* HeisLift A C

                          Conjugation q ↦ q_λ⁻¹ · q · q_λ by the dual translation q_λ = ⟨0,λ,0,1⟩.

                          Equations
                          • GQ2.FoxH.conjQlam lam = { toFun := fun (q : GQ2.FoxH.HeisLift A C) => { a := 0, l := lam, z := 0, g := 1 }⁻¹ * q * { a := 0, l := lam, z := 0, g := 1 }, map_one' := , map_mul' := }
                          Instances For
                            theorem GQ2.FoxH.conjQlam_z {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] (lam : ElemDual A) (q : HeisLift A C) (hl : q.l = 0) (hz : q.z = 0) :
                            ((conjQlam lam) q).z = lam q.a

                            The z-coordinate of q_λ⁻¹ · q · q_λ when q sits in the g-slice (q.l = 0, q.z = 0): conjugation records the central defect λ(q.a) (the sign is absorbed mod 2).

                            theorem GQ2.FoxH.stokesEval_zero_r {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (x : Fin nA) (r : FreeGroup (Fin n)) :
                            ((stokesEval c x 0) r).l = 0 ((stokesEval c x 0) r).z = 0

                            With zero dual offsets, the dual- and central coordinates of a Stokes evaluation vanish.

                            noncomputable def GQ2.FoxH.stokesRhsR {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (lam : ElemDual A) (x : Fin nA) :
                            FreeGroup (Fin n) →* HeisLift A C

                            The RHS conjugation model of stokesEval c x (d⁰λ) (dual form).

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem GQ2.FoxH.stokesEval_eq_rhsR {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (lam : ElemDual A) (x : Fin nA) :
                              (stokesEval c x fun (i : Fin n) => c i lam - lam) = stokesRhsR c lam x

                              The Lemma 5.7 factorization (dual form): stokesEval at the dual coboundary d⁰λ equals conjQlam lam of the x-only evaluation, corrected by the central ε-word.

                              theorem GQ2.FoxH.lemma_5_7_right {C : Type u_1} [Group C] {A : Type u_2} [AddCommGroup A] [DistribMulAction C A] {n : } (c : Fin nC) (r : FreeGroup (Fin n)) (_hr : (FreeGroup.lift c) r = 1) (x : Fin nA) (lam : ElemDual A) :
                              ((stokesEval c x fun (i : Fin n) => c i lam - lam) r).z = lam ((stokesEval c x 0) r).a + i : Fin n, Multiplicative.toAdd ((expMod2 i) r) * lam (x i)

                              Lemma 5.7, display (39): the dual-variable form, β_r(x, d⁰λ) = ⟨L^A_r(x), λ⟩ + Σᵢ εᵢ(r)·λ(xᵢ). (The lower-value hypothesis hr is recorded for symmetry with the left form; the dual central defect is g-independent, so it is not needed here.)

                              def GQ2.FoxH.fgTame :
                              FreeGroup (Fin 4)

                              The free-group tame word τ^σ · (τ²)⁻¹ on four letters (for the exponent stress test).

                              Equations
                              Instances For
                                theorem GQ2.FoxH.expMod2_fgTame :
                                (fun (i : Fin 4) => Multiplicative.toAdd ((expMod2 i) fgTame)) = ![0, 1, 0, 0]

                                Stress test (Prop 5.8's proof, exponent claim): the tame word's mod-2 exponent vector is (0, 1, 0, 0) — odd total τ-exponent, even everything else.