Documentation

Mathlib.LinearAlgebra.Matrix.GeneralLinearGroup.Defs

The General Linear group $GL(n, R)$ #

This file defines the elements of the General Linear group Matrix.GeneralLinearGroup n R, consisting of all invertible n by n R-matrices.

Main definitions #

Tags #

matrix group, group, matrix inverse

@[reducible, inline]
abbrev Matrix.GeneralLinearGroup (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [Semiring R] :
Type (max v u)

GL n R is the group of n by n R-matrices with unit determinant. Defined as a subtype of matrices

Equations
    Instances For

      GL n R is the group of n by n R-matrices with unit determinant. Defined as a subtype of matrices

      Equations
        Instances For

          Scalar matrix as an element of GL n R.

          Equations
            Instances For
              @[simp]
              theorem Matrix.GeneralLinearGroup.val_scalar_apply (n : Type u) [DecidableEq n] [Fintype n] {R : Type v} [Semiring R] (u : Rˣ) :
              ((scalar n) u) = diagonal fun (x : n) => u
              @[simp]
              theorem Matrix.GeneralLinearGroup.val_inv_scalar_apply (n : Type u) [DecidableEq n] [Fintype n] {R : Type v} [Semiring R] (u : Rˣ) :
              ((scalar n) u)⁻¹ = diagonal fun (x : n) => u⁻¹
              instance Matrix.GeneralLinearGroup.instCoeFun {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [Semiring R] :
              CoeFun (GL n R) fun (x : GL n R) => nnR
              Equations

                The determinant of a unit matrix is itself a unit.

                Equations
                  Instances For
                    @[simp]
                    theorem Matrix.GeneralLinearGroup.val_inv_det_apply {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : GL n R) :
                    (det A)⁻¹ = (↑A⁻¹).det
                    @[simp]
                    theorem Matrix.GeneralLinearGroup.val_det_apply {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : GL n R) :
                    (det A) = (↑A).det
                    theorem Matrix.GeneralLinearGroup.det_ne_zero {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] [Nontrivial R] (g : GL n R) :
                    (↑g).det 0
                    @[simp]
                    theorem Matrix.GeneralLinearGroup.det_scalar {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (u : Rˣ) :
                    det ((scalar n) u) = u ^ Fintype.card n

                    The groups GL n R (notation for Matrix.GeneralLinearGroup n R) and LinearMap.GeneralLinearGroup R (n → R) are multiplicatively equivalent

                    Equations
                      Instances For
                        noncomputable def Matrix.GeneralLinearGroup.toLin' {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {V : Type u_1} [AddCommGroup V] [Module R V] (b : Module.Basis n R V) :

                        The isomorphism from GL n R to the general linear group of a module associated with a basis.

                        Equations
                          Instances For
                            theorem Matrix.GeneralLinearGroup.toLin'_apply {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {V : Type u_1} [AddCommGroup V] [Module R V] (b : Module.Basis n R V) (M : GL n R) (v : V) :
                            ((toLin' b) M).toLinearEquiv v = (Fintype.linearCombination R b) ((↑M).mulVec (b.repr v))
                            def Matrix.GeneralLinearGroup.mk' {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix n n R) :
                            Invertible A.detGL n R

                            Given a matrix with invertible determinant, we get an element of GL n R.

                            Equations
                              Instances For
                                @[simp]
                                theorem Matrix.GeneralLinearGroup.val_mk' {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix n n R) (x✝ : Invertible A.det) :
                                (mk' A x✝) = A
                                noncomputable def Matrix.GeneralLinearGroup.mk'' {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix n n R) (h : IsUnit A.det) :
                                GL n R

                                Given a matrix with unit determinant, we get an element of GL n R.

                                Equations
                                  Instances For
                                    @[simp]
                                    theorem Matrix.GeneralLinearGroup.val_mk'' {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : Matrix n n R) (h : IsUnit A.det) :
                                    (mk'' A h) = A
                                    def Matrix.GeneralLinearGroup.mkOfDetNeZero {n : Type u} [DecidableEq n] [Fintype n] {K : Type u_1} [Field K] (A : Matrix n n K) (h : A.det 0) :
                                    GL n K

                                    Given a matrix with non-zero determinant over a field, we get an element of GL n K.

                                    Equations
                                      Instances For
                                        @[simp]
                                        theorem Matrix.GeneralLinearGroup.val_mkOfDetNeZero {n : Type u} [DecidableEq n] [Fintype n] {K : Type u_1} [Field K] (A : Matrix n n K) (h : A.det 0) :
                                        (mkOfDetNeZero A h) = A
                                        theorem Matrix.GeneralLinearGroup.ext_iff {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A B : GL n R) :
                                        A = B ∀ (i j : n), A i j = B i j
                                        theorem Matrix.GeneralLinearGroup.ext {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] A B : GL n R (h : ∀ (i j : n), A i j = B i j) :
                                        A = B

                                        Not marked @[ext] as the ext tactic already solves this.

                                        @[simp]
                                        theorem Matrix.GeneralLinearGroup.coe_mul {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A B : GL n R) :
                                        ↑(A * B) = A * B
                                        @[simp]
                                        theorem Matrix.GeneralLinearGroup.coe_one {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] :
                                        1 = 1
                                        theorem Matrix.GeneralLinearGroup.coe_inv {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : GL n R) :
                                        A⁻¹ = (↑A)⁻¹
                                        @[simp]
                                        theorem Matrix.GeneralLinearGroup.coe_toLin {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : GL n R) :
                                        (toLin A) = (↑A).mulVecLin
                                        @[simp]
                                        theorem Matrix.GeneralLinearGroup.toLin_apply {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (A : GL n R) (v : nR) :
                                        (toLin A) v = (↑A).mulVecLin v
                                        def Matrix.GeneralLinearGroup.map {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) :
                                        GL n R →* GL n S

                                        A ring homomorphism f : R →+* S induces a homomorphism GLₙ(f) : GLₙ(R) →* GLₙ(S).

                                        Equations
                                          Instances For
                                            @[simp]
                                            theorem Matrix.GeneralLinearGroup.val_map_apply {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) (u : (Matrix n n R)ˣ) :
                                            ((map f) u) = (↑u).map f
                                            @[simp]
                                            theorem Matrix.GeneralLinearGroup.map_apply {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) (i j : n) (g : GL n R) :
                                            ((map f) g) i j = f (g i j)
                                            @[simp]
                                            theorem Matrix.GeneralLinearGroup.map_comp {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} {T : Type u_2} [CommRing S] [CommRing T] (f : T →+* R) (g : R →+* S) :
                                            map (g.comp f) = (map g).comp (map f)
                                            @[simp]
                                            theorem Matrix.GeneralLinearGroup.map_comp_apply {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} {T : Type u_2} [CommRing S] [CommRing T] (f : T →+* R) (g : R →+* S) (x : GL n T) :
                                            ((map g).comp (map f)) x = (map g) ((map f) x)
                                            @[simp]
                                            theorem Matrix.GeneralLinearGroup.map_one {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) :
                                            (map f) 1 = 1
                                            theorem Matrix.GeneralLinearGroup.map_mul {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) (g h : GL n R) :
                                            (map f) (g * h) = (map f) g * (map f) h
                                            theorem Matrix.GeneralLinearGroup.map_inv {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) (g : GL n R) :
                                            (map f) g⁻¹ = ((map f) g)⁻¹
                                            theorem Matrix.GeneralLinearGroup.map_det {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) (g : GL n R) :
                                            det ((map f) g) = (Units.map f) (det g)
                                            theorem Matrix.GeneralLinearGroup.map_mul_map_inv {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) (g : GL n R) :
                                            (map f) g * (map f) g⁻¹ = 1
                                            theorem Matrix.GeneralLinearGroup.map_inv_mul_map {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) (g : GL n R) :
                                            (map f) g⁻¹ * (map f) g = 1
                                            @[simp]
                                            theorem Matrix.GeneralLinearGroup.coe_map_mul_map_inv {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) (g : GL n R) :
                                            (↑g).map f * (↑g)⁻¹.map f = 1
                                            @[simp]
                                            theorem Matrix.GeneralLinearGroup.coe_map_inv_mul_map {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] (f : R →+* S) (g : GL n R) :
                                            (↑g)⁻¹.map f * (↑g).map f = 1
                                            def Matrix.GeneralLinearGroup.kronecker {n : Type u} [DecidableEq n] [Fintype n] {R : Type u_3} {m : Type u_4} [CommSemiring R] [Fintype m] [DecidableEq m] (x : GL n R) (y : GL m R) :
                                            GL (n × m) R

                                            The invertible kronecker matrix of invertible matrices.

                                            Equations
                                              Instances For
                                                theorem Matrix.IsUnit.kronecker {n : Type u} [DecidableEq n] [Fintype n] {R : Type u_3} {m : Type u_4} [CommSemiring R] [Fintype m] [DecidableEq m] {x : Matrix n n R} {y : Matrix m m R} (hx : IsUnit x) (hy : IsUnit y) :
                                                IsUnit (kroneckerMap (fun (x1 x2 : R) => x1 * x2) x y)

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

                                                Equations
                                                  Instances For
                                                    @[simp]
                                                    theorem Matrix.SpecialLinearGroup.toGL_inj {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (g g' : SpecialLinearGroup n R) :
                                                    toGL g = toGL g' g = g'
                                                    def Matrix.SpecialLinearGroup.mapGL {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] (S : Type u_1) [CommRing S] [Algebra R S] :

                                                    mapGL is the map from the special linear group over R to the general linear group over S, where S is an R-algebra.

                                                    Equations
                                                      Instances For
                                                        @[simp]
                                                        theorem Matrix.SpecialLinearGroup.mapGL_inj {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] [Algebra R S] [FaithfulSMul R S] (g g' : SpecialLinearGroup n R) :
                                                        (mapGL S) g = (mapGL S) g' g = g'
                                                        @[simp]
                                                        theorem Matrix.SpecialLinearGroup.mapGL_coe_matrix {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] [Algebra R S] (g : SpecialLinearGroup n R) :
                                                        ((mapGL S) g) = ((map (algebraMap R S)) g)
                                                        @[simp]
                                                        theorem Matrix.SpecialLinearGroup.map_mapGL {n : Type u} [DecidableEq n] [Fintype n] {R : Type v} [CommRing R] {S : Type u_1} [CommRing S] [Algebra R S] {T : Type u_2} [CommRing T] [Algebra R T] [Algebra S T] [IsScalarTower R S T] (g : SpecialLinearGroup n R) :

                                                        This is the subgroup of nxn matrices with entries over a linear ordered ring and positive determinant.

                                                        Equations
                                                          Instances For

                                                            This is the subgroup of nxn matrices with entries over a linear ordered ring and positive determinant.

                                                            Equations
                                                              Instances For
                                                                @[simp]
                                                                theorem Matrix.mem_glpos {n : Type u} {R : Type v} [DecidableEq n] [Fintype n] [CommRing R] [LinearOrder R] [IsStrictOrderedRing R] (A : GL n R) :
                                                                theorem Matrix.GLPos.det_ne_zero {n : Type u} {R : Type v} [DecidableEq n] [Fintype n] [CommRing R] [LinearOrder R] [IsStrictOrderedRing R] (A : (GLPos n R)) :
                                                                (↑A).det 0

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

                                                                Equations
                                                                  @[simp]
                                                                  theorem Matrix.GLPos.coe_neg_GL {n : Type u} {R : Type v} [DecidableEq n] [Fintype n] [CommRing R] [LinearOrder R] [IsStrictOrderedRing R] [Fact (Even (Fintype.card n))] (g : (GLPos n R)) :
                                                                  ↑(-g) = -g
                                                                  @[simp]
                                                                  theorem Matrix.GLPos.coe_neg {n : Type u} {R : Type v} [DecidableEq n] [Fintype n] [CommRing R] [LinearOrder R] [IsStrictOrderedRing R] [Fact (Even (Fintype.card n))] (g : (GLPos n R)) :
                                                                  ↑(-g) = -g
                                                                  @[simp]
                                                                  theorem Matrix.GLPos.coe_neg_apply {n : Type u} {R : Type v} [DecidableEq n] [Fintype n] [CommRing R] [LinearOrder R] [IsStrictOrderedRing R] [Fact (Even (Fintype.card n))] (g : (GLPos n R)) (i j : n) :
                                                                  ↑(-g) i j = -g i j

                                                                  Matrix.SpecialLinearGroup n R embeds into GL_pos n R

                                                                  Equations
                                                                    Instances For
                                                                      @[simp]

                                                                      Coercing a Matrix.SpecialLinearGroup via GL_pos and GL is the same as coercing straight to a matrix.