Documentation

Demazure.AspPerm

def inv_set (τ : ) :

The inversion set $\operatorname{Inv} \tau = \{(u,v) \in \mathbb{Z}^2 : u < v \text{ and } \tau(u) > \tau(v)\}$.

In Lean, membership is written ⟨u, v⟩ ∈ inv_set τ, and the inequality is encoded as τ v < τ u.

Equations
Instances For
    def southeast_set (τ : ) (m n : ) :
    Equations
    Instances For
      def northwest_set (τ : ) (m n : ) :
      Equations
      Instances For
        @[reducible, inline]
        abbrev flip_func (f : ) :
        Equations
        Instances For
          theorem flip_quadrant (f : ) (a b : ) :
          (fun (x : ) => -1 - x) '' southeast_set f a b = northwest_set (flip_func f) (-a) (-b)
          theorem se_finite_of_finite {τ : } (h_inj : Function.Injective τ) (m n m' n' : ) :
          (southeast_set τ m n).Finite(southeast_set τ m' n').Finite
          theorem nw_finite_of_finite {τ : } (h_inj : Function.Injective τ) (m n m' n' : ) :
          (northwest_set τ m n).Finite(northwest_set τ m' n').Finite
          def is_asp (τ : ) :

          The almost-sign-preserving condition: the set $\{ n \in \mathbb{Z} : n \tau(n) < 0 \}$ is finite.

          Equivalently, only finitely many integers change sign under τ.

          Equations
          Instances For
            theorem se_finite_of_asp {τ : } (h_inj : Function.Injective τ) (m n : ) :
            is_asp τ(southeast_set τ m n).Finite
            theorem nw_finite_of_asp {τ : } (h_inj : Function.Injective τ) (m n : ) :
            is_asp τ(northwest_set τ m n).Finite
            theorem asp_of_finite_quadrants {τ : } (h_inj : Function.Injective τ) {m n m' n' : } (fin_se : (southeast_set τ m n).Finite) (fin_nw : (northwest_set τ m' n').Finite) :
            structure AspPerm :

            An almost-sign-preserving permutation of , abbreviated ASP permutation.

            This is the paper's group $\mathrm{ASP}$, packaged in Lean as a function together with proofs of bijectivity and the ASP condition.

            Instances For
              theorem AspPerm.inv_iff_lt (τ : AspPerm) {i j : } (i_le_j : i j) :
              (i, j) inv_set τ.func τ.func j < τ.func i
              theorem AspPerm.inv_iff_le (τ : AspPerm) {i j : } (i_lt_j : i < j) :
              (i, j) inv_set τ.func τ.func j τ.func i
              @[simp]
              theorem AspPerm.ext {σ τ : AspPerm} :
              σ = τ σ.func = τ.func
              def AspPerm.mul (σ τ : AspPerm) :
              Equations
              Instances For
                noncomputable def AspPerm.inv (τ : AspPerm) :
                Equations
                Instances For
                  Equations
                  Instances For
                    noncomputable instance AspPerm.instGroup :
                    Equations
                    • One or more equations did not get rendered due to their size.
                    @[simp]
                    theorem AspPerm.inv_mul_cancel_eval (τ : AspPerm) (n : ) :
                    τ⁻¹.func (τ.func n) = n
                    @[simp]
                    theorem AspPerm.mul_inv_cancel_eval (τ : AspPerm) (n : ) :
                    τ.func (τ⁻¹.func n) = n
                    theorem AspPerm.se_finite (τ : AspPerm) (a b : ) :
                    theorem AspPerm.nw_finite (τ : AspPerm) (a b : ) :
                    noncomputable def AspPerm.se_finset (τ : AspPerm) (a b : ) :
                    Equations
                    Instances For
                      @[simp]
                      theorem AspPerm.mem_se (τ : AspPerm) (a b n : ) :
                      n τ.se_finset a b n b τ.func n < a
                      noncomputable def AspPerm.nw_finset (τ : AspPerm) (a b : ) :
                      Equations
                      Instances For
                        @[simp]
                        theorem AspPerm.mem_nw (τ : AspPerm) (a b n : ) :
                        n τ.nw_finset a b n < b τ.func n a
                        Equations
                        Instances For
                          noncomputable def AspPerm.s (τ : AspPerm) (a b : ) :

                          The slipface value $s_\tau(a,b) = \#\{n \geq b : \tau(n) < a\}$.

                          This is one of the main notation shifts from the paper to Lean: the paper writes $s_\tau(a,b)$, while the code writes τ.s a b.

                          Equations
                          Instances For
                            noncomputable def AspPerm.s' (τ : AspPerm) (b a : ) :

                            The companion counting function $s_{\tau^{-1}}(b,a)$.

                            In Lean this is written τ.s' b a; later dual_inverse identifies it with (τ⁻¹).s.

                            Equations
                            Instances For
                              noncomputable def AspPerm.χ (τ : AspPerm) :

                              The shift $\chi_\tau = s_\tau(0,0) - s_{\tau^{-1}}(0,0)$.

                              The paper writes this as $\chi_\tau$; Lean writes it as τ.χ.

                              Equations
                              Instances For
                                @[simp]
                                theorem AspPerm.id_chi :
                                id.χ = 0
                                theorem AspPerm.s_eq_se_card (τ : AspPerm) (a b : ) :
                                τ.s a b = (τ.se_finset a b).card
                                theorem AspPerm.s'_eq_nw_card (τ : AspPerm) (b a : ) :
                                τ.s' b a = (τ.nw_finset a b).card
                                theorem AspPerm.s_nonneg (τ : AspPerm) (a b : ) :
                                τ.s a b 0
                                theorem AspPerm.s'_nonneg (τ : AspPerm) (a b : ) :
                                τ.s' a b 0
                                theorem AspPerm.s'_pos_of_lt (τ : AspPerm) {u b : } (u_lt_b : u < b) :
                                τ.s' b (τ.func u) 1
                                Equations
                                • τ.flip = { func := fun (n : ) => -1 - τ.func (-1 - n), bijective := , asp := }
                                Instances For
                                  theorem AspPerm.flip_flip (τ : AspPerm) :
                                  τ.flip.flip = τ
                                  theorem AspPerm.flip_s (τ : AspPerm) (a b : ) :
                                  τ.flip.s a b = τ.s' (-b) (-a)
                                  theorem AspPerm.s_flip (τ : AspPerm) (a b : ) :
                                  τ.s a b = τ⁻¹.flip.s (-b) (-a)
                                  theorem AspPerm.b_move_up (τ : AspPerm) (a b b' : ) (b_le_b' : b b') :
                                  τ.s a b' = τ.s a b - {xFinset.Ico b b' | τ.func x < a}.card
                                  theorem AspPerm.s_noninc (τ : AspPerm) (a : ) {b b' : } (b_le_b' : b b') :
                                  τ.s a b τ.s a b' (τ.s a b = τ.s a b' ∀ (x : ), b xx < b'τ.func x a)
                                  theorem AspPerm.b_step (τ : AspPerm) (a b : ) :
                                  τ.s a (b + 1) = τ.s a b - if τ.func b < a then 1 else 0
                                  theorem AspPerm.b_step_one_iff (τ : AspPerm) (a b : ) :
                                  τ.s a (b + 1) = τ.s a b - 1 τ.func b < a
                                  theorem AspPerm.b_step_eq_iff (τ : AspPerm) (a b : ) :
                                  τ.s a (b + 1) = τ.s a b τ.func b a
                                  theorem AspPerm.a_move_up (τ : AspPerm) (a a' b : ) (a_le_a' : a a') :
                                  τ.s a' b = τ.s a b + {xFinset.Ico a a' | τ⁻¹.func x b}.card
                                  theorem AspPerm.s_nondec (τ : AspPerm) {a a' : } (a_le_a' : a a') (b : ) :
                                  τ.s a b τ.s a' b (τ.s a b = τ.s a' b ∀ (x : ), a τ.func xτ.func x < a'x < b)
                                  theorem AspPerm.a_step (τ : AspPerm) (a b : ) :
                                  τ.s (a + 1) b = τ.s a b + if τ⁻¹.func a b then 1 else 0
                                  theorem AspPerm.a_step_one_iff (τ : AspPerm) (a b : ) :
                                  τ.s (a + 1) b = τ.s a b + 1 τ⁻¹.func a b
                                  theorem AspPerm.a_step_one_iff' (τ : AspPerm) (u b : ) :
                                  τ.s (τ.func u + 1) b = τ.s (τ.func u) b + 1 u b
                                  theorem AspPerm.a_step_eq_iff (τ : AspPerm) (a b : ) :
                                  τ.s (a + 1) b = τ.s a b τ⁻¹.func a < b
                                  theorem AspPerm.a_step_eq_iff' (τ : AspPerm) (u b : ) :
                                  τ.s (τ.func u + 1) b = τ.s (τ.func u) b u < b
                                  theorem AspPerm.duality (τ : AspPerm) (a b : ) :
                                  τ.s a b - τ⁻¹.s b a = τ.χ + a - b
                                  def AspPerm.inset (τ : AspPerm) (v : ) :
                                  Equations
                                  Instances For
                                    theorem AspPerm.inset_eq_nw (τ : AspPerm) (v : ) :
                                    τ.inset v = northwest_set τ.func (τ.func v) v
                                    theorem AspPerm.invset_iff_inset (τ : AspPerm) (u v : ) :
                                    (u, v) inv_set τ.func u τ.inset v
                                    theorem AspPerm.inset_finite (τ : AspPerm) (v : ) :
                                    (τ.inset v).Finite
                                    def AspPerm.outset (τ : AspPerm) (u : ) :
                                    Equations
                                    Instances For
                                      theorem AspPerm.outset_eq_se (τ : AspPerm) (u : ) :
                                      τ.outset u = southeast_set τ.func (τ.func u) u
                                      theorem AspPerm.outset_finite (τ : AspPerm) (u : ) :
                                      (τ.outset u).Finite
                                      theorem AspPerm.reconstruction (τ : AspPerm) (n : ) :
                                      τ.func n = n - τ.χ + (τ.outset n).ncard - (τ.inset n).ncard

                                      Reconstruct τ n from its shift and inversion set: $\tau(n) = n - \chi_\tau$ $+ \#\{v \in \mathbb{Z} : (n,v) \in \operatorname{Inv} \tau\}$ $- \#\{u \in \mathbb{Z} : (u,n) \in \operatorname{Inv} \tau\}$.

                                      In Lean the two finite sets are implemented as τ.outset n and τ.inset n.

                                      theorem AspPerm.eq_of_inv_set_eq_of_chi_eq (σ τ : AspPerm) (h_inv : inv_set σ.func = inv_set τ.func) (h_χ : σ.χ = τ.χ) :
                                      σ = τ

                                      Two ASP permutations are equal if they have the same inversion set and the same shift.

                                      theorem AspPerm.eq_id_of_inv_set_eq_empty_of_chi_eq_zero (τ : AspPerm) (h_inv : inv_set τ.func = ) (h_χ : τ.χ = 0) :
                                      τ = id

                                      An ASP permutation with empty inversion set and zero shift is the identity.

                                      theorem AspPerm.s_eq (τ : AspPerm) (a b : ) :
                                      τ.s a b = τ⁻¹.s b a + τ.χ + a - b
                                      theorem AspPerm.s'_eq (τ : AspPerm) (a b : ) :
                                      τ⁻¹.s a b = τ.s b a - τ.χ + a - b
                                      theorem AspPerm.s_ge (τ : AspPerm) (a b : ) :
                                      τ.s a b a - b + τ.χ
                                      theorem AspPerm.s'_ge (τ : AspPerm) (a b : ) :
                                      τ.s' a b a - b - τ.χ
                                      theorem AspPerm.tend_zero_a (τ : AspPerm) (b : ) :
                                      ∃ (a : ), τ.s a b = 0
                                      theorem AspPerm.tend_zero_b (τ : AspPerm) (a : ) :
                                      ∃ (b : ), τ.s a b = 0
                                      noncomputable def AspPerm.sf (τ : AspPerm) :

                                      The slipface attached to τ.

                                      The paper writes its values as $s_\tau(a,b)$; in Lean the corresponding value is τ.s a b, and τ.sf packages the same data as a SlipFace.

                                      Equations
                                      • τ.sf = { func := τ.s, χ := τ.χ, a_step := , b_step := , nonneg := , ge_diff := , small_a := , large_a := , small_b := , large_b := }
                                      Instances For
                                        @[simp]
                                        theorem AspPerm.sf_func_eq_s (τ : AspPerm) :
                                        τ.sf.func = τ.s
                                        @[simp]
                                        theorem AspPerm.sf_chi_eq (τ : AspPerm) :
                                        τ.sf.χ = τ.χ
                                        theorem AspPerm.Δ_eq (τ : AspPerm) (a b : ) :
                                        τ.sf.Δ a b = if τ.func b = a then 1 else 0
                                        theorem AspPerm.Γ_eq (τ : AspPerm) :
                                        τ.sf.Γ = {(a, b) : × | τ.func b = a}

                                        Ramps, Lamps, and Wing Parameters #

                                        This section defines the ramp and lamp regions associated to an ASP permutation and develops the auxiliary wing parameters u and v used to move between inequalities for s and geometric statements about inversion sets.

                                        def AspPerm.ramp (τ : AspPerm) (b : ) :

                                        The b-ramp of an ASP permutation: the region cut out by the inequality τ.s m n ≥ n - b + 1.

                                        Equations
                                        Instances For
                                          def AspPerm.lamp (τ : AspPerm) (a : ) :

                                          The a-lamp of an ASP permutation, defined as the dual of a ramp.

                                          Equations
                                          Instances For
                                            def AspPerm.ramp_closed (τ : AspPerm) (b : ) {m₁ n₁ m₂ n₂ : } (hm : m₁ m₂) (hn : n₁ n₂) :
                                            (m₂, n₂) τ.ramp b(m₁, n₁) τ.ramp b
                                            Equations
                                            • =
                                            Instances For
                                              theorem AspPerm.ramp_lamp_dual (τ : AspPerm) (b m n : ) :
                                              (m, n) τ.ramp b (n, m) τ⁻¹.lamp b
                                              theorem AspPerm.mem_ramp_iff_s_ge (τ : AspPerm) (b m n : ) :
                                              (m, n) τ.ramp b τ.s (b + m - n - τ.χ) b m
                                              theorem AspPerm.mem_lamp_iff_s_ge (τ : AspPerm) (a m n : ) :
                                              (m, n) τ.lamp a τ⁻¹.s (a - m + n + τ.χ) a n
                                              def AspPerm.Wings.R (τ : AspPerm) (b m : ) :
                                              Equations
                                              Instances For
                                                theorem AspPerm.Wings.R_nonempty (τ : AspPerm) (b m : ) (m_pos : m > 0) :
                                                (R τ b m).Nonempty
                                                theorem AspPerm.Wings.R_bddAbove (τ : AspPerm) (b m : ) :
                                                ∃ (N : ), nR τ b m, n N
                                                def AspPerm.Wings.L (τ : AspPerm) (b n : ) :
                                                Equations
                                                Instances For
                                                  theorem AspPerm.Wings.L_nonnempty (τ : AspPerm) (b n : ) :
                                                  (L τ b n).Nonempty
                                                  theorem AspPerm.Wings.L_bddAbove (τ : AspPerm) (b n : ) (n_pos : n > 0) :
                                                  ∃ (A : ), aL τ b n, A a
                                                  noncomputable def AspPerm.v (τ : AspPerm) (b : ) {m : } (m_pos : m > 0) :
                                                  Equations
                                                  Instances For
                                                    theorem AspPerm.v_spec (τ : AspPerm) (b : ) {m : } (m_pos : m > 0) :
                                                    τ.s (τ.func (τ.v b m_pos)) b < m ∀ (a : ), τ.s a b < ma τ.func (τ.v b m_pos)
                                                    theorem AspPerm.v_crit (τ : AspPerm) (b : ) {m : } (m_pos : m > 0) (v : ) :
                                                    v = τ.v b m_pos τ.s (τ.func v) b = m - 1 b v
                                                    theorem AspPerm.s_τv_b (τ : AspPerm) (b : ) {m : } (m_pos : m > 0) :
                                                    τ.s (τ.func (τ.v b m_pos)) b = m - 1
                                                    theorem AspPerm.v_ge (τ : AspPerm) (b : ) {m : } (m_pos : m > 0) :
                                                    b τ.v b m_pos
                                                    theorem AspPerm.τv_lt (τ : AspPerm) (b : ) {m : } (m_pos : m > 0) {a : } (s_ge_m : m τ.s a b) :
                                                    τ.func (τ.v b m_pos) < a
                                                    noncomputable def AspPerm.u (τ : AspPerm) (b : ) {n : } (n_pos : n > 0) :
                                                    Equations
                                                    Instances For
                                                      theorem AspPerm.u_spec (τ : AspPerm) (b : ) {n : } (n_pos : n > 0) :
                                                      τ.s' b (τ.func (τ.u b n_pos)) n ∀ (a : ), τ.s' b a na τ.func (τ.u b n_pos)
                                                      theorem AspPerm.u_crit (τ : AspPerm) (b : ) {n : } (n_pos : n > 0) (u : ) :
                                                      u = τ.u b n_pos τ.s' b (τ.func u) = n u < b
                                                      theorem AspPerm.s'_b_τu (τ : AspPerm) (b : ) {n : } (n_pos : n > 0) :
                                                      τ.s' b (τ.func (τ.u b n_pos)) = n
                                                      theorem AspPerm.u_lt (τ : AspPerm) (b : ) {n : } (n_pos : n > 0) :
                                                      τ.u b n_pos < b
                                                      theorem AspPerm.τu_ge (τ : AspPerm) (b : ) {n : } (n_pos : n > 0) {a : } (s_ge_n : n τ.s' b a) :
                                                      τ.func (τ.u b n_pos) a
                                                      theorem AspPerm.inv_ramp_correspondence (τ : AspPerm) (b : ) {m n : } (m_pos : m > 0) (n_pos : n > 0) :
                                                      (m, n) τ.ramp b (τ.u b n_pos, τ.v b m_pos) inv_set τ.func

                                                      A box lies in the ramp exactly when it corresponds to an inversion between the wing parameters u and v.

                                                      Weak Order and Demazure Comparison Data #

                                                      This section introduces the left and right weak orders, the shifted-right map sr, and the comparison predicates used to express Demazure-product inequalities in terms of inversion sets and the functions s and s'.

                                                      The left weak order: σ ≤L τ if and only if $\operatorname{Inv} \sigma \subseteq \operatorname{Inv} \tau$.

                                                      Equations
                                                      Instances For

                                                        The right weak order: σ ≤R τ if and only if $\operatorname{Inv}(\sigma^{-1}) \subseteq \operatorname{Inv}(\tau^{-1})$.

                                                        Equations
                                                        Instances For
                                                          theorem AspPerm.le_weak_L_of_R {σ τ : AspPerm} (h_R : σ ≤R τ) :
                                                          theorem AspPerm.le_weak_R_of_L {σ τ : AspPerm} (h_L : σ ≤L τ) :
                                                          noncomputable def AspPerm.sr (τ α : AspPerm) :
                                                          Equations
                                                          Instances For
                                                            theorem AspPerm.sr_crit (τ α : AspPerm) (u v : ) :
                                                            (u, v) τ.sr α '' inv_set α.func (τ.func v, τ.func u) inv_set α⁻¹.func
                                                            theorem AspPerm.sr_subset (τ α : AspPerm) (h_R : α ≤R τ) :
                                                            def AspPerm.dprod_val_ge (α β : AspPerm) (a b n : ) :
                                                            Equations
                                                            Instances For
                                                              def AspPerm.le_dprod (τ α β : AspPerm) :
                                                              Equations
                                                              Instances For
                                                                def AspPerm.dprod_val_le (α β : AspPerm) (a b n : ) :
                                                                Equations
                                                                Instances For
                                                                  def AspPerm.ge_dprod (τ α β : AspPerm) :
                                                                  Equations
                                                                  Instances For
                                                                    def AspPerm.eq_dprod (τ α β : AspPerm) :
                                                                    Equations
                                                                    Instances For
                                                                      theorem AspPerm.chi_ge_of_dprod_ge {α β τ : AspPerm} (h_ge : τ.le_dprod α β) :
                                                                      α.χ + β.χ τ.χ
                                                                      theorem AspPerm.chi_le_of_dprod_le {α β τ : AspPerm} (h_le : τ.ge_dprod α β) :
                                                                      α.χ + β.χ τ.χ
                                                                      theorem AspPerm.chi_eq_of_drop_eq {τ α β : AspPerm} (h_eq : τ.eq_dprod α β) :
                                                                      α.χ + β.χ = τ.χ
                                                                      theorem AspPerm.dprod_inv_eq_inv_dprod (τ α β : AspPerm) (h_eq : τ.eq_dprod α β) :
                                                                      theorem AspPerm.ramp_dprod_legos (α β : AspPerm) (a b M N : ) (habMN : a - b + α.χ + β.χ = M - N) :
                                                                      α.dprod_val_ge β a b M mSet.Icc 1 M, nSet.Icc 1 N, (m, n) β.ramp b (M + 1 - m, N + 1 - n) α.lamp a