Documentation

TauCeti.Algebra.Lie.NormTwoShell.FullCartan.Basic

The signed shell Lie algebra over a full Cartan lattice #

Let B : Matrix I I ℤ be the Gram matrix of the lattice Q = I → ℤ, with norm-two shell Φ. The Lie ring Matrix.ShellLieAlgebra B has Cartan part Q itself. For the Lie algebra of a reductive group whose roots are the vectors of Φ, the Cartan part should instead be the full cocharacter lattice Y: it can be larger than the span of the coroots, as for GLₙ, and it need not split off the coroot lattice integrally. This file replaces Q by an arbitrary abelian group Y equipped with

subject to ⟨a, b∨⟩ = ⟪a, b⟫, where ⟪a, b⟫ = a ⬝ᵥ B *ᵥ b. This is a Matrix.ShellCartanDatum B Y. The carrier Matrix.FullShellLieAlgebra D is Y × (Φ →₀ ℤ), with a Cartan vector H_y for each y : Y and a root vector x_a for each a ∈ Φ, and the bracket is

with the ordered sign ε of Matrix.SignCover B, as in Matrix.ShellLieAlgebra. Only the coroot of an opposite bracket is moved into Y; no central or derived summand of Y is chosen.

The map Matrix.FullShellLieAlgebra.toFull, H_h ↦ H_(h∨) and x_a ↦ x_a, from Matrix.ShellLieAlgebra B preserves the bracket for symmetric B (Matrix.FullShellLieAlgebra.toFull_lie). Every root bracket of the full algebra is the image of the corresponding root bracket of the shell algebra, so the antisymmetry and the Jacobi identity for root vectors are transported from Matrix.ShellLieAlgebra; the remaining cases only use that ⟨-, y⟩ is additive. For B positive definite with even diagonal the bracket is therefore a Lie ring (Matrix.FullShellLieAlgebra.lieRing). As in the shell case nothing is divided by 2, and Y may have torsion. For the datum Matrix.ShellCartanDatum.rootLattice B, with Y = Q, the map toFull is a linear equivalence (Matrix.FullShellLieAlgebra.toFullEquiv), so for symmetric B the shell algebra is the special case of the coroot lattice. When Φ is empty, as for a torus, the full algebra is the abelian Lie ring Y.

Main definitions #

Main results #

References #

structure Matrix.ShellCartanDatum {I : Type u_1} [Fintype I] (B : Matrix I I ℤ) (Y : Type u_2) [AddCommGroup Y] :
Type (max u_1 u_2)

A full Cartan lattice for the norm-two shell of an integer Gram matrix B on Q = I → ℤ: an abelian group Y with root weights ⟨a, -⟩ = weight a : Y →ₗ[ℤ] ℤ, linear in a : Q, and a coroot map coroot : Q →ₗ[ℤ] Y, such that ⟨a, b∨⟩ = a ⬝ᵥ B *ᵥ b. For a reductive root datum whose roots, in simple-root coordinates, are the norm-two shell of B, Y is the cocharacter lattice and ⟨a, -⟩ is the pairing with the character of a.

  • weight : (I → ℤ) →ₗ[ℤ] Y →ₗ[ℤ] ℤ

    The root weight ⟨a, -⟩ : Y →ₗ[ℤ] ℤ of a lattice vector a.

  • coroot : (I → ℤ) →ₗ[ℤ] Y

    The coroot a∨ : Y of a lattice vector a.

  • weight_coroot (a b : I → ℤ) : (self.weight a) (self.coroot b) = a ⬝ᵥ B.mulVec b

    Root weights of coroots are given by the Gram matrix: ⟨a, b∨⟩ = a ⬝ᵥ B *ᵥ b.

Instances For
    theorem Matrix.ShellCartanDatum.ext {I : Type u_1} {inst✝ : Fintype I} {B : Matrix I I ℤ} {Y : Type u_2} {inst✝¹ : AddCommGroup Y} {x y : B.ShellCartanDatum Y} (weight : x.weight = y.weight) (coroot : x.coroot = y.coroot) :
    x = y
    theorem Matrix.ShellCartanDatum.ext_iff {I : Type u_1} {inst✝ : Fintype I} {B : Matrix I I ℤ} {Y : Type u_2} {inst✝¹ : AddCommGroup Y} {x y : B.ShellCartanDatum Y} :
    noncomputable def Matrix.ShellCartanDatum.rootLattice {I : Type u_1} [Fintype I] (B : Matrix I I ℤ) :

    The coroot lattice as a full Cartan lattice: Y = Q, the identity coroot map, and root weights ⟨a, y⟩ = a ⬝ᵥ B *ᵥ y.

    Instances For
      @[simp]
      theorem Matrix.ShellCartanDatum.rootLattice_weight_apply {I : Type u_1} [Fintype I] (B : Matrix I I ℤ) (a y : I → ℤ) :
      ((rootLattice B).weight a) y = a ⬝ᵥ B.mulVec y
      def Matrix.FullShellLieAlgebra {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] (_D : B.ShellCartanDatum Y) :
      Type (max u_1 u_2)

      The carrier Y × (Φ →₀ ℤ) of the signed Lie algebra of the norm-two shell Φ of B over the full Cartan lattice Y of D. The bracket is Matrix.FullShellLieAlgebra.bracketBilin.

      Instances For
        @[instance_reducible]
        noncomputable instance Matrix.FullShellLieAlgebra.instAddCommGroup {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] (D : B.ShellCartanDatum Y) :

        The identification of FullShellLieAlgebra D with the product Y × (Φ →₀ ℤ) defining it.

        Instances For
          noncomputable def Matrix.FullShellLieAlgebra.cartan {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] (D : B.ShellCartanDatum Y) :

          The Cartan vector H_y of y : Y, as a linear map Y →ₗ[ℤ] FullShellLieAlgebra D.

          Instances For
            noncomputable def Matrix.FullShellLieAlgebra.root {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] (D : B.ShellCartanDatum Y) (a : ↑B.normTwoShell) :

            The root vector x_a of a vector a of the norm-two shell.

            Instances For
              @[simp]
              theorem Matrix.FullShellLieAlgebra.equivProd_cartan {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] (D : B.ShellCartanDatum Y) (y : Y) :
              (equivProd D) ((cartan D) y) = (y, 0)
              @[simp]
              theorem Matrix.FullShellLieAlgebra.equivProd_root {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] (D : B.ShellCartanDatum Y) (a : ↑B.normTwoShell) :
              theorem Matrix.FullShellLieAlgebra.linearMap_ext {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} {N : Type u_3} [AddCommGroup N] {f g : FullShellLieAlgebra D →ₗ[ℤ] N} (hc : ∀ (y : Y), f ((cartan D) y) = g ((cartan D) y)) (hr : ∀ (a : ↑B.normTwoShell), f (root D a) = g (root D a)) :
              f = g

              Two linear maps out of FullShellLieAlgebra D agree once they agree on all Cartan vectors and on all root vectors.

              The map H_h ↦ H_(h∨), x_a ↦ x_a from the signed Lie algebra of the norm-two shell, with Cartan part Q, to the one over the full Cartan lattice of D.

              Instances For
                @[simp]
                theorem Matrix.FullShellLieAlgebra.toFull_cartan {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] (D : B.ShellCartanDatum Y) (h : I → ℤ) :
                @[simp]
                theorem Matrix.FullShellLieAlgebra.toFull_root {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] (D : B.ShellCartanDatum Y) (a : ↑B.normTwoShell) :

                For the coroot lattice Y = Q, toFull is a linear equivalence (Matrix.FullShellLieAlgebra.toFullEquiv_apply); for symmetric B it preserves the bracket by Matrix.FullShellLieAlgebra.toFull_lie.

                Instances For
                  noncomputable def Matrix.FullShellLieAlgebra.rootBracket {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] (D : B.ShellCartanDatum Y) [LinearOrder I] (a b : ↑B.normTwoShell) :

                  The bracket ⁅x_a, x_b⁆ of two root vectors: ε(a, b) x_(a + b) if a + b is in the norm-two shell, ε(a, b) H_(a∨) if a + b = 0, and 0 otherwise, where ε(a, b) is the ordered sign (B.orderedSignForm a b).negOnePow. It is the image under toFull of the root bracket of the shell algebra.

                  Instances For
                    @[simp]
                    theorem Matrix.FullShellLieAlgebra.rootBracket_of_mem {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] {a b : ↑B.normTwoShell} (h : ↑a + ↑b ∈ B.normTwoShell) :
                    rootBracket D a b = ((B.orderedSignForm ↑a) ↑b).negOnePow • root D ⟨↑a + ↑b, h⟩

                    The bracket of two root vectors whose sum is in the norm-two shell.

                    @[simp]
                    theorem Matrix.FullShellLieAlgebra.rootBracket_of_add_eq_zero {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] {a b : ↑B.normTwoShell} (h : ↑a + ↑b = 0) :
                    rootBracket D a b = ((B.orderedSignForm ↑a) ↑b).negOnePow • (cartan D) (D.coroot ↑a)

                    The bracket of two opposite root vectors is a multiple of the coroot of the first.

                    @[simp]
                    theorem Matrix.FullShellLieAlgebra.rootBracket_of_notMem_of_add_ne_zero {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] {a b : ↑B.normTwoShell} (h : ↑a + ↑b ∉ B.normTwoShell) (h' : ↑a + ↑b ≠ 0) :
                    rootBracket D a b = 0

                    Two root vectors whose sum is neither in the norm-two shell nor zero have bracket zero.

                    The bracket of FullShellLieAlgebra D, as the bilinear map determined by ⁅H_y, H_z⁆ = 0, ⁅H_y, x_b⁆ = ⟨b, y⟩ x_b, ⁅x_a, H_z⁆ = -⟨a, z⟩ x_a and ⁅x_a, x_b⁆ = rootBracket D a b.

                    Instances For
                      @[instance_reducible]

                      The bracket of FullShellLieAlgebra D is Matrix.FullShellLieAlgebra.bracketBilin. It is a Lie bracket for positive definite B with even diagonal, see Matrix.FullShellLieAlgebra.lieRing.

                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.add_lie {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (x y z : FullShellLieAlgebra D) :
                      ⁅x + y, z⁆ = ⁅x, z⁆ + ⁅y, z⁆
                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.lie_add {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (x y z : FullShellLieAlgebra D) :
                      ⁅x, y + z⁆ = ⁅x, y⁆ + ⁅x, z⁆
                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.smul_lie {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (n : ℤ) (x y : FullShellLieAlgebra D) :
                      ⁅n • x, y⁆ = n • ⁅x, y⁆
                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.lie_smul {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (n : ℤ) (x y : FullShellLieAlgebra D) :
                      ⁅x, n • y⁆ = n • ⁅x, y⁆
                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.zero_lie {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (y : FullShellLieAlgebra D) :
                      ⁅0, y⁆ = 0
                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.lie_zero {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (x : FullShellLieAlgebra D) :
                      ⁅x, 0⁆ = 0
                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.neg_lie {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (x y : FullShellLieAlgebra D) :
                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.lie_neg {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (x y : FullShellLieAlgebra D) :
                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.cartan_lie_cartan {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (y z : Y) :
                      ⁅(cartan D) y, (cartan D) z⁆ = 0

                      Cartan vectors commute.

                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.cartan_lie_root {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (y : Y) (b : ↑B.normTwoShell) :
                      ⁅(cartan D) y, root D b⁆ = (D.weight ↑b) y • root D b

                      The Cartan vector H_y acts on the root vector x_b by the root weight ⟨b, y⟩.

                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.root_lie_cartan {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (a : ↑B.normTwoShell) (z : Y) :
                      ⁅root D a, (cartan D) z⁆ = -((D.weight ↑a) z • root D a)

                      The bracket ⁅x_a, H_z⁆ = -⟨a, z⟩ x_a.

                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.root_lie_root {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (a b : ↑B.normTwoShell) :

                      The bracket of two root vectors is their root bracket.

                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.units_smul_lie {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (u : ℤˣ) (x y : FullShellLieAlgebra D) :
                      ⁅u • x, y⁆ = u • ⁅x, y⁆
                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.lie_units_smul {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (u : ℤˣ) (x y : FullShellLieAlgebra D) :
                      ⁅x, u • y⁆ = u • ⁅x, y⁆
                      theorem Matrix.FullShellLieAlgebra.toFull_lie {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (hB : B.IsSymm) (x y : B.ShellLieAlgebra) :
                      (toFull D) ⁅x, y⁆ = ⁅(toFull D) x, (toFull D) y⁆

                      toFull preserves the bracket, for a symmetric B.

                      @[simp]
                      theorem Matrix.FullShellLieAlgebra.cartan_lie_rootBracket {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (y : Y) (a b : ↑B.normTwoShell) :
                      ⁅(cartan D) y, rootBracket D a b⁆ = (D.weight (↑a + ↑b)) y • rootBracket D a b

                      The Cartan weight of a root bracket. The bracket of two root vectors has root weight the sum of the weights of their roots.

                      theorem Matrix.FullShellLieAlgebra.rootBracket_swap {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (hB : B.IsSymm) (hdiag : ∀ (i : I), Even (B i i)) (a b : ↑B.normTwoShell) :

                      Antisymmetry of the root bracket, for a symmetric B with even diagonal.

                      theorem Matrix.FullShellLieAlgebra.lie_skew {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (hB : B.IsSymm) (hdiag : ∀ (i : I), Even (B i i)) (x y : FullShellLieAlgebra D) :

                      Antisymmetry of the bracket, for a symmetric B with even diagonal.

                      theorem Matrix.FullShellLieAlgebra.lie_self {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (hB : B.IsSymm) (hdiag : ∀ (i : I), Even (B i i)) (x : FullShellLieAlgebra D) :
                      ⁅x, x⁆ = 0

                      The bracket is alternating, for a symmetric B with even diagonal. The group Y may have 2-torsion, so this is not a consequence of antisymmetry alone.

                      The Jacobi identity #

                      theorem Matrix.FullShellLieAlgebra.lie_jacobi {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (hB : B.PosDef) (hdiag : ∀ (i : I), Even (B i i)) (x y z : FullShellLieAlgebra D) :

                      The Jacobi identity, for a positive definite B with even diagonal.

                      theorem Matrix.FullShellLieAlgebra.leibniz_lie {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] {D : B.ShellCartanDatum Y} [LinearOrder I] (hB : B.PosDef) (hdiag : ∀ (i : I), Even (B i i)) (x y z : FullShellLieAlgebra D) :

                      The Leibniz form of the Jacobi identity, for a positive definite B with even diagonal.

                      @[instance_reducible]
                      noncomputable def Matrix.FullShellLieAlgebra.lieRing {I : Type u_1} [Fintype I] {B : Matrix I I ℤ} {Y : Type u_2} [AddCommGroup Y] (D : B.ShellCartanDatum Y) [LinearOrder I] (hB : B.PosDef) (hdiag : ∀ (i : I), Even (B i i)) :

                      The signed Lie ring of the norm-two shell over a full Cartan lattice, for a positive definite integer matrix B with even diagonal. It is not an instance, since it depends on these two hypotheses; install it locally when needed.

                      Instances For