Documentation

LeanPool.RootSystem.An

Type-Aₙ root systems #

Explicit construction of the type-Aₙ root pairing on the weight lattice Fin n → ℤ, exhibited as a crystallographic, reduced Mathlib RootPairing.

@[reducible, inline]
abbrev An.Zn (n : ) :

The integral weight lattice Fin n → ℤ underlying the type-Aₙ root pairing.

Equations
Instances For
    @[reducible, inline]
    abbrev An.ZnDual (n : ) :

    The -linear dual of Zn n, carrying the coroots.

    Equations
    Instances For
      def An.eTranspose {n : } (k : Fin n) :

      The covector extracting the k-th coordinate of a vector in Zn n.

      Equations
      Instances For
        def An.Ae {n : } (k : Fin n) :
        Zn n

        The k-th column vector: 2 at index k, -1 at the neighbours of k, and 0 elsewhere.

        Equations
        Instances For
          structure An.SignedInterval (n : ) :

          A signed interval [i, j] in Fin n with a sign ε; indexes the roots of type Aₙ.

          • i : Fin n

            The left endpoint of the interval.

          • j : Fin n

            The right endpoint of the interval.

          • hij : self.i self.j
          • ε : Bool

            The Boolean sign attached to the interval.

          Instances For

            The integer sign of a signed interval: 1 when ε is true, otherwise -1.

            Equations
            Instances For
              def An.α {n : } (J : SignedInterval n) :
              Zn n

              The root of type Aₙ associated to a signed interval.

              Equations
              Instances For
                def An.αDual {n : } (J : SignedInterval n) :

                The coroot of type Aₙ associated to a signed interval.

                Equations
                Instances For
                  def An.s {n : } (J K : SignedInterval n) :

                  The reflection permutation for signed intervals. For positive intervals J = [i,j] and K = [k,l]:

                  • If (i,j) = (k,l): returns -[k,l]
                  • If i = l+1: returns [k,j] (merge: K then J)
                  • If k = j+1: returns [i,l] (merge: J then K)
                  • If i = k, j > l: returns -[l+1, j]
                  • If i = k, j < l: returns [j+1, l]
                  • If i < k, j = l: returns -[i, k-1]
                  • If i > k, j = l: returns [k, i-1]
                  • Otherwise: returns [k,l] Then s_{-J} = s_J and s_J(-K) = -s_J(K).
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[reducible, inline]
                    noncomputable abbrev An.ZnPairing (n : ) :

                    The canonical evaluation pairing between Zn n and its dual ZnDual n.

                    Equations
                    Instances For
                      theorem An.SignedInterval.ext' {n : } {J K : SignedInterval n} (hi : J.i = K.i) (hj : J.j = K.j) ( : J.ε = K.ε) :
                      J = K
                      theorem An.SignedInterval.ext'_iff {n : } {J K : SignedInterval n} :
                      J = K J.i = K.i J.j = K.j J.ε = K.ε
                      theorem An.s_involutive {n : } [NeZero n] (J K : SignedInterval n) :
                      s J (s J K) = K
                      theorem An.Ae_sum_eq {n : } [NeZero n] (p q : Fin n) (hpq : p q) (t : Fin n) :
                      (∑ uFinset.Icc p q, Ae u) t = (((if t = p then 1 else 0) + if t = q then 1 else 0) - if t + 1 = p then 1 else 0) - if q + 1 = t then 1 else 0

                      The key formula: sum of Ae columns over an interval [p,q] evaluated at t gives δ_{t,p} + δ_{t,q} - δ_{t+1,p} - δ_{q+1,t} (using comparisons).

                      theorem An.α_eval {n : } [NeZero n] (J : SignedInterval n) (t : Fin n) :
                      α J t = J.sign * ((((if t = J.i then 1 else 0) + if t = J.j then 1 else 0) - if t + 1 = J.i then 1 else 0) - if J.j + 1 = t then 1 else 0)

                      α J evaluated at t, expressed in terms of Kronecker deltas.

                      theorem An.α_dual_eval {n : } [NeZero n] (J : SignedInterval n) (f : Zn n) :
                      (αDual J) f = J.sign * vFinset.Icc J.i J.j, f v

                      αDual J evaluated on a test function.

                      theorem An.pairing_formula {n : } [NeZero n] (J K : SignedInterval n) :
                      ((ZnPairing n) (α K)) (αDual J) = J.sign * K.sign * ((((if J.i = K.i then 1 else 0) + if J.j = K.j then 1 else 0) - if J.i = K.j + 1 then 1 else 0) - if K.i = J.j + 1 then 1 else 0)

                      Pairing computation: L(α K, α^v J) in terms of interval endpoints.

                      theorem An.pairing_self {n : } [NeZero n] (J : SignedInterval n) :
                      ((ZnPairing n) (α J)) (αDual J) = 2
                      theorem An.pairing_eq_two_iff_eq {n : } [NeZero n] (J K : SignedInterval n) :
                      ((ZnPairing n) (α K)) (αDual J) = 2 K = J
                      theorem An.root_coroot_two' {n : } [NeZero n] (J : SignedInterval n) :
                      ((ZnPairing n) (α J)) (αDual J) = 2
                      theorem An.reflectionPerm_root_eval {n : } [NeZero n] (J K : SignedInterval n) (t : Fin n) :
                      (α K - ((ZnPairing n) (α K)) (αDual J) α J) t = α (s J K) t
                      theorem An.reflectionPerm_root' {n : } [NeZero n] (J K : SignedInterval n) :
                      α K - ((ZnPairing n) (α K)) (αDual J) α J = α (s J K)
                      theorem An.pairing_symm {n : } [NeZero n] (J K : SignedInterval n) :
                      ((ZnPairing n) (α J)) (αDual K) = ((ZnPairing n) (α K)) (αDual J)
                      theorem An.reflectionPerm_coroot_single {n : } [NeZero n] (J K : SignedInterval n) (t : Fin n) :
                      ((αDual K - ((ZnPairing n) (α J)) (αDual K) αDual J) ∘ₗ LinearMap.single (fun (x : Fin n) => ) t) 1 = (αDual (s J K) ∘ₗ LinearMap.single (fun (x : Fin n) => ) t) 1
                      theorem An.reflectionPerm_coroot' {n : } [NeZero n] (J K : SignedInterval n) :
                      αDual K - ((ZnPairing n) (α J)) (αDual K) αDual J = αDual (s J K)
                      noncomputable def An.rootPairing (n : ) [NeZero n] :

                      The type-Aₙ root pairing over , built from signed intervals on Fin n.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[implicit_reducible]
                        instance An.finite (n : ) :
                        Equations
                        • One or more equations did not get rendered due to their size.