File: Mathlib/LinearAlgebra/Matrix/ToLinearEquiv.lean

full_name: Matrix.toLinearEquiv'
code: /-- An invertible matrix yields a linear equivalence from the free module to itself.

See `Matrix.toLinearEquiv` for the same map on arbitrary modules.
-/
def toLinearEquiv' (P : Matrix n n R) (_ : Invertible P) : (n → R) ≃ₗ[R] n → R 
goal: Invertible P → (n → R) ≃ₗ[R] n → R

full_name: Matrix.toLinearEquiv'_apply
code: @[simp]
theorem toLinearEquiv'_apply (P : Matrix n n R) (h : Invertible P) :
    (P.toLinearEquiv' h : Module.End R (n → R)) = Matrix.toLin' P 
goal: ↑(P.toLinearEquiv' h) = Matrix.toLin' P

full_name: Matrix.toLinearEquiv'_symm_apply
code: @[simp]
theorem toLinearEquiv'_symm_apply (P : Matrix n n R) (h : Invertible P) :
    (↑(P.toLinearEquiv' h).symm : Module.End R (n → R)) = Matrix.toLin' (⅟ P) 
goal: ↑(P.toLinearEquiv' h).symm = Matrix.toLin' ⅟P

full_name: Matrix.toLinearEquiv
code: /-- Given `hA : IsUnit A.det` and `b : Basis R b`, `A.toLinearEquiv b hA` is
the `LinearEquiv` arising from `toLin b b A`.

See `Matrix.toLinearEquiv'` for this result on `n → R`.
-/
@[simps apply]
noncomputable def toLinearEquiv [DecidableEq n] (A : Matrix n n R) (hA : IsUnit A.det) :
    M ≃ₗ[R] M 
goal: M ≃ₗ[R] M

full_name: Matrix.toLinearEquiv_apply
code: /-- Given `hA : IsUnit A.det` and `b : Basis R b`, `A.toLinearEquiv b hA` is
the `LinearEquiv` arising from `toLin b b A`.

See `Matrix.toLinearEquiv'` for this result on `n → R`.
-/
@[simps apply]
noncomputable def toLinearEquiv [DecidableEq n] (A : Matrix n n R) (hA : IsUnit A.det) :
    M ≃ₗ[R] M 
goal: (Matrix.toLinearEquiv b A hA) a = ((Matrix.toLin b b) A) a

full_name: Matrix.ker_toLin_eq_bot
code: theorem ker_toLin_eq_bot [DecidableEq n] (A : Matrix n n R) (hA : IsUnit A.det) :
    LinearMap.ker (toLin b b A) = ⊥ 
goal: LinearMap.ker ((Matrix.toLin b b) A) = ⊥

full_name: Matrix.range_toLin_eq_top
code: theorem range_toLin_eq_top [DecidableEq n] (A : Matrix n n R) (hA : IsUnit A.det) :
    LinearMap.range (toLin b b A) = ⊤ 
goal: LinearMap.range ((Matrix.toLin b b) A) = ⊤

full_name: Matrix.exists_mulVec_eq_zero_iff_aux
code: /-- This holds for all integral domains (see `Matrix.exists_mulVec_eq_zero_iff`),
not just fields, but it's easier to prove it for the field of fractions first. -/
theorem exists_mulVec_eq_zero_iff_aux {K : Type*} [DecidableEq n] [Field K] {M : Matrix n n K} :
    (∃ v ≠ 0, M *ᵥ v = 0) ↔ M.det = 0 
goal: (∃ v, v ≠ 0 ∧ M.mulVec v = 0) ↔ M.det = 0

full_name: Matrix.exists_mulVec_eq_zero_iff'
code: theorem exists_mulVec_eq_zero_iff' {A : Type*} (K : Type*) [DecidableEq n] [CommRing A]
    [Nontrivial A] [Field K] [Algebra A K] [IsFractionRing A K] {M : Matrix n n A} :
    (∃ v ≠ 0, M *ᵥ v = 0) ↔ M.det = 0 
goal: (∃ v, v ≠ 0 ∧ M.mulVec v = 0) ↔ M.det = 0

full_name: Matrix.exists_mulVec_eq_zero_iff
code: theorem exists_mulVec_eq_zero_iff {A : Type*} [DecidableEq n] [CommRing A] [IsDomain A]
    {M : Matrix n n A} : (∃ v ≠ 0, M *ᵥ v = 0) ↔ M.det = 0 
goal: (∃ v, v ≠ 0 ∧ M.mulVec v = 0) ↔ M.det = 0

full_name: Matrix.exists_vecMul_eq_zero_iff
code: theorem exists_vecMul_eq_zero_iff {A : Type*} [DecidableEq n] [CommRing A] [IsDomain A]
    {M : Matrix n n A} : (∃ v ≠ 0, v ᵥ* M = 0) ↔ M.det = 0 
goal: (∃ v, v ≠ 0 ∧ Matrix.vecMul v M = 0) ↔ M.det = 0

full_name: Matrix.nondegenerate_iff_det_ne_zero
code: theorem nondegenerate_iff_det_ne_zero {A : Type*} [DecidableEq n] [CommRing A] [IsDomain A]
    {M : Matrix n n A} : Nondegenerate M ↔ M.det ≠ 0 
goal: M.Nondegenerate ↔ M.det ≠ 0

full_name: Matrix.det_ne_zero_of_sum_col_pos
code: /-- A matrix whose nondiagonal entries are negative with the sum of the entries of each
column positive has nonzero determinant. -/
lemma det_ne_zero_of_sum_col_pos [DecidableEq n] {S : Type*} [LinearOrderedCommRing S]
    {A : Matrix n n S} (h1 : Pairwise fun i j => A i j < 0) (h2 : ∀ j, 0 < ∑ i, A i j) :
    A.det ≠ 0 
goal: A.det ≠ 0

full_name: Matrix.det_ne_zero_of_sum_row_pos
code: /-- A matrix whose nondiagonal entries are negative with the sum of the entries of each
row positive has nonzero determinant. -/
lemma det_ne_zero_of_sum_row_pos [DecidableEq n] {S : Type*} [LinearOrderedCommRing S]
    {A : Matrix n n S} (h1 : Pairwise fun i j => A i j < 0) (h2 : ∀ i, 0 < ∑ j, A i j) :
    A.det ≠ 0 
goal: A.det ≠ 0