Documentation

TauCeti.RepresentationTheory.LSPath.RootOperator

Running heights and root operators on piecewise-linear paths #

Fix a vector x : V and a linear form f : V โ†’ ๐•œ; in Littelmann's path model x is a simple root ฮฑ and f the pairing โŸจ-, ฮฑ^โˆจโŸฉ with its coroot, so that f x = 2 and Module.preReflection x f is the simple reflection s_ฮฑ. The running height of a path ฯ€ is t โ†ฆ f (ฯ€ t). For a path presented by a segment list [vโ‚, โ€ฆ, vโ‚™] the height is affine on each segment, so its minimum h is attained at a vertex, that is at a partial sum vโ‚ + โ‹ฏ + vโ‚–; TauCeti.PLPath.minHeight is this minimum. It is independent of the presentation. On Littelmann's path crystals the string lengths are ฮต = -h and ฯ† = f (ฯ€ 1) - h.

Littelmann's lowering operator f_ฮฑ is defined when f (ฯ€ 1) - h โ‰ฅ 1. Let tโ‚€ be the last time at which the height equals h, and tโ‚ the first time from which on the height is at least h + 1. Subdivide the piece of ฯ€ from tโ‚€ to tโ‚ into pieces of two kinds: those along which the height increases and stays at most every later height, and equal-height excursions, along which the height starts and ends at the same value and stays at least that value. Then f_ฮฑ ฯ€ reflects the pieces of the first kind by s_ฮฑ, keeps the excursions, and translates the rest of ฯ€ after tโ‚ by -ฮฑ. Equivalently, with m t the minimum of the height on [t, 1], f_ฮฑ ฯ€ t = ฯ€ t - min 1 (m t - h) โ€ข ฮฑ. In terms of segments, each segment is cut at most once, and its reflected part is the initial piece along which the height stays at most both h + 1 and every later height. The raising operator e_ฮฑ is conjugate to f_ฮฑ by the reversal ฯ€ โ†ฆ ฯ€^โˆจ of paths; it is defined when h โ‰ค -1. With tโ‚ the first time at which the height equals h and tโ‚€ the last time up to which the height is at least h + 1, it reflects the pieces between tโ‚€ and tโ‚ along which the height decreases and stays at most every earlier height, keeps the equal-height excursions, and translates the rest of ฯ€ after tโ‚ by ฮฑ.

The operators are defined on segment lists (TauCeti.PLPath.reflectRecords, TauCeti.PLPath.listLower) and then on TauCeti.PLPath, using its reduced presentation. The main result of this file is that the operators do not depend on the chosen presentation: the elementary moves (subdividing a segment, inserting a stationary segment) commute with them up to the same moves. The weight changes by -ฮฑ under f_ฮฑ and by ฮฑ under e_ฮฑ, while the minimal height changes by -1 and +1, respectively, when f x = 2.

This file works with the ambient operators on all paths. That e_ฮฑ and f_ฮฑ are partial inverses is proved in TauCeti.RepresentationTheory.LSPath.PartialInverse, and the lengths of the root strings through a path in TauCeti.RepresentationTheory.LSPath.StringLength.

Main definitions #

Main results #

References #

The minimal height of a segment list #

def TauCeti.PLPath.listMinHeight {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] (f : Module.Dual ๐•œ V) :
List V โ†’ ๐•œ

The running-height recursion for a segment list. When addition preserves the scalar order, this is the minimum of f over the vertices 0, vโ‚, vโ‚ + vโ‚‚, โ€ฆ, vโ‚ + โ‹ฏ + vโ‚™. For a piecewise-linear path over an ordered field, the minimum of its affine height on each segment is attained at a vertex.

Instances For
    @[simp]
    theorem TauCeti.PLPath.listMinHeight_nil {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} :
    @[simp]
    theorem TauCeti.PLPath.listMinHeight_cons {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (v : V) (l : List V) :
    listMinHeight f (v :: l) = min 0 (f v + listMinHeight f l)
    @[simp]
    theorem TauCeti.PLPath.listMinHeight_map {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] {W : Type u_3} [AddCommMonoid W] [Module ๐•œ W] (g : V โ†’โ‚—[๐•œ] W) (f' : Module.Dual ๐•œ W) (l : List V) :

    The vertex heights of a linear image are computed by the pulled-back form.

    theorem TauCeti.PLPath.listMinHeight_map_smul {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} [PosMulMono ๐•œ] {a : ๐•œ} (ha : 0 โ‰ค a) (l : List V) :
    listMinHeight f (List.map (fun (x : V) => a โ€ข x) l) = a * listMinHeight f l

    Nonnegative dilation multiplies every vertex height and its minimum by the same scalar.

    theorem TauCeti.PLPath.listMinHeight_nonpos {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (l : List V) :
    theorem TauCeti.PLPath.listMinHeight_eq_zero_of_forall_nonneg {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {l : List V} (h : โˆ€ v โˆˆ l, 0 โ‰ค f v) :

    A path whose segments all have nonnegative height never goes below its starting height.

    theorem TauCeti.PLPath.exists_listMinHeight_eq {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (l : List V) :
    โˆƒ (n : โ„•), listMinHeight f l = f (List.take n l).sum

    The minimal height is the height of some vertex.

    theorem TauCeti.PLPath.listMinHeight_le_apply_sum_take {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} [IsOrderedAddMonoid ๐•œ] (l : List V) (n : โ„•) :

    The minimal height is at most the height of each vertex.

    theorem TauCeti.PLPath.listMinHeight_le_apply_sum {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} [IsOrderedAddMonoid ๐•œ] (l : List V) :
    @[simp]
    theorem TauCeti.PLPath.listMinHeight_append {๐•œ : Type u_1} {V : Type u_2} [Semiring ๐•œ] [LinearOrder ๐•œ] [AddCommMonoid V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} [IsOrderedAddMonoid ๐•œ] (lโ‚ lโ‚‚ : List V) :
    listMinHeight f (lโ‚ ++ lโ‚‚) = min (listMinHeight f lโ‚) (f lโ‚.sum + listMinHeight f lโ‚‚)
    theorem TauCeti.PLPath.listMinHeight_reverse_map_neg {๐•œ : Type u_1} {V : Type u_2} [Ring ๐•œ] [LinearOrder ๐•œ] [IsOrderedAddMonoid ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (l : List V) :

    Reversing and negating the segments shifts their minimal height by the negative final height.

    The minimal height of a path #

    theorem TauCeti.PLPath.listMinHeight_consMerge {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (v : V) (l : List V) :
    listMinHeight f (consMerge ๐•œ v l) = listMinHeight f (v :: l)
    @[simp]
    theorem TauCeti.PLPath.listMinHeight_normalize {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (l : List V) :
    theorem TauCeti.PLPath.Move.listMinHeight_eq {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {lโ‚ lโ‚‚ : List V} (h : Move ๐•œ lโ‚ lโ‚‚) :
    listMinHeight f lโ‚ = listMinHeight f lโ‚‚

    The minimal height is invariant under the elementary moves.

    def TauCeti.PLPath.minHeight {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] (f : Module.Dual ๐•œ V) (p : PLPath ๐•œ V) :
    ๐•œ

    The minimal running height min_t f (ฯ€ t) of a path.

    Instances For
      theorem TauCeti.PLPath.minHeight_def {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (p : PLPath ๐•œ V) :
      @[simp]
      theorem TauCeti.PLPath.minHeight_ofSegments {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (l : List V) :
      minHeight f (ofSegments ๐•œ l) = listMinHeight f l

      The minimal height of a path may be computed on any presentation.

      @[simp]
      theorem TauCeti.PLPath.minHeight_map {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {W : Type u_3} [AddCommGroup W] [Module ๐•œ W] (p : PLPath ๐•œ V) (g : V โ†’โ‚—[๐•œ] W) (f' : Module.Dual ๐•œ W) :

      Minimum height is natural under arbitrary linear maps.

      theorem TauCeti.PLPath.minHeight_map_smul {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {a : ๐•œ} (ha : 0 โ‰ค a) (p : PLPath ๐•œ V) :

      Nonnegative dilation scales the minimum running height.

      @[simp]
      theorem TauCeti.PLPath.minHeight_one {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} :
      minHeight f 1 = 0
      theorem TauCeti.PLPath.minHeight_nonpos {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (p : PLPath ๐•œ V) :
      theorem TauCeti.PLPath.minHeight_le_apply_endpoint {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (p : PLPath ๐•œ V) :
      @[simp]
      theorem TauCeti.PLPath.minHeight_mul {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (p q : PLPath ๐•œ V) :
      minHeight f (p * q) = min (minHeight f p) (f p.endpoint + minHeight f q)
      @[simp]
      theorem TauCeti.PLPath.minHeight_reverse {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (p : PLPath ๐•œ V) :
      @[simp]
      theorem TauCeti.PLPath.minHeight_straight {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} (v : V) :
      minHeight f (straight ๐•œ v) = min 0 (f v)

      The lowering operator on segment lists #

      def TauCeti.PLPath.reflectRecords {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [AddCommGroup V] [Module ๐•œ V] (f : Module.Dual ๐•œ V) (x : V) (c : ๐•œ) :
      List V โ†’ List V

      reflectRecords f x c l reflects, by Module.preReflection x f, the pieces of the path presented by l along which the running height (starting from 0) increases, stays at most c, and is at most every later height; it keeps the rest of the path, in particular every excursion that returns to a height reached before. For a segment v followed by l, the height relative to the start of v is at least f v + listMinHeight f l from the end of v on. When r = min (f v + listMinHeight f l) c is positive, v is cut at height r into the reflected initial piece (r / f v) โ€ข v and the kept piece (1 - r / f v) โ€ข v.

      Instances For
        def TauCeti.PLPath.listLower {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [AddCommGroup V] [Module ๐•œ V] (f : Module.Dual ๐•œ V) (x : V) (l : List V) :

        Littelmann's lowering operator on segment lists. With h = listMinHeight f l, it is defined when the final height is at least h + 1, and then reflects the pieces of the path along which the height increases from h to h + 1 while staying at most every later height (TauCeti.PLPath.reflectRecords).

        Instances For
          @[simp]
          theorem TauCeti.PLPath.reflectRecords_nil {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (c : ๐•œ) :
          theorem TauCeti.PLPath.reflectRecords_cons_of_pos {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x v : V} {l : List V} {c : ๐•œ} (h : 0 < min (f v + listMinHeight f l) c) :
          reflectRecords f x c (v :: l) = (Module.preReflection x f) ((min (f v + listMinHeight f l) c / f v) โ€ข v) :: (1 - min (f v + listMinHeight f l) c / f v) โ€ข v :: reflectRecords f x (c - f v) l
          theorem TauCeti.PLPath.reflectRecords_cons_of_nonpos {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x v : V} {l : List V} {c : ๐•œ} (h : min (f v + listMinHeight f l) c โ‰ค 0) :
          reflectRecords f x c (v :: l) = v :: reflectRecords f x (c - f v) l
          theorem TauCeti.PLPath.listLower_def {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (l : List V) :
          theorem TauCeti.PLPath.mem_of_mem_reflectRecords {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {l : List V} {c : ๐•œ} {T : Set V} (hpos : โˆ€ (a : ๐•œ), 0 < a โ†’ โˆ€ v โˆˆ T, a โ€ข v โˆˆ T) (hs : Set.MapsTo (โ‡‘(Module.preReflection x f)) T T) (hl : โˆ€ v โˆˆ l, v โˆˆ T) {w : V} (hw : w โˆˆ reflectRecords f x c l) (hw0 : w โ‰  0) :

          Capped reflection only cuts segments at fractions in [0, 1] and reflects some of the pieces by s = preReflection x f. So if a set T is stable under positive rescaling and under s, and contains every segment of l, then it contains every nonstationary segment of reflectRecords f x c l.

          theorem TauCeti.PLPath.sum_reflectRecords {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (c : ๐•œ) (l : List V) :
          (reflectRecords f x c l).sum = l.sum - (min (f l.sum) c - min (listMinHeight f l) c) โ€ข x

          Reflecting the records up to height c subtracts from the endpoint x times the increase, along the path, of the minimum of c and the later minimal height.

          theorem TauCeti.PLPath.listMinHeight_reflectRecords {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (hx : f x = 2) (c : ๐•œ) (l : List V) :

          Reflecting the records up to height c lowers the minimal height by the increase, along the path, of the minimum of c and the later minimal height. Compare TauCeti.PLPath.sum_reflectRecords, by which the final height drops by twice this amount.

          @[simp]
          theorem TauCeti.PLPath.listLower_eq_none_iff {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {l : List V} :
          theorem TauCeti.PLPath.sum_of_listLower_eq_some {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {lโ‚ lโ‚‚ : List V} (h : listLower f x lโ‚ = some lโ‚‚) :
          lโ‚‚.sum = lโ‚.sum - x
          theorem TauCeti.PLPath.reflectRecords_append {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (c : ๐•œ) (lโ‚ lโ‚‚ : List V) :
          reflectRecords f x c (lโ‚ ++ lโ‚‚) = reflectRecords f x (min c (f lโ‚.sum + listMinHeight f lโ‚‚)) lโ‚ ++ reflectRecords f x (c - f lโ‚.sum) lโ‚‚

          Reflecting the records of a concatenation lโ‚ ++ lโ‚‚ up to the cap c: on lโ‚, the later heights in lโ‚‚ act as a further cap.

          @[simp]
          theorem TauCeti.PLPath.reflectRecords_of_le_listMinHeight {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {l : List V} {c : ๐•œ} (h : c โ‰ค listMinHeight f l) :
          reflectRecords f x c l = l

          Reflecting the records up to a cap that is at most the minimal height does nothing.

          theorem TauCeti.PLPath.ofSegments_reflectRecords_of_forall_nonneg {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {l : List V} (h : โˆ€ v โˆˆ l, 0 โ‰ค f v) :
          ofSegments ๐•œ (reflectRecords f x (f l.sum) l) = ofSegments ๐•œ (List.map (โ‡‘(Module.preReflection x f)) l)

          Capped reflection of a path with nonnegative segment heights, up to its final height, reflects the whole path.

          Independence of the presentation #

          theorem TauCeti.PLPath.reflectRecords_zero_cons {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (c : ๐•œ) (l : List V) :
          reflectRecords f x c (0 :: l) = 0 :: reflectRecords f x c l
          theorem TauCeti.PLPath.Move.normalize_reflectRecords {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {lโ‚ lโ‚‚ : List V} (h : Move ๐•œ lโ‚ lโ‚‚) (c : ๐•œ) :
          normalize ๐•œ (reflectRecords f x c lโ‚) = normalize ๐•œ (reflectRecords f x c lโ‚‚)

          Reflecting the records commutes with the elementary moves, up to elementary moves.

          theorem TauCeti.PLPath.Move.map_normalize_listLower {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {lโ‚ lโ‚‚ : List V} (h : Move ๐•œ lโ‚ lโ‚‚) :
          Option.map (normalize ๐•œ) (listLower f x lโ‚) = Option.map (normalize ๐•œ) (listLower f x lโ‚‚)

          Lowering commutes with the elementary moves, up to elementary moves.

          theorem TauCeti.PLPath.map_normalize_listLower_eq {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} {lโ‚ lโ‚‚ : List V} (h : normalize ๐•œ lโ‚ = normalize ๐•œ lโ‚‚) :
          Option.map (normalize ๐•œ) (listLower f x lโ‚) = Option.map (normalize ๐•œ) (listLower f x lโ‚‚)

          Lowering does not depend on the presentation: presentations of the same path have lowerings presenting the same path.

          Root operators on paths #

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

          Littelmann's lowering operator f_ฮฑ on paths, for the root ฮฑ = x and the coroot pairing f = โŸจ-, ฮฑ^โˆจโŸฉ. Let h be the minimal height, tโ‚€ the last time at which the height equals h and tโ‚ the first time from which on the height is at least h + 1. Between tโ‚€ and tโ‚, the pieces along which the height increases and stays at most every later height are reflected by Module.preReflection x f, the equal-height excursions are kept, and the rest of the path after tโ‚ is translated by -x. It is none when f (ฯ€ 1) - h < 1.

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

            Littelmann's raising operator e_ฮฑ on paths, the conjugate of TauCeti.PLPath.lower by the reversal of paths. Let h be the minimal height, tโ‚ the first time at which the height equals h and tโ‚€ the last time up to which the height is at least h + 1. Between tโ‚€ and tโ‚, the pieces along which the height decreases and stays at most every earlier height are reflected by Module.preReflection x f, the equal-height excursions are kept, and the rest of the path after tโ‚ is translated by x. It is none when -1 < h.

            Instances For
              theorem TauCeti.PLPath.lower_ofSegments {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (l : List V) :
              lower f x (ofSegments ๐•œ l) = Option.map (ofSegments ๐•œ) (listLower f x l)

              The lowering operator may be computed on any presentation of a path.

              theorem TauCeti.PLPath.raise_def {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (p : PLPath ๐•œ V) :
              @[simp]
              theorem TauCeti.PLPath.raise_reverse {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (p : PLPath ๐•œ V) :
              @[simp]
              theorem TauCeti.PLPath.lower_reverse {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x : V} (p : PLPath ๐•œ V) :
              @[simp]
              theorem TauCeti.PLPath.lower_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} :

              The lowering operator is defined exactly when the final height exceeds the minimal height by at least 1.

              @[simp]
              theorem TauCeti.PLPath.raise_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} :
              raise f x p = none โ†” -1 < minHeight f p

              The raising operator is defined exactly when the minimal height is at most -1.

              theorem TauCeti.PLPath.endpoint_of_lower_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} (h : lower f x p = some q) :

              Lowering subtracts x from the endpoint.

              theorem TauCeti.PLPath.endpoint_of_raise_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} (h : raise f x p = some q) :

              Raising adds x to the endpoint.

              theorem TauCeti.PLPath.minHeight_of_lower_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} (hx : f x = 2) (h : lower f x p = some q) :

              Lowering lowers the minimal height by one: min H(f_ฮฑ ฯ€) = min H(ฯ€) - 1.

              theorem TauCeti.PLPath.minHeight_of_raise_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} (hx : f x = 2) (h : raise f x p = some q) :

              Raising raises the minimal height by one: min H(e_ฮฑ ฯ€) = min H(ฯ€) + 1.

              theorem TauCeti.PLPath.apply_endpoint_sub_minHeight_of_lower_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} (hx : f x = 2) (h : lower f x p = some q) :

              Lowering shortens the lowering string by one: H(1) - min H drops by one under f_ฮฑ.

              theorem TauCeti.PLPath.lower_straight {๐•œ : Type u_1} {V : Type u_2} [Field ๐•œ] [LinearOrder ๐•œ] [IsStrictOrderedRing ๐•œ] [AddCommGroup V] [Module ๐•œ V] {f : Module.Dual ๐•œ V} {x v : V} (h : 1 โ‰ค f v) :
              lower f x (straight ๐•œ v) = some (straight ๐•œ ((Module.preReflection x f) ((f v)โปยน โ€ข v)) * straight ๐•œ ((1 - (f v)โปยน) โ€ข v))

              Lowering the straight path t โ†ฆ t โ€ข v with f v โ‰ฅ 1 reflects its initial piece, up to the time 1 / f v at which the height reaches 1.