Documentation

Mathlib.LinearAlgebra.Matrix.Cartan

Cartan matrices #

This file defines Cartan matrices for simple Lie algebras, both the exceptional types (E₆, E₇, E₈, F₄, G₂) and the classical infinite families (A, B, C, D), as well as the generalized Eₙ family obtained by continuing the E-type Dynkin diagram.

Main definitions #

Exceptional types and the E family #

Classical types #

References #

Tags #

cartan matrix, lie algebra, dynkin diagram

Exceptional Cartan matrices #

def CartanMatrix.E (n : ) :
Matrix (Fin n) (Fin n)

The generalized Cartan matrix of type Eₙ, extending E₆, E₇, E₈ by the same Dynkin-diagram pattern.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem CartanMatrix.E_six_eq :
    E 6 = !![2, 0, -1, 0, 0, 0; 0, 2, 0, -1, 0, 0; -1, 0, 2, -1, 0, 0; 0, -1, -1, 2, -1, 0; 0, 0, 0, -1, 2, -1; 0, 0, 0, 0, -1, 2]

    E 6 is the Cartan matrix of type E₆. See [bourbaki1968] plate V, page 277.

    @[reducible, inline, deprecated "Use `E 6` instead" (since := "2026-07-29")]

    Deprecated alias for E 6.

    Equations
    Instances For
      theorem CartanMatrix.E_seven_eq :
      E 7 = !![2, 0, -1, 0, 0, 0, 0; 0, 2, 0, -1, 0, 0, 0; -1, 0, 2, -1, 0, 0, 0; 0, -1, -1, 2, -1, 0, 0; 0, 0, 0, -1, 2, -1, 0; 0, 0, 0, 0, -1, 2, -1; 0, 0, 0, 0, 0, -1, 2]

      E 7 is the Cartan matrix of type E₇. See [bourbaki1968] plate VI, page 281.

      @[reducible, inline, deprecated "Use `E 7` instead" (since := "2026-07-29")]

      Deprecated alias for E 7.

      Equations
      Instances For
        theorem CartanMatrix.E_eight_eq :
        E 8 = !![2, 0, -1, 0, 0, 0, 0, 0; 0, 2, 0, -1, 0, 0, 0, 0; -1, 0, 2, -1, 0, 0, 0, 0; 0, -1, -1, 2, -1, 0, 0, 0; 0, 0, 0, -1, 2, -1, 0, 0; 0, 0, 0, 0, -1, 2, -1, 0; 0, 0, 0, 0, 0, -1, 2, -1; 0, 0, 0, 0, 0, 0, -1, 2]

        E 8 is the Cartan matrix of type E₈. See [bourbaki1968] plate VII, page 285.

        @[reducible, inline, deprecated "Use `E 8` instead" (since := "2026-07-29")]

        Deprecated alias for E 8.

        Equations
        Instances For

          The Cartan matrix of type F₄. See [bourbaki1968] plate VIII, page 288.

          Equations
          Instances For

            The Cartan matrix of type G₂. See [bourbaki1968] plate IX, page 290. We use the transpose of Bourbaki's matrix for consistency with F₄.

            Equations
            Instances For

              Classical Cartan matrices #

              def CartanMatrix.A (n : ) :
              Matrix (Fin n) (Fin n)

              The Cartan matrix of type Aₙ₋₁ (rank n-1, corresponding to sl(n)).

              Equations
              Instances For
                def CartanMatrix.B (n : ) :
                Matrix (Fin n) (Fin n)

                The Cartan matrix of type Bₙ (rank n, corresponding to so(2n+1)).

                Equations
                Instances For
                  def CartanMatrix.C (n : ) :
                  Matrix (Fin n) (Fin n)

                  The Cartan matrix of type Cₙ (rank n, corresponding to sp(2n)).

                  Equations
                  Instances For
                    def CartanMatrix.D (n : ) :
                    Matrix (Fin n) (Fin n)

                    The Cartan matrix of type Dₙ (rank n, corresponding to so(2n)).

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For

                      Properties #

                      @[simp]
                      theorem CartanMatrix.A_diag (n : ) :
                      (A n).diag = 2
                      @[simp]
                      theorem CartanMatrix.B_diag (n : ) (i : Fin n) :
                      B n i i = 2
                      @[simp]
                      theorem CartanMatrix.C_diag (n : ) (i : Fin n) :
                      C n i i = 2
                      @[simp]
                      theorem CartanMatrix.D_diag (n : ) (i : Fin n) :
                      D n i i = 2
                      theorem CartanMatrix.A_apply_le_zero_of_ne (n : ) (i j : Fin n) (h : i j) :
                      A n i j 0
                      theorem CartanMatrix.B_off_diag_nonpos (n : ) (i j : Fin n) (h : i j) :
                      B n i j 0
                      theorem CartanMatrix.C_off_diag_nonpos (n : ) (i j : Fin n) (h : i j) :
                      C n i j 0
                      theorem CartanMatrix.D_off_diag_nonpos (n : ) (i j : Fin n) (h : i j) :
                      D n i j 0

                      Transpose properties #

                      @[simp]
                      theorem CartanMatrix.A_transpose (n : ) :
                      (A n).transpose = A n
                      @[simp]
                      theorem CartanMatrix.B_transpose (n : ) :
                      (B n).transpose = C n
                      @[simp]
                      theorem CartanMatrix.C_transpose (n : ) :
                      (C n).transpose = B n
                      @[simp]
                      theorem CartanMatrix.D_transpose (n : ) :
                      (D n).transpose = D n

                      Small cases #

                      theorem CartanMatrix.A_one :
                      A 1 = !![2]
                      theorem CartanMatrix.A_two :
                      A 2 = !![2, -1; -1, 2]
                      theorem CartanMatrix.A_three :
                      A 3 = !![2, -1, 0; -1, 2, -1; 0, -1, 2]
                      theorem CartanMatrix.D_two :
                      D 2 = !![2, 0; 0, 2]
                      theorem CartanMatrix.B_two :
                      B 2 = !![2, -2; -1, 2]
                      theorem CartanMatrix.C_two :
                      C 2 = !![2, -1; -2, 2]
                      theorem CartanMatrix.D_three :
                      D 3 = !![2, -1, -1; -1, 2, 0; -1, 0, 2]
                      theorem CartanMatrix.D_three' :
                      (Matrix.reindex ((↑[0, 1]).formPerm ) ((↑[0, 1]).formPerm )) (D 3) = A 3
                      theorem CartanMatrix.D_four :
                      D 4 = !![2, -1, 0, 0; -1, 2, -1, -1; 0, -1, 2, 0; 0, -1, 0, 2]

                      Exceptional matrix diagonal entries #

                      @[simp]
                      theorem CartanMatrix.E_diag (n : ) (i : Fin n) :
                      E n i i = 2
                      @[deprecated "Use `E_diag` instead" (since := "2026-08-11")]
                      theorem CartanMatrix.E₆_diag (i : Fin 6) :
                      E 6 i i = 2
                      @[deprecated "Use `E_diag` instead" (since := "2026-08-11")]
                      theorem CartanMatrix.E₇_diag (i : Fin 7) :
                      E 7 i i = 2
                      @[deprecated "Use `E_diag` instead" (since := "2026-08-11")]
                      theorem CartanMatrix.E₈_diag (i : Fin 8) :
                      E 8 i i = 2
                      @[simp]
                      theorem CartanMatrix.F₄_diag (i : Fin 4) :
                      F₄ i i = 2
                      @[simp]
                      theorem CartanMatrix.G₂_diag (i : Fin 2) :
                      G₂ i i = 2

                      Exceptional matrix off-diagonal entries #

                      theorem CartanMatrix.E_off_diag_nonpos (n : ) (i j : Fin n) (h : i j) :
                      E n i j 0
                      @[deprecated "Use `E_off_diag_nonpos` instead" (since := "2026-08-11")]
                      theorem CartanMatrix.E₆_off_diag_nonpos (i j : Fin 6) (h : i j) :
                      E 6 i j 0
                      @[deprecated "Use `E_off_diag_nonpos` instead" (since := "2026-08-11")]
                      theorem CartanMatrix.E₇_off_diag_nonpos (i j : Fin 7) (h : i j) :
                      E 7 i j 0
                      @[deprecated "Use `E_off_diag_nonpos` instead" (since := "2026-08-11")]
                      theorem CartanMatrix.E₈_off_diag_nonpos (i j : Fin 8) (h : i j) :
                      E 8 i j 0
                      theorem CartanMatrix.F₄_off_diag_nonpos (i j : Fin 4) (h : i j) :
                      F₄ i j 0
                      theorem CartanMatrix.G₂_off_diag_nonpos (i j : Fin 2) (h : i j) :
                      G₂ i j 0

                      Exceptional matrix transpose properties #

                      @[simp]
                      theorem CartanMatrix.E_transpose (n : ) :
                      (E n).transpose = E n
                      @[deprecated "Use `E_transpose` instead" (since := "2026-08-11")]
                      @[deprecated "Use `E_transpose` instead" (since := "2026-08-11")]
                      @[deprecated "Use `E_transpose` instead" (since := "2026-08-11")]
                      @[deprecated "Use `E_isSymm` instead" (since := "2026-08-11")]
                      @[deprecated "Use `E_isSymm` instead" (since := "2026-08-11")]
                      @[deprecated "Use `E_isSymm` instead" (since := "2026-08-11")]

                      Exceptional matrix determinants #

                      theorem CartanMatrix.det_E_add_two (n : ) (hn : 4 n) :
                      (E (n + 2)).det = 2 * (E (n + 1)).det - (E n).det
                      theorem CartanMatrix.E_det {n : } (hn : 3 n) :
                      (E n).det = 9 - n

                      The determinant of E n is 9 - n for n ≥ 3.

                      The determinants of E₆, E₇, E₈ are 3, 2, 1 respectively.

                      def Matrix.IsSimplyLaced {ι : Type u_1} (A : Matrix ι ι ) :

                      A Cartan matrix is simply laced if its off-diagonal entries are all 0 or -1.

                      Equations
                      Instances For
                        theorem Matrix.isSimplyLaced_iff_of_linearOrder {ι : Type u_1} [LinearOrder ι] (A : Matrix ι ι ) (hA : A.IsSymm) :
                        A.IsSimplyLaced ∀ ⦃i j : ι⦄, j < iA i j = 0 A i j = -1
                        @[deprecated "Use `isSimplyLaced_E` instead" (since := "2026-08-11")]
                        @[deprecated "Use `isSimplyLaced_E` instead" (since := "2026-08-11")]
                        @[deprecated "Use `isSimplyLaced_E` instead" (since := "2026-08-11")]

                        The Cartan matrices F₄ and G₂ are not simply laced because they contain off-diagonal entries that are neither 0 nor -1.