Documentation

Atlas.Buildings.code.Building.CoxeterComplexFoldings

theorem CoxeterSystem.simple_inv_eq {B : Type u_2} {M : CoxeterMatrix B} (cs : CoxeterSystem M M.Group) (i : B) :
(cs.simple i)⁻¹ = cs.simple i

Each simple reflection $s_i$ in a Coxeter system is an involution, so $s_i^{-1} = s_i$.

structure CoxeterComplexData (V : Type u_2) [DecidableEq V] :
Type (max u_2 (u_3 + 1))

A bundle of data realising a chamber complex $\mathcal{C}$ as the Coxeter complex of a Coxeter system $(W, S)$: chambers are indexed by $W$, the chamber map intertwines adjacency with right multiplication by simple reflections, the complex is thin, and the exchange condition together with a folding-from-half axiom holds.

Instances For
    noncomputable def CoxeterComplexData.chamberMapF₀ {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) (w : data.M.Group) :
    data.M.Group

    The half-fold map $f_0^s : W \to W$ associated to a simple reflection $s$: elements $w$ with $\ell(sw) = \ell(w) + 1$ are fixed (the positive half), and elements with $\ell(sw) = \ell(w) - 1$ are sent to $sw$ (collapsing the negative half onto the positive half).

    Instances For
      def CoxeterComplexData.inPositiveHalf {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) (w : data.M.Group) :

      $w$ lies in the positive half-space of the wall associated to $s$, i.e. $\ell(sw) = \ell(w) + 1$.

      Instances For
        def CoxeterComplexData.inNegativeHalf {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) (w : data.M.Group) :

        $w$ lies in the negative half-space of the wall associated to $s$, i.e. $\ell(sw) + 1 = \ell(w)$.

        Instances For
          theorem CoxeterComplexData.positive_or_negative {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) (w : data.M.Group) :

          Every group element is on exactly one side of the wall: either in the positive or in the negative half.

          theorem CoxeterComplexData.one_in_positive {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) :

          The identity element lies in the positive half for every simple reflection $s$.

          theorem CoxeterComplexData.simple_in_negative {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) :
          data.inNegativeHalf s (data.cs.simple s)

          The simple reflection $s$ itself lies in the negative half for $s$.

          theorem CoxeterComplexData.chamberMapF₀_pos {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) {s : data.B} {w : data.M.Group} (hw : data.inPositiveHalf s w) :
          data.chamberMapF₀ s w = w

          $f_0^s$ fixes positive-half elements.

          theorem CoxeterComplexData.chamberMapF₀_neg {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) {s : data.B} {w : data.M.Group} (hw : data.inNegativeHalf s w) :
          data.chamberMapF₀ s w = data.cs.simple s * w

          $f_0^s$ sends negative-half elements $w$ to $sw$.

          theorem CoxeterComplexData.neg_of_mul_pos {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) {s : data.B} {w : data.M.Group} (hw : data.inPositiveHalf s w) :
          data.inNegativeHalf s (data.cs.simple s * w)

          Left multiplication by $s$ flips a positive-half element into the negative half.

          theorem CoxeterComplexData.pos_of_mul_neg {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) {s : data.B} {w : data.M.Group} (hw : data.inNegativeHalf s w) :
          data.inPositiveHalf s (data.cs.simple s * w)

          Left multiplication by $s$ flips a negative-half element into the positive half.

          theorem CoxeterComplexData.chamberMapF₀_idempotent {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) (w : data.M.Group) :
          data.chamberMapF₀ s (data.chamberMapF₀ s w) = data.chamberMapF₀ s w

          The half-fold map $f_0^s$ is idempotent: $f_0^s \circ f_0^s = f_0^s$.

          theorem CoxeterComplexData.chamberMapF₀_one {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) :
          data.chamberMapF₀ s 1 = 1

          $f_0^s$ fixes the identity.

          theorem CoxeterComplexData.chamberMapF₀_simple {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) :
          data.chamberMapF₀ s (data.cs.simple s) = 1

          $f_0^s$ folds the simple reflection $s$ onto the identity.

          theorem CoxeterComplexData.chamberMapF₀_two_to_one {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) (w : data.M.Group) (hw : data.chamberMapF₀ s w = w) :
          ∃! w' : data.M.Group, w' w data.chamberMapF₀ s w' = w

          Every fixed point $w$ of the half-fold map has a unique preimage outside itself, namely $sw$ — the map is exactly two-to-one onto the positive half.

          theorem CoxeterComplexData.no_pos_neg_down {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) (w : data.M.Group) (t : data.B) (hp : data.inPositiveHalf s w) (hn : data.inNegativeHalf s (w * data.cs.simple t)) (hdown : data.cs.length (w * data.cs.simple t) + 1 = data.cs.length w) :

          A length-descending step $w \mapsto ws_t$ cannot simultaneously cross from the positive half to the negative half.

          theorem CoxeterComplexData.no_neg_pos_up {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) (w : data.M.Group) (t : data.B) (hn : data.inNegativeHalf s w) (hp : data.inPositiveHalf s (w * data.cs.simple t)) (hup : data.cs.length (w * data.cs.simple t) = data.cs.length w + 1) :

          A length-ascending step $w \mapsto ws_t$ cannot simultaneously cross from the negative half to the positive half.

          theorem CoxeterComplexData.chamberMapF₀_preserves_adj {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (s : data.B) (w : data.M.Group) (t : data.B) :
          data.chamberOf (data.chamberMapF₀ s (w * data.cs.simple t)) = data.chamberOf (data.chamberMapF₀ s w) data.cc.Adjacent (data.chamberOf (data.chamberMapF₀ s w)) (data.chamberOf (data.chamberMapF₀ s (w * data.cs.simple t)))

          Adjacent chambers $C_w$ and $C_{ws_t}$ are sent by the chamber map of $f_0^s$ to chambers that are either equal or still adjacent — folds do not tear adjacencies apart.

          theorem CoxeterComplexData.left_mul_preserves_adj {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (w a b : data.M.Group) (hadj : data.cc.Adjacent (data.chamberOf a) (data.chamberOf b)) :
          data.cc.Adjacent (data.chamberOf (w * a)) (data.chamberOf (w * b))

          Left multiplication by $w$ on $W$ preserves chamber adjacency: if $C_a$ and $C_b$ are adjacent, so are $C_{wa}$ and $C_{wb}$.

          noncomputable def CoxeterComplexData.conjugatedF₀ {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (w : data.M.Group) (s : data.B) (u : data.M.Group) :
          data.M.Group

          The conjugate $u \mapsto w \cdot f_0^s(w^{-1}u)$ of the half-fold map by left translation by $w$ — gives the folding that pairs the chambers $C_w$ and $C_{ws}$.

          Instances For
            theorem CoxeterComplexData.conjugatedF₀_fixes {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (w : data.M.Group) (s : data.B) :
            data.conjugatedF₀ w s w = w

            The conjugated fold fixes the base chamber $C_w$.

            theorem CoxeterComplexData.conjugatedF₀_folds {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (w : data.M.Group) (s : data.B) :
            data.conjugatedF₀ w s (w * data.cs.simple s) = w

            The conjugated fold sends the neighbour $C_{ws}$ across the wall back to $C_w$.

            theorem CoxeterComplexData.conjugatedF₀_idempotent {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (w : data.M.Group) (s : data.B) (u : data.M.Group) :
            data.conjugatedF₀ w s (data.conjugatedF₀ w s u) = data.conjugatedF₀ w s u

            The conjugated fold is idempotent.

            theorem CoxeterComplexData.conjugatedF₀_not_id {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (w : data.M.Group) (s : data.B) :
            ∃ (u : data.M.Group), data.conjugatedF₀ w s u u

            The conjugated fold is not the identity: it moves at least one element.

            theorem CoxeterComplexData.conjugatedF₀_two_to_one {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (w : data.M.Group) (s : data.B) (u : data.M.Group) (hu : data.conjugatedF₀ w s u = u) :
            ∃! u' : data.M.Group, u' u data.conjugatedF₀ w s u' = u

            Each fixed point of the conjugated fold has a unique preimage outside itself, namely $wsw^{-1}u$.

            theorem CoxeterComplexData.conjugatedF₀_preserves_adj {V : Type u_1} [DecidableEq V] (data : CoxeterComplexData V) (w : data.M.Group) (s : data.B) (u : data.M.Group) (t : data.B) :
            data.chamberOf (data.conjugatedF₀ w s (u * data.cs.simple t)) = data.chamberOf (data.conjugatedF₀ w s u) data.cc.Adjacent (data.chamberOf (data.conjugatedF₀ w s u)) (data.chamberOf (data.conjugatedF₀ w s (u * data.cs.simple t)))

            The chamber map of the conjugated fold preserves adjacency: adjacent chambers $C_u, C_{us_t}$ go to chambers that are equal or still adjacent.