The root sequence read off from a word $\omega$ and a simple root $e_s$: the $k$-th term is the geometric image of $e_s$ under the suffix of $\omega$ of length $k$. Used to detect sign changes along the word.
Instances For
Geometric bridge hypothesis: bundles the two implications connecting the abstract length function and the geometric representation. Field $\mathtt{length\_decrease\_negative}$ says length-decrease on right multiplication implies negativity of the resulting root, and field $\mathtt{sign\_change\_exchange}$ says negativity implies the exchange relation $\omega = \omega' \cdot s$ for some deletion of $\omega$.
- length_decrease_negative (word : List B) (s : B) : cs.IsReduced word → cs.length (cs.wordProd word * cs.simple s) < cs.length (cs.wordProd word) → CoxeterGroup.IsNegative (CoxeterGroup.wordSigma M word (CoxeterGroup.e s))
- sign_change_exchange (word : List B) (s : B) : cs.IsReduced word → CoxeterGroup.IsNegative (CoxeterGroup.wordSigma M word (CoxeterGroup.e s)) → ∃ (i : Fin word.length), cs.wordProd (word.eraseIdx ↑i) = cs.wordProd word * cs.simple s
Instances For
Given the geometric bridge hypothesis, the abstract exchange condition follows by composing length-decrease implies negativity with negativity implies exchange.
The bilinear form is anti-linear under negation in its first slot: $B(-v, w) = -B(v, w)$.
The simple root $e_s$ has strictly positive $s$-coordinate, namely $1$.
A more granular bridge hypothesis: for any reduced word $\omega$ and simple root $e_s$ whose total geometric image is negative, an index $k$ witnessing the sign change of the $s$-coordinate yields an exchange $\omega = \omega' \cdot s$ for some deletion of $\omega$.
- sign_change_at_index (word : List B) (s : B) (k : ℕ) : cs.IsReduced word → k < word.length → CoxeterGroup.IsNegative (CoxeterGroup.wordSigma M word (CoxeterGroup.e s)) → CoxeterGroup.wordSigma M (List.drop (word.length - k) word) (CoxeterGroup.e s) s > 0 → CoxeterGroup.wordSigma M (List.drop (word.length - (k + 1)) word) (CoxeterGroup.e s) s ≤ 0 → ∃ (i : Fin word.length), cs.wordProd (word.eraseIdx ↑i) = cs.wordProd word * cs.simple s