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
- ⋯ = ⋯
Equations
- Matrix.SpecialLinearGroup.hasInv = { inv := fun (A : Matrix.SpecialLinearGroup n R) => { val := Matrix.adjugate ↑A, property := ⋯ } }
Equations
- Matrix.SpecialLinearGroup.hasMul = { mul := fun (A B : Matrix.SpecialLinearGroup n R) => { val := ↑A * ↑B, property := ⋯ } }
Equations
- Matrix.SpecialLinearGroup.hasOne = { one := { val := 1, property := ⋯ } }
Equations
- Matrix.SpecialLinearGroup.instPowSpecialLinearGroupNat = { pow := fun (x : Matrix.SpecialLinearGroup n R) (n_1 : ℕ) => { val := ↑x ^ n_1, property := ⋯ } }
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 := ⋯ }
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
- Matrix.SpecialLinearGroup.monoid = Function.Injective.monoid Subtype.val ⋯ ⋯ ⋯ ⋯
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
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
- Matrix.SpecialLinearGroup.instCoeSpecialLinearGroupIntInstCommRingSpecialLinearGroup = { coe := fun (x : Matrix.SpecialLinearGroup n ℤ) => (Matrix.SpecialLinearGroup.map (Int.castRingHom R)) x }
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 := ⋯ } }
Equations
- Matrix.SpecialLinearGroup.instHasDistribNegSpecialLinearGroupHasMul = Function.Injective.hasDistribNeg (fun (a : { A : Matrix n n R // Matrix.det A = 1 }) => ↑a) ⋯ ⋯ ⋯
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 }