Documentation

Mathlib.LinearAlgebra.Matrix.SpecialLinearGroup

The Special Linear group $SL(n, R)$ #

This file defines the elements of the Special Linear group SpecialLinearGroup n R, consisting of all square R-matrices with determinant 1 on the fintype n by n. In addition, we define the group structure on SpecialLinearGroup n R and the embedding into the general linear group GeneralLinearGroup R (n → R).

Main definitions #

Notation #

For m : ℕ, we introduce the notation SL(m,R) for the special linear group on the fintype n = Fin m, in the locale MatrixGroups.

Implementation notes #

The inverse operation in the SpecialLinearGroup is defined to be the adjugate matrix, so that SpecialLinearGroup n R has a group structure for all CommRing R.

We define the elements of SpecialLinearGroup to be matrices, since we need to compute their determinant. This is in contrast with GeneralLinearGroup R M, which consists of invertible R-linear maps on M.

We provide Matrix.SpecialLinearGroup.hasCoeToFun for convenience, but do not state any lemmas about it, and use Matrix.SpecialLinearGroup.coeFn_eq_coe to eliminate it in favor of a regular coercion.

References #

Tags #

matrix group, group, matrix inverse

def Matrix.SpecialLinearGroup (n : Type u) [DecidableEq n] [Fintype n] (R : Type v) [CommRing R] :
Type (max 0 u v)

SpecialLinearGroup n R is the group of n by n R-matrices with determinant equal to 1.

Equations
Instances For
    Equations

    This instance is here for convenience, but is literally the same as the coercion from hasCoeToMatrix.

    Equations
    theorem Matrix.SpecialLinearGroup.ext_iff {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) (B : Matrix.SpecialLinearGroup n R) :
    A = B ∀ (i j : n), A i j = B i j
    theorem Matrix.SpecialLinearGroup.ext {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) (B : Matrix.SpecialLinearGroup n R) :
    (∀ (i j : n), A i j = B i j)A = B
    Equations
    Equations
    Equations
    • Matrix.SpecialLinearGroup.hasOne = { one := 1, }
    Equations
    Equations
    • Matrix.SpecialLinearGroup.instInhabited = { default := 1 }
    Equations

    The transpose of a matrix in SL(n, R)

    Equations
    • A.transpose = (↑A).transpose,
    Instances For
      theorem Matrix.SpecialLinearGroup.coe_mk {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix n n R) (h : A.det = 1) :
      A, h = A
      @[simp]
      theorem Matrix.SpecialLinearGroup.coe_inv {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) :
      A⁻¹ = (↑A).adjugate
      @[simp]
      theorem Matrix.SpecialLinearGroup.coe_mul {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) (B : Matrix.SpecialLinearGroup n R) :
      (A * B) = A * B
      @[simp]
      theorem Matrix.SpecialLinearGroup.coe_one {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] :
      1 = 1
      @[simp]
      theorem Matrix.SpecialLinearGroup.det_coe {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) :
      (↑A).det = 1
      @[simp]
      theorem Matrix.SpecialLinearGroup.coe_pow {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) (m : ) :
      (A ^ m) = A ^ m
      @[simp]
      theorem Matrix.SpecialLinearGroup.coe_transpose {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) :
      A.transpose = (↑A).transpose
      Equations
      Equations
      • Matrix.SpecialLinearGroup.instGroup = Group.mk

      A version of Matrix.toLin' A that produces linear equivalences.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem Matrix.SpecialLinearGroup.toLin'_apply {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) (v : nR) :
        (Matrix.SpecialLinearGroup.toLin' A) v = (Matrix.toLin' A) v
        theorem Matrix.SpecialLinearGroup.toLin'_to_linearMap {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) :
        (Matrix.SpecialLinearGroup.toLin' A) = Matrix.toLin' A
        theorem Matrix.SpecialLinearGroup.toLin'_symm_apply {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) (v : nR) :
        (Matrix.SpecialLinearGroup.toLin' A).symm v = (Matrix.toLin' A⁻¹) v
        theorem Matrix.SpecialLinearGroup.toLin'_symm_to_linearMap {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) :
        (Matrix.SpecialLinearGroup.toLin' A).symm = Matrix.toLin' A⁻¹
        theorem Matrix.SpecialLinearGroup.toLin'_injective {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] :
        Function.Injective Matrix.SpecialLinearGroup.toLin'

        toGL is the map from the special linear group to the general linear group

        Equations
        Instances For
          theorem Matrix.SpecialLinearGroup.coe_toGL {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup n R) :
          (Matrix.SpecialLinearGroup.toGL A) = (Matrix.SpecialLinearGroup.toLin' A)

          A ring homomorphism from R to S induces a group homomorphism from SpecialLinearGroup n R to SpecialLinearGroup n S.

          Equations
          Instances For
            @[simp]
            theorem Matrix.SpecialLinearGroup.map_apply_coe {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) (g : Matrix.SpecialLinearGroup n R) :
            ((Matrix.SpecialLinearGroup.map f) g) = f.mapMatrix g
            theorem Matrix.SpecialLinearGroup.scalar_eq_coe_self_center {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : (Subgroup.center (Matrix.SpecialLinearGroup n R))) (i : n) :
            (Matrix.scalar n) (A i i) = A

            The center of a special linear group of degree n is the subgroup of scalar matrices, for which the scalars are the n-th roots of unity.

            An equivalence of groups, from the center of the special linear group to the roots of unity.

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

              An equivalence of groups, from the center of the special linear group to the roots of unity.

              See also center_equiv_rootsOfUnity'.

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

                Coercion of SL n to SL n R for a commutative ring R.

                Equations

                Formal operation of negation on special linear group on even cardinality n given by negating each element.

                Equations
                @[simp]
                theorem Matrix.SpecialLinearGroup.coe_neg {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] [Fact (Even (Fintype.card n))] (g : Matrix.SpecialLinearGroup n R) :
                (-g) = -g
                Equations
                theorem Matrix.SpecialLinearGroup.SL2_inv_expl_det {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup (Fin 2) R) :
                Matrix.det ![![A 1 1, -A 0 1], ![-A 1 0, A 0 0]] = 1
                theorem Matrix.SpecialLinearGroup.SL2_inv_expl {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup (Fin 2) R) :
                A⁻¹ = ![![A 1 1, -A 0 1], ![-A 1 0, A 0 0]],
                theorem Matrix.SpecialLinearGroup.fin_two_induction {R : Type v} [CommRing R] (P : Matrix.SpecialLinearGroup (Fin 2) RProp) (h : ∀ (a b c d : R) (hdet : a * d - b * c = 1), P !![a, b; c, d], ) (g : Matrix.SpecialLinearGroup (Fin 2) R) :
                P g
                theorem Matrix.SpecialLinearGroup.fin_two_exists_eq_mk_of_apply_zero_one_eq_zero {R : Type u_2} [Field R] (g : Matrix.SpecialLinearGroup (Fin 2) R) (hg : g 1 0 = 0) :
                ∃ (a : R) (b : R) (h : a 0), g = !![a, b; 0, a⁻¹],
                theorem Matrix.SpecialLinearGroup.isCoprime_row {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup (Fin 2) R) (i : Fin 2) :
                IsCoprime (A i 0) (A i 1)
                theorem Matrix.SpecialLinearGroup.isCoprime_col {R : Type v} [CommRing R] (A : Matrix.SpecialLinearGroup (Fin 2) R) (j : Fin 2) :
                IsCoprime (A 0 j) (A 1 j)
                theorem IsCoprime.exists_SL2_col {R : Type u_1} [CommRing R] {a : R} {b : R} (hab : IsCoprime a b) (j : Fin 2) :
                ∃ (g : Matrix.SpecialLinearGroup (Fin 2) R), g 0 j = a g 1 j = b

                Given any pair of coprime elements of R, there exists a matrix in SL(2, R) having those entries as its left or right column.

                theorem IsCoprime.exists_SL2_row {R : Type u_1} [CommRing R] {a : R} {b : R} (hab : IsCoprime a b) (i : Fin 2) :
                ∃ (g : Matrix.SpecialLinearGroup (Fin 2) R), g i 0 = a g i 1 = b

                Given any pair of coprime elements of R, there exists a matrix in SL(2, R) having those entries as its top or bottom row.

                theorem IsCoprime.vecMulSL {R : Type u_1} [CommRing R] {v : Fin 2R} (hab : IsCoprime (v 0) (v 1)) (A : Matrix.SpecialLinearGroup (Fin 2) R) :
                IsCoprime (Matrix.vecMul v (↑A) 0) (Matrix.vecMul v (↑A) 1)

                A vector with coprime entries, right-multiplied by a matrix in SL(2, R), has coprime entries.

                theorem IsCoprime.mulVecSL {R : Type u_1} [CommRing R] {v : Fin 2R} (hab : IsCoprime (v 0) (v 1)) (A : Matrix.SpecialLinearGroup (Fin 2) R) :
                IsCoprime ((↑A).mulVec v 0) ((↑A).mulVec v 1)

                A vector with coprime entries, left-multiplied by a matrix in SL(2, R), has coprime entries.

                The matrix S = [[0, -1], [1, 0]] as an element of SL(2, ℤ).

                This element acts naturally on the Euclidean plane as a rotation about the origin by π / 2.

                This element also acts naturally on the hyperbolic plane as rotation about i by π. It represents the Mobiüs transformation z ↦ -1/z and is an involutive elliptic isometry.

                Equations
                Instances For

                  The matrix T = [[1, 1], [0, 1]] as an element of SL(2, ℤ)

                  Equations
                  Instances For
                    theorem ModularGroup.coe_S :
                    ModularGroup.S = !![0, -1; 1, 0]
                    theorem ModularGroup.coe_T :
                    ModularGroup.T = !![1, 1; 0, 1]
                    theorem ModularGroup.coe_T_zpow (n : ) :
                    (ModularGroup.T ^ n) = !![1, n; 0, 1]