File: Mathlib/LinearAlgebra/Matrix/GeneralLinearGroup/Defs.lean

full_name: Matrix.GeneralLinearGroup
code: /-- `GL n R` is the group of `n` by `n` `R`-matrices with unit determinant.
Defined as a subtype of matrices-/
abbrev GeneralLinearGroup (n : Type u) (R : Type v) [DecidableEq n] [Fintype n] [CommRing R] :
    Type _ 
goal: Type (max v u)

full_name: Matrix._aux_Mathlib_LinearAlgebra_Matrix_GeneralLinearGroup_Defs___unexpand_Matrix_GeneralLinearGroup_1
code: @[inherit_doc] notation "GL" => GeneralLinearGroup
goal: Lean.PrettyPrinter.Unexpander

full_name: Matrix._aux_Mathlib_LinearAlgebra_Matrix_GeneralLinearGroup_Defs___macroRules_Matrix_termGL_1
code: @[inherit_doc] notation "GL" => GeneralLinearGroup
goal: Lean.Macro

full_name: Matrix.GeneralLinearGroup.instCoeFun
code: /-- This instance is here for convenience, but is not the simp-normal form. -/
instance instCoeFun : CoeFun (GL n R) fun _ => n → n → R 
goal: CoeFun (GL n R) fun x => n → n → R

full_name: Matrix.GeneralLinearGroup.val_inv_det_apply
code: /-- The determinant of a unit matrix is itself a unit. -/
@[simps]
def det : GL n R →* Rˣ 
goal: ↑(Matrix.GeneralLinearGroup.det A)⁻¹ = (↑A⁻¹).det

full_name: Matrix.GeneralLinearGroup.det
code: /-- The determinant of a unit matrix is itself a unit. -/
@[simps]
def det : GL n R →* Rˣ 
goal: GL n R →* Rˣ

full_name: Matrix.GeneralLinearGroup.val_det_apply
code: /-- The determinant of a unit matrix is itself a unit. -/
@[simps]
def det : GL n R →* Rˣ 
goal: ↑(Matrix.GeneralLinearGroup.det A) = (↑A).det

full_name: Matrix.GeneralLinearGroup.toLin
code: /-- The `GL n R` and `Matrix.GeneralLinearGroup R n` groups are multiplicatively equivalent-/
def toLin : GL n R ≃* LinearMap.GeneralLinearGroup R (n → R) 
goal: GL n R ≃* LinearMap.GeneralLinearGroup R (n → R)

full_name: Matrix.GeneralLinearGroup.mk'
code: /-- Given a matrix with invertible determinant we get an element of `GL n R`-/
def mk' (A : Matrix n n R) (_ : Invertible (Matrix.det A)) : GL n R 
goal: Invertible A.det → GL n R

full_name: Matrix.GeneralLinearGroup.mk''
code: /-- Given a matrix with unit determinant we get an element of `GL n R`-/
noncomputable def mk'' (A : Matrix n n R) (h : IsUnit (Matrix.det A)) : GL n R 
goal: GL n R

full_name: Matrix.GeneralLinearGroup.mkOfDetNeZero
code: /-- Given a matrix with non-zero determinant over a field, we get an element of `GL n K`-/
def mkOfDetNeZero {K : Type*} [Field K] (A : Matrix n n K) (h : Matrix.det A ≠ 0) : GL n K 
goal: GL n K

full_name: Matrix.GeneralLinearGroup.ext_iff
code: theorem ext_iff (A B : GL n R) : A = B ↔ ∀ i j, (A : Matrix n n R) i j = (B : Matrix n n R) i j 
goal: A = B ↔ ∀ (i j : n), ↑A i j = ↑B i j

full_name: Matrix.GeneralLinearGroup.ext
code: /-- Not marked `@[ext]` as the `ext` tactic already solves this. -/
theorem ext ⦃A B : GL n R⦄ (h : ∀ i j, (A : Matrix n n R) i j = (B : Matrix n n R) i j) : A = B 
goal: A = B

full_name: Matrix.GeneralLinearGroup.coe_mul
code: @[simp]
theorem coe_mul : ↑(A * B) = (↑A : Matrix n n R) * (↑B : Matrix n n R) 
goal: ↑(A * B) = ↑A * ↑B

full_name: Matrix.GeneralLinearGroup.coe_one
code: @[simp]
theorem coe_one : ↑(1 : GL n R) = (1 : Matrix n n R) 
goal: ↑1 = 1

full_name: Matrix.GeneralLinearGroup.coe_inv
code: theorem coe_inv : ↑A⁻¹ = (↑A : Matrix n n R)⁻¹ 
goal: ↑A⁻¹ = (↑A)⁻¹

full_name: Matrix.GeneralLinearGroup.toLinear
code: /-- An element of the matrix general linear group on `(n) [Fintype n]` can be considered as an
element of the endomorphism general linear group on `n → R`. -/
def toLinear : GeneralLinearGroup n R ≃* LinearMap.GeneralLinearGroup R (n → R) 
goal: GL n R ≃* LinearMap.GeneralLinearGroup R (n → R)

full_name: Matrix.GeneralLinearGroup.coe_toLinear
code: @[simp]
theorem coe_toLinear : (@toLinear n ‹_› ‹_› _ _ A : (n → R) →ₗ[R] n → R) = Matrix.mulVecLin A 
goal: ↑(Matrix.GeneralLinearGroup.toLinear A) = (↑A).mulVecLin

full_name: Matrix.GeneralLinearGroup.toLinear_apply
code: @[simp]
theorem toLinear_apply (v : n → R) : (toLinear A).toLinearEquiv v = Matrix.mulVecLin (↑A) v 
goal: (Matrix.GeneralLinearGroup.toLinear A).toLinearEquiv v = (↑A).mulVecLin v

full_name: Matrix.GeneralLinearGroup.map
code: /-- A ring homomorphism ``f : R →+* S`` induces a homomorphism ``GLₙ(f) : GLₙ(R) →* GLₙ(S)``. -/
def map (f : R →+* S) : GL n R →* GL n S 
goal: GL n R →* GL n S

full_name: Matrix.GeneralLinearGroup.map_id
code: @[simp]
theorem map_id : map (RingHom.id R) = MonoidHom.id (GL n R) 
goal: Matrix.GeneralLinearGroup.map (RingHom.id R) = MonoidHom.id (GL n R)

full_name: Matrix.GeneralLinearGroup.map_comp
code: @[simp]
theorem map_comp (f : T →+* R) (g : R →+* S) :
    map (g.comp f) = (map g).comp (map (n := n) f) 
goal: Matrix.GeneralLinearGroup.map (g.comp f) = (Matrix.GeneralLinearGroup.map g).comp (Matrix.GeneralLinearGroup.map f)

full_name: Matrix.GeneralLinearGroup.map_comp_apply
code: @[simp]
theorem map_comp_apply (f : T →+* R) (g : R →+* S) (x : GL n T) :
    (map g).comp (map f) x = map g (map f x) 
goal: ((Matrix.GeneralLinearGroup.map g).comp (Matrix.GeneralLinearGroup.map f)) x =
  (Matrix.GeneralLinearGroup.map g) ((Matrix.GeneralLinearGroup.map f) x)

full_name: Matrix.SpecialLinearGroup.coeToGL
code: /-- The map from SL(n) to GL(n) underlying the coercion, forgetting the value of the determinant.
-/
@[coe]
def coeToGL (A : SpecialLinearGroup n R) : GL n R 
goal: GL n R

full_name: Matrix.SpecialLinearGroup.hasCoeToGeneralLinearGroup
code: instance hasCoeToGeneralLinearGroup : Coe (SpecialLinearGroup n R) (GL n R) 
goal: Coe (Matrix.SpecialLinearGroup n R) (GL n R)

full_name: Matrix.SpecialLinearGroup.coeToGL_det
code: @[simp]
theorem coeToGL_det (g : SpecialLinearGroup n R) :
    Matrix.GeneralLinearGroup.det (g : GL n R) = 1 
goal: Matrix.GeneralLinearGroup.det ↑g = 1

full_name: Matrix.GLPos
code: /-- This is the subgroup of `nxn` matrices with entries over a
linear ordered ring and positive determinant. -/
def GLPos : Subgroup (GL n R) 
goal: Subgroup (GL n R)

full_name: Matrix.mem_glpos
code: @[simp]
theorem mem_glpos (A : GL n R) : A ∈ GLPos n R ↔ 0 < (Matrix.GeneralLinearGroup.det A : R) 
goal: A ∈ Matrix.GLPos n R ↔ 0 < ↑(Matrix.GeneralLinearGroup.det A)

full_name: Matrix.GLPos.det_ne_zero
code: theorem GLPos.det_ne_zero (A : GLPos n R) : ((A : GL n R) : Matrix n n R).det ≠ 0 
goal: (↑↑A).det ≠ 0

full_name: Matrix.instNegSubtypeGeneralLinearGroupMemSubgroupGLPos
code: /-- Formal operation of negation on general linear group on even cardinality `n` given by negating
each element. -/
instance : Neg (GLPos n R) 
goal: Neg ↥(Matrix.GLPos n R)

full_name: Matrix.GLPos.coe_neg_GL
code: @[simp]
theorem GLPos.coe_neg_GL (g : GLPos n R) : ↑(-g) = -(g : GL n R) 
goal: ↑(-g) = -↑g

full_name: Matrix.GLPos.coe_neg
code: @[simp]
theorem GLPos.coe_neg (g : GLPos n R) : (↑(-g) : GL n R) = -((g : GL n R) : Matrix n n R) 
goal: ↑↑(-g) = -↑↑g

full_name: Matrix.GLPos.coe_neg_apply
code: @[simp]
theorem GLPos.coe_neg_apply (g : GLPos n R) (i j : n) :
    ((↑(-g) : GL n R) : Matrix n n R) i j = -((g : GL n R) : Matrix n n R) i j 
goal: ↑↑(-g) i j = -↑↑g i j

full_name: Matrix.instHasDistribNegSubtypeGeneralLinearGroupMemSubgroupGLPos
code: instance : HasDistribNeg (GLPos n R) 
goal: HasDistribNeg ↥(Matrix.GLPos n R)

full_name: Matrix.SpecialLinearGroup.toGLPos
code: /-- `Matrix.SpecialLinearGroup n R` embeds into `GL_pos n R` -/
def toGLPos : SpecialLinearGroup n R →* GLPos n R 
goal: Matrix.SpecialLinearGroup n R →* ↥(Matrix.GLPos n R)

full_name: Matrix.SpecialLinearGroup.instCoeSubtypeGeneralLinearGroupMemSubgroupGLPos
code: instance : Coe (SpecialLinearGroup n R) (GLPos n R) 
goal: Coe (Matrix.SpecialLinearGroup n R) ↥(Matrix.GLPos n R)

full_name: Matrix.SpecialLinearGroup.toGLPos_injective
code: theorem toGLPos_injective : Function.Injective (toGLPos : SpecialLinearGroup n R → GLPos n R) 
goal: Function.Injective ⇑Matrix.SpecialLinearGroup.toGLPos

full_name: Matrix.SpecialLinearGroup.coe_GLPos_coe_GL_coe_matrix
code: /-- Coercing a `Matrix.SpecialLinearGroup` via `GL_pos` and `GL` is the same as coercing straight to
a matrix. -/
@[simp]
theorem coe_GLPos_coe_GL_coe_matrix (g : SpecialLinearGroup n R) :
    (↑(↑(↑g : GLPos n R) : GL n R) : Matrix n n R) = ↑g 
goal: ↑↑(Matrix.SpecialLinearGroup.toGLPos g) = ↑g

full_name: Matrix.SpecialLinearGroup.coe_to_GLPos_to_GL_det
code: @[simp]
theorem coe_to_GLPos_to_GL_det (g : SpecialLinearGroup n R) :
    Matrix.GeneralLinearGroup.det ((g : GLPos n R) : GL n R) = 1 
goal: Matrix.GeneralLinearGroup.det ↑(Matrix.SpecialLinearGroup.toGLPos g) = 1

full_name: Matrix.SpecialLinearGroup.coe_GLPos_neg
code: @[norm_cast]
theorem coe_GLPos_neg (g : SpecialLinearGroup n R) : ↑(-g) = -(↑g : GLPos n R) 
goal: Matrix.SpecialLinearGroup.toGLPos (-g) = -Matrix.SpecialLinearGroup.toGLPos g