Documentation

LeanPool.DemazureOperatorsLean.Matsumoto

LeanPool.DemazureOperatorsLean.Matsumoto #

Extra nondegeneracy assumptions used in the Matsumoto theorem development.

  • one_le_M (i j : B) : 1 M.M i j
  • alternatingWords_ne_one (i j : B) : i j∀ (p : ), 0 < pp < M.M i j → (cs.simple i * cs.simple j) ^ p 1
Instances
    structure CoxeterSystem.NilMove {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) :

    A nil move removes two adjacent equal simple reflections at a given offset.

    • i : B

      The simple reflection index used by the nil move.

    • p :

      The offset where the nil move is applied.

    Instances For
      structure CoxeterSystem.BraidMove {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) :

      A braid move replaces a braid word by the opposite braid word at a given offset.

      • i : B

        The first simple reflection index in the braid word.

      • j : B

        The second simple reflection index in the braid word.

      • p :

        The offset where the braid move is applied.

      Instances For
        inductive CoxeterSystem.CoxeterMove {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) :

        A Coxeter move is either a nil move or a braid move.

        Instances For
          def CoxeterSystem.applyNilMove {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (nm : cs.NilMove) (l : List B) :

          Apply a nil move to a word.

          Equations
          Instances For
            def CoxeterSystem.applyBraidMove {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (bm : cs.BraidMove) (l : List B) :

            Apply a braid move to a word.

            Equations
            Instances For
              noncomputable def CoxeterSystem.applyCoxeterMove {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (cm : cs.CoxeterMove) (l : List B) :

              Apply either kind of Coxeter move to a word.

              Equations
              Instances For
                theorem CoxeterSystem.nilMove_wordProd {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (nm : cs.NilMove) (l : List B) :
                cs.wordProd (cs.applyNilMove nm l) = cs.wordProd l
                theorem CoxeterSystem.braidMove_wordProd {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (bm : cs.BraidMove) (l : List B) :
                cs.wordProd (cs.applyBraidMove bm l) = cs.wordProd l
                theorem CoxeterSystem.coxeterMove_wordProd {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (cm : cs.CoxeterMove) (l : List B) :
                noncomputable def CoxeterSystem.applyCoxeterMoveSequence {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (cms : List cs.CoxeterMove) (l : List B) :

                Apply a list of Coxeter moves to a word from right to left.

                Equations
                Instances For
                  def CoxeterSystem.applyBraidMoveSequence {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (bms : List cs.BraidMove) (l : List B) :

                  Apply a sequence of braid moves to a word.

                  Equations
                  Instances For
                    theorem CoxeterSystem.cons_of_length_succ {α : Type} (l : List α) {p : } (h : l.length = p + 1) :
                    ∃ (a : α) (t : List α), l = a :: t t.length = p
                    def CoxeterSystem.shiftBraidMove {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (bm : cs.BraidMove) :

                    Shift a braid move one position to the right.

                    Equations
                    Instances For
                      theorem CoxeterSystem.braidMove_cons {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (bm : cs.BraidMove) (l : List B) (a : B) :
                      a :: cs.applyBraidMove bm l = cs.applyBraidMove (cs.shiftBraidMove bm) (a :: l)
                      theorem CoxeterSystem.braidMoveSequence_cons {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (bms : List cs.BraidMove) (l : List B) (a : B) :
                      theorem CoxeterSystem.isReduced_cons {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (a : B) (l : List B) :
                      cs.IsReduced (a :: l)cs.IsReduced l
                      theorem CoxeterSystem.leftDescent_of_cons {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (i : B) (l : List B) (hr : cs.IsReduced (i :: l)) :
                      cs.IsLeftDescent (cs.wordProd (i :: l)) i
                      theorem CoxeterSystem.leftInversion_of_cons {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (i : B) (l : List B) (hr : cs.IsReduced (i :: l)) :
                      cs.IsLeftInversion (cs.wordProd (i :: l)) (cs.simple i)
                      theorem CoxeterSystem.alternatingWord_succ_ne_alternatingWord_eraseIdx {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) [cs.MatsumotoCondition] (i j : B) (p : ) (hp : p < M.M i j) (hij : i j) (k : ) :
                      k < pcs.wordProd (alternatingWord i j (p + 1)) cs.wordProd ((alternatingWord i j p).eraseIdx k)
                      theorem CoxeterSystem.prefix_braidWord_aux {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) [cs.MatsumotoCondition] (w : W) (l l' : List B) (i j : B) (i_ne_j : i j) (hil : cs.wordProd (i :: l) = w) (hjl' : cs.wordProd (j :: l') = w) (hr : cs.IsReduced (i :: l)) (hr' : cs.IsReduced (j :: l')) (p : ) :
                      p M.M i j∃ (t : List B), cs.wordProd (alternatingWord i j p ++ t) = w cs.IsReduced (alternatingWord i j p ++ t)
                      theorem CoxeterSystem.prefix_braidWord {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) [cs.MatsumotoCondition] (l l' : List B) (i j : B) (i_ne_j : i j) (pi_eq : cs.wordProd (i :: l) = cs.wordProd (j :: l')) (hr : cs.IsReduced (i :: l)) (hr' : cs.IsReduced (j :: l')) :
                      ∃ (t : List B), cs.wordProd (i :: l) = cs.wordProd (braidWord M i j ++ t) cs.IsReduced (braidWord M i j ++ t)
                      theorem CoxeterSystem.concatenate_braidMove_sequences {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (l l' l'' : List B) (h : ∃ (bms : List cs.BraidMove), cs.applyBraidMoveSequence bms l = l') (h' : ∃ (bms' : List cs.BraidMove), cs.applyBraidMoveSequence bms' l' = l'') :
                      ∃ (bms'' : List cs.BraidMove), cs.applyBraidMoveSequence bms'' l = l''
                      theorem CoxeterSystem.isReduced_of_eq_length {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (l l' : List B) (h_len : l.length = l'.length) (h_eq : cs.wordProd l = cs.wordProd l') (hr : cs.IsReduced l) :
                      cs.IsReduced l'
                      theorem CoxeterSystem.eq_length_of_isReduced {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (l l' : List B) (h_eq : cs.wordProd l = cs.wordProd l') (hr : cs.IsReduced l) (hr' : cs.IsReduced l') :
                      theorem CoxeterSystem.matsumoto_reduced_inductionStep_of_firstLetterEq {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) (p : ) (l_t l'_t : List B) (i : B) (len_l_t_eq_p : l_t.length = p) (len_l'_t_eq_p : l'_t.length = p) (h_eq : cs.wordProd (i :: l_t) = cs.wordProd (i :: l'_t)) (l_reduced : cs.IsReduced (i :: l_t)) (l'_reduced : cs.IsReduced (i :: l'_t)) (ih : ∀ (l l' : List B), l.length = pl'.length = pcs.IsReduced lcs.IsReduced l'cs.wordProd l = cs.wordProd l'∃ (bms : List cs.BraidMove), cs.applyBraidMoveSequence bms l = l') :
                      ∃ (bms : List cs.BraidMove), cs.applyBraidMoveSequence bms (i :: l_t) = i :: l'_t
                      theorem CoxeterSystem.matsumoto_reduced_aux {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) [cs.MatsumotoCondition] (p : ) (l l' : List B) (len_l_eq_p : l.length = p) (len_l'_eq_p : l'.length = p) (l_reduced : cs.IsReduced l) (l'_reduced : cs.IsReduced l') (h_eq : cs.wordProd l = cs.wordProd l') :
                      ∃ (bms : List cs.BraidMove), cs.applyBraidMoveSequence bms l = l'
                      theorem CoxeterSystem.matsumoto_reduced {B W : Type} [Group W] {M : CoxeterMatrix B} (cs : CoxeterSystem M W) [cs.MatsumotoCondition] (l l' : List B) (hr : cs.IsReduced l) (hr' : cs.IsReduced l') (h : cs.wordProd l = cs.wordProd l') :
                      ∃ (bms : List cs.BraidMove), cs.applyBraidMoveSequence bms l = l'