Documentation

TauCeti.RepresentationTheory.LSPath.StringLength

String lengths of the root operators on piecewise-linear paths #

Fix a vector x : V and a linear form f : V โ†’ ๐•œ with f x = 2; in Littelmann's path model x is a simple root ฮฑ and f the pairing with its coroot. Write H(t) = f (ฯ€ t) for the running height of a path ฯ€ and h = min H for its minimal height (TauCeti.PLPath.minHeight). The single-step formulas in TauCeti.RepresentationTheory.LSPath.RootOperator show that the root operators f_ฮฑ = TauCeti.PLPath.lower f x and e_ฮฑ = TauCeti.PLPath.raise f x move the minimal height by exactly one step: min H(f_ฮฑ ฯ€) = h - 1 and min H(e_ฮฑ ฯ€) = h + 1. Since f_ฮฑ lowers the final height by f x = 2, it shortens H(1) - h by one.

Together with the criteria f_ฮฑ ฯ€ = 0 โ†” H(1) - h < 1 and e_ฮฑ ฯ€ = 0 โ†” -1 < h, this computes the lengths of the root strings through every path: f_ฮฑ ^ n ฯ€ is defined exactly when n โ‰ค H(1) - h, and e_ฮฑ ^ n ฯ€ exactly when n โ‰ค -h. These ambient statements hold for every path. When h and H(1) are integers, as on Littelmann's integral paths, they become the string-length identities ฮต_ฮฑ(ฯ€) = -h and ฯ†_ฮฑ(ฯ€) = H(1) - h of a normal crystal (TauCeti.NormalCrystal).

The key computation is the minimal height of capped reflection (TauCeti.PLPath.listMinHeight_reflectRecords): reflecting the pieces of a path along which the height is at most c and at most every later height lowers the minimal height by the increase min (H 1) c - min h c, just as it lowers the final height by twice that amount.

Main results #

References #

Iterated root operators #

noncomputable def TauCeti.PLPath.lowerIter {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] (f : Module.Dual ๐•œ V) (x : V) :
โ„• โ†’ PLPath ๐•œ V โ†’ Option (PLPath ๐•œ V)

Apply lowering n times, returning none as soon as an application is undefined.

Instances For
    noncomputable def TauCeti.PLPath.raiseIter {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] (f : Module.Dual ๐•œ V) (x : V) :
    โ„• โ†’ PLPath ๐•œ V โ†’ Option (PLPath ๐•œ V)

    Apply raising n times, returning none as soon as an application is undefined.

    Instances For
      @[simp]
      theorem TauCeti.PLPath.lowerIter_zero {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (p : PLPath ๐•œ V) :
      lowerIter f x 0 p = some p
      @[simp]
      theorem TauCeti.PLPath.raiseIter_zero {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (p : PLPath ๐•œ V) :
      raiseIter f x 0 p = some p
      theorem TauCeti.PLPath.lowerIter_succ {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (n : โ„•) (p : PLPath ๐•œ V) :
      lowerIter f x (n + 1) p = (lower f x p).bind (lowerIter f x n)
      theorem TauCeti.PLPath.raiseIter_succ {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (n : โ„•) (p : PLPath ๐•œ V) :
      raiseIter f x (n + 1) p = (raise f x p).bind (raiseIter f x n)
      @[simp]
      theorem TauCeti.PLPath.lowerIter_one {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (p : PLPath ๐•œ V) :
      lowerIter f x 1 p = lower f x p
      @[simp]
      theorem TauCeti.PLPath.raiseIter_one {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (p : PLPath ๐•œ V) :
      raiseIter f x 1 p = raise f x p
      theorem TauCeti.PLPath.raiseIter_eq_map_lowerIter_reverse {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (n : โ„•) (p : PLPath ๐•œ V) :

      Iterated raising is iterated lowering conjugated by reversal.

      theorem TauCeti.PLPath.lowerIter_add {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (m n : โ„•) (p : PLPath ๐•œ V) :
      lowerIter f x (m + n) p = (lowerIter f x m p).bind (lowerIter f x n)

      Concatenating two runs of the lowering operator.

      theorem TauCeti.PLPath.raiseIter_add {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (m n : โ„•) (p : PLPath ๐•œ V) :
      raiseIter f x (m + n) p = (raiseIter f x m p).bind (raiseIter f x n)

      Concatenating two runs of the raising operator.

      theorem TauCeti.PLPath.endpoint_of_lowerIter_eq_some {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {p q : PLPath ๐•œ V} {n : โ„•} (h : lowerIter f x n p = some q) :

      Lowering n times subtracts n copies of the root from the endpoint.

      theorem TauCeti.PLPath.minHeight_of_lowerIter_eq_some {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {p q : PLPath ๐•œ V} {n : โ„•} (hx : f x = 2) (h : lowerIter f x n p = some q) :
      minHeight f q = minHeight f p - โ†‘n

      Lowering n times decreases the minimum height by n.

      theorem TauCeti.PLPath.endpoint_of_raiseIter_eq_some {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {p q : PLPath ๐•œ V} {n : โ„•} (h : raiseIter f x n p = some q) :

      Raising n times adds n copies of the root to the endpoint.

      theorem TauCeti.PLPath.minHeight_of_raiseIter_eq_some {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {p q : PLPath ๐•œ V} {n : โ„•} (hx : f x = 2) (h : raiseIter f x n p = some q) :
      minHeight f q = minHeight f p + โ†‘n

      Raising n times increases the minimum height by n.

      Lengths of the root strings #

      @[simp]
      theorem TauCeti.PLPath.isSome_lowerIter_iff {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {p : PLPath ๐•œ V} {n : โ„•} (hx : f x = 2) :

      The exact bound for iterated lowering. No integrality hypothesis on the path is needed.

      @[simp]
      theorem TauCeti.PLPath.isSome_raiseIter_iff {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {p : PLPath ๐•œ V} {n : โ„•} (hx : f x = 2) :

      The exact bound for iterated raising. Integral negative minimum height is therefore the usual raising-string length.

      @[simp]
      theorem TauCeti.PLPath.lowerIter_eq_none_iff {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {p : PLPath ๐•œ V} {n : โ„•} (hx : f x = 2) :
      lowerIter f x n p = none โ†” f p.endpoint - minHeight f p < โ†‘n

      Iterated lowering is undefined precisely beyond its height bound.

      @[simp]
      theorem TauCeti.PLPath.raiseIter_eq_none_iff {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {p : PLPath ๐•œ V} {n : โ„•} (hx : f x = 2) :
      raiseIter f x n p = none โ†” -minHeight f p < โ†‘n

      Iterated raising is undefined precisely beyond its height bound.

      theorem TauCeti.PLPath.isSome_lowerIter_iff_of_eq_natCast {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {p : PLPath ๐•œ V} (hx : f x = 2) {ฯ† : โ„•} (hฯ† : f p.endpoint - minHeight f p = โ†‘ฯ†) (n : โ„•) :

      The string-length identity ฯ†_ฮฑ = H(1) - min H: when H(1) - min H is a natural number ฯ†, the lowering string through the path has length exactly ฯ†.

      theorem TauCeti.PLPath.isSome_raiseIter_iff_of_eq_natCast {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {p : PLPath ๐•œ V} (hx : f x = 2) {ฮต : โ„•} (hฮต : -minHeight f p = โ†‘ฮต) (n : โ„•) :
      (raiseIter f x n p).isSome = true โ†” n โ‰ค ฮต

      The string-length identity ฮต_ฮฑ = -min H: when -min H is a natural number ฮต, the raising string through the path has length exactly ฮต.