File: Mathlib/LinearAlgebra/SymplecticGroup.lean

full_name: Matrix.J
code: /-- The matrix defining the canonical skew-symmetric bilinear form. -/
def J : Matrix (l ⊕ l) (l ⊕ l) R 
goal: Matrix (l ⊕ l) (l ⊕ l) R

full_name: Matrix.J_transpose
code: @[simp]
theorem J_transpose : (J l R)ᵀ = -J l R 
goal: (Matrix.J l R)ᵀ = -Matrix.J l R

full_name: Matrix.J_squared
code: theorem J_squared : J l R * J l R = -1 
goal: Matrix.J l R * Matrix.J l R = -1

full_name: Matrix.J_inv
code: theorem J_inv : (J l R)⁻¹ = -J l R 
goal: (Matrix.J l R)⁻¹ = -Matrix.J l R

full_name: Matrix.J_det_mul_J_det
code: theorem J_det_mul_J_det : det (J l R) * det (J l R) = 1 
goal: (Matrix.J l R).det * (Matrix.J l R).det = 1

full_name: Matrix.isUnit_det_J
code: theorem isUnit_det_J : IsUnit (det (J l R)) 
goal: IsUnit (Matrix.J l R).det

full_name: Matrix.symplecticGroup
code: /-- The group of symplectic matrices over a ring `R`. -/
def symplecticGroup : Submonoid (Matrix (l ⊕ l) (l ⊕ l) R) 
goal: Submonoid (Matrix (l ⊕ l) (l ⊕ l) R)

full_name: SymplecticGroup.mem_iff
code: theorem mem_iff {A : Matrix (l ⊕ l) (l ⊕ l) R} :
    A ∈ symplecticGroup l R ↔ A * J l R * Aᵀ = J l R 
goal: A ∈ Matrix.symplecticGroup l R ↔ A * Matrix.J l R * Aᵀ = Matrix.J l R

full_name: SymplecticGroup.coeMatrix
code: instance coeMatrix : Coe (symplecticGroup l R) (Matrix (l ⊕ l) (l ⊕ l) R) 
goal: Coe (↥(Matrix.symplecticGroup l R)) (Matrix (l ⊕ l) (l ⊕ l) R)

full_name: SymplecticGroup.J_mem
code: theorem J_mem : J l R ∈ symplecticGroup l R 
goal: Matrix.J l R ∈ Matrix.symplecticGroup l R

full_name: SymplecticGroup.symJ
code: /-- The canonical skew-symmetric matrix as an element in the symplectic group. -/
def symJ : symplecticGroup l R 
goal: ↥(Matrix.symplecticGroup l R)

full_name: SymplecticGroup.coe_J
code: @[simp]
theorem coe_J : ↑(symJ l R) = J l R 
goal: ↑(SymplecticGroup.symJ l R) = Matrix.J l R

full_name: SymplecticGroup.neg_mem
code: theorem neg_mem (h : A ∈ symplecticGroup l R) : -A ∈ symplecticGroup l R 
goal: -A ∈ Matrix.symplecticGroup l R

full_name: SymplecticGroup.symplectic_det
code: theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A 
goal: IsUnit A.det

full_name: SymplecticGroup.transpose_mem
code: theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGroup l R 
goal: Aᵀ ∈ Matrix.symplecticGroup l R

full_name: SymplecticGroup.transpose_mem_iff
code: @[simp]
theorem transpose_mem_iff : Aᵀ ∈ symplecticGroup l R ↔ A ∈ symplecticGroup l R 
goal: Aᵀ ∈ Matrix.symplecticGroup l R ↔ A ∈ Matrix.symplecticGroup l R

full_name: SymplecticGroup.mem_iff'
code: theorem mem_iff' : A ∈ symplecticGroup l R ↔ Aᵀ * J l R * A = J l R 
goal: A ∈ Matrix.symplecticGroup l R ↔ Aᵀ * Matrix.J l R * A = Matrix.J l R

full_name: SymplecticGroup.hasInv
code: instance hasInv : Inv (symplecticGroup l R) 
goal: Inv ↥(Matrix.symplecticGroup l R)

full_name: SymplecticGroup.coe_inv
code: theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-J l R) * (↑A)ᵀ * J l R 
goal: ↑A⁻¹ = -Matrix.J l R * (↑A)ᵀ * Matrix.J l R

full_name: SymplecticGroup.inv_left_mul_aux
code: theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -(J l R * Aᵀ * J l R * A) = 1 
goal: -(Matrix.J l R * Aᵀ * Matrix.J l R * A) = 1

full_name: SymplecticGroup.coe_inv'
code: theorem coe_inv' (A : symplecticGroup l R) : (↑A⁻¹ : Matrix (l ⊕ l) (l ⊕ l) R) = (↑A)⁻¹ 
goal: ↑A⁻¹ = (↑A)⁻¹

full_name: SymplecticGroup.inv_eq_symplectic_inv
code: theorem inv_eq_symplectic_inv (A : Matrix (l ⊕ l) (l ⊕ l) R) (hA : A ∈ symplecticGroup l R) :
    A⁻¹ = (-J l R) * Aᵀ * J l R 
goal: A⁻¹ = -Matrix.J l R * Aᵀ * Matrix.J l R

full_name: SymplecticGroup.instGroupSubtypeMatrixSumMemSubmonoidSymplecticGroup
code: instance : Group (symplecticGroup l R) 
goal: Group ↥(Matrix.symplecticGroup l R)