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 #
Matrix.SpecialLinearGroup
is the type of matrices with determinant 1Matrix.SpecialLinearGroup.group
gives the group structure (under multiplication)Matrix.SpecialLinearGroup.toGL
is the embeddingSLₙ(R) → GLₙ(R)
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 #
- https://en.wikipedia.org/wiki/Special_linear_group
Tags #
matrix group, group, matrix inverse
SpecialLinearGroup n R
is the group of n
by n
R
-matrices with determinant equal to 1.
Equations
- Matrix.SpecialLinearGroup n R = { A : Matrix n n R // Matrix.det A = 1 }
Instances For
SpecialLinearGroup n R
is the group of n
by n
R
-matrices with determinant equal to 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Matrix.SpecialLinearGroup.hasCoeToMatrix = { coe := fun (A : Matrix.SpecialLinearGroup n R) => ↑A }
This instance is here for convenience, but is literally the same as the coercion from
hasCoeToMatrix
.
Equations
- Matrix.SpecialLinearGroup.instCoeFun = { coe := fun (A : Matrix.SpecialLinearGroup n R) => ↑A }
Equations
- Matrix.SpecialLinearGroup.hasInv = { inv := fun (A : Matrix.SpecialLinearGroup n R) => { val := Matrix.adjugate ↑A, property := (_ : Matrix.det (Matrix.adjugate ↑A) = 1) } }
Equations
- Matrix.SpecialLinearGroup.hasMul = { mul := fun (A B : Matrix.SpecialLinearGroup n R) => { val := ↑A * ↑B, property := (_ : Matrix.det (↑A * ↑B) = 1) } }
Equations
- Matrix.SpecialLinearGroup.hasOne = { one := { val := 1, property := (_ : Matrix.det 1 = 1) } }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Matrix.SpecialLinearGroup.instInhabitedSpecialLinearGroup = { default := 1 }
The transpose of a matrix in SL(n, R)
Equations
- Matrix.SpecialLinearGroup.transpose A = { val := Matrix.transpose ↑A, property := (_ : Matrix.det (Matrix.transpose ↑A) = 1) }
Instances For
The transpose of a matrix in SL(n, R)
Equations
- Matrix.SpecialLinearGroup.«term_ᵀ» = Lean.ParserDescr.trailingNode `Matrix.SpecialLinearGroup.term_ᵀ 1024 1024 (Lean.ParserDescr.symbol "ᵀ")
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
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
toGL
is the map from the special linear group to the general linear group
Equations
- Matrix.SpecialLinearGroup.toGL = MonoidHom.comp (MulEquiv.toMonoidHom (MulEquiv.symm (LinearMap.GeneralLinearGroup.generalLinearEquiv R (n → R)))) Matrix.SpecialLinearGroup.toLin'
Instances For
A ring homomorphism from R
to S
induces a group homomorphism from
SpecialLinearGroup n R
to SpecialLinearGroup n S
.
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
- One or more equations did not get rendered due to their size.
Formal operation of negation on special linear group on even cardinality n
given by negating
each element.
Equations
- Matrix.SpecialLinearGroup.instNeg = { neg := fun (g : Matrix.SpecialLinearGroup n R) => { val := -↑g, property := (_ : Matrix.det (-↑g) = 1) } }
Equations
- One or more equations did not get rendered due to their size.
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.
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.
A vector with coprime entries, right-multiplied by a matrix in SL(2, R)
, has
coprime entries.
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
- ModularGroup.S = { val := Matrix.of ![![0, -1], ![1, 0]], property := ModularGroup.S.proof_1 }
Instances For
The matrix T = [[1, 1], [0, 1]]
as an element of SL(2, ℤ)
Equations
- ModularGroup.T = { val := Matrix.of ![![1, 1], ![0, 1]], property := ModularGroup.T.proof_1 }