ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Matrix.mul_right_injective_of_inv
lemma mul_right_injective_of_inv (A : Matrix m n α) (B : Matrix n m α) (h : A * B = 1) :
    Function.Injective (fun x : Matrix m l α => B * x) 
Arguments: {l : Type u_1} {m : Type u} {n : Type u'} {α : Type v} [Fintype n] [Fintype m] [DecidableEq m] [CommRing α] (A : Matrix m n α) (B : Matrix n m α) (h : A * B = 1)
Goal: Function.Injective fun x => B * x
-- Matrix.vecMul_surjective_iff_exists_left_inverse
theorem vecMul_surjective_iff_exists_left_inverse [Fintype m] [Finite n] {A : Matrix m n R} :
    Function.Surjective A.vecMul ↔ ∃ B : Matrix n m R, B * A = 1 
Arguments: {m : Type u} {n : Type u'} [DecidableEq n] {R : Type u_2} [Semiring R] [Fintype m] [Finite n] {A : Matrix m n R}
Goal: (Function.Surjective fun v => Matrix.vecMul v A) ↔ ∃ B, B * A = 1
-- Matrix.mulVec_surjective_iff_exists_right_inverse
theorem mulVec_surjective_iff_exists_right_inverse [Finite m] [Fintype n] {A : Matrix m n R} :
    Function.Surjective A.mulVec ↔ ∃ B : Matrix n m R, A * B = 1 
Arguments: {m : Type u} {n : Type u'} [DecidableEq m] {R : Type u_2} [Semiring R] [Finite m] [Fintype n] {A : Matrix m n R}
Goal: Function.Surjective A.mulVec ↔ ∃ B, A * B = 1
-- Matrix.vecMul_surjective_iff_isUnit
theorem vecMul_surjective_iff_isUnit {A : Matrix m m R} :
    Function.Surjective A.vecMul ↔ IsUnit A 
Arguments: {m : Type u} [DecidableEq m] {R : Type u_2} [CommRing R] [Fintype m] {A : Matrix m m R}
Goal: (Function.Surjective fun v => Matrix.vecMul v A) ↔ IsUnit A
-- Matrix.mulVec_surjective_iff_isUnit
theorem mulVec_surjective_iff_isUnit {A : Matrix m m R} :
    Function.Surjective A.mulVec ↔ IsUnit A 
Arguments: {m : Type u} [DecidableEq m] {R : Type u_2} [CommRing R] [Fintype m] {A : Matrix m m R}
Goal: Function.Surjective A.mulVec ↔ IsUnit A
-- Matrix.vecMul_injective_iff_isUnit
theorem vecMul_injective_iff_isUnit {A : Matrix m m K} :
    Function.Injective A.vecMul ↔ IsUnit A 
Arguments: {m : Type u} [DecidableEq m] {K : Type u_3} [Field K] [Fintype m] {A : Matrix m m K}
Goal: (Function.Injective fun v => Matrix.vecMul v A) ↔ IsUnit A
-- Matrix.mulVec_injective_iff_isUnit
theorem mulVec_injective_iff_isUnit {A : Matrix m m K} :
    Function.Injective A.mulVec ↔ IsUnit A 
Arguments: {m : Type u} [DecidableEq m] {K : Type u_3} [Field K] [Fintype m] {A : Matrix m m K}
Goal: Function.Injective A.mulVec ↔ IsUnit A
-- Matrix.linearIndependent_rows_iff_isUnit
theorem linearIndependent_rows_iff_isUnit {A : Matrix m m K} :
    LinearIndependent K (fun i ↦ A i) ↔ IsUnit A 
Arguments: {m : Type u} [DecidableEq m] {K : Type u_3} [Field K] [Fintype m] {A : Matrix m m K}
Goal: (LinearIndependent K fun i => A i) ↔ IsUnit A
-- Matrix.linearIndependent_cols_iff_isUnit
theorem linearIndependent_cols_iff_isUnit {A : Matrix m m K} :
    LinearIndependent K (fun i ↦ Aᵀ i) ↔ IsUnit A 
Arguments: {m : Type u} [DecidableEq m] {K : Type u_3} [Field K] [Fintype m] {A : Matrix m m K}
Goal: (LinearIndependent K fun i => A.transpose i) ↔ IsUnit A
-- Matrix.vecMul_surjective_of_invertible
theorem vecMul_surjective_of_invertible (A : Matrix m m R) [Invertible A] :
    Function.Surjective A.vecMul 
Arguments: {m : Type u} [DecidableEq m] {R : Type u_2} [CommRing R] [Fintype m] (A : Matrix m m R) [Invertible A]
Goal: Function.Surjective fun v => Matrix.vecMul v A
-- Matrix.mulVec_surjective_of_invertible
theorem mulVec_surjective_of_invertible (A : Matrix m m R) [Invertible A] :
    Function.Surjective A.mulVec 
Arguments: {m : Type u} [DecidableEq m] {R : Type u_2} [CommRing R] [Fintype m] (A : Matrix m m R) [Invertible A]
Goal: Function.Surjective A.mulVec
-- Matrix.vecMul_injective_of_invertible
theorem vecMul_injective_of_invertible (A : Matrix m m K) [Invertible A] :
    Function.Injective A.vecMul 
Arguments: {m : Type u} [DecidableEq m] {K : Type u_3} [Field K] [Fintype m] (A : Matrix m m K) [Invertible A]
Goal: Function.Injective fun v => Matrix.vecMul v A
-- Matrix.mulVec_injective_of_invertible
theorem mulVec_injective_of_invertible (A : Matrix m m K) [Invertible A] :
    Function.Injective A.mulVec 
Arguments: {m : Type u} [DecidableEq m] {K : Type u_3} [Field K] [Fintype m] (A : Matrix m m K) [Invertible A]
Goal: Function.Injective A.mulVec
-- Matrix.linearIndependent_rows_of_invertible
theorem linearIndependent_rows_of_invertible (A : Matrix m m K) [Invertible A] :
    LinearIndependent K (fun i ↦ A i) 
Arguments: {m : Type u} [DecidableEq m] {K : Type u_3} [Field K] [Fintype m] (A : Matrix m m K) [Invertible A]
Goal: LinearIndependent K fun i => A i
-- Matrix.linearIndependent_cols_of_invertible
theorem linearIndependent_cols_of_invertible (A : Matrix m m K) [Invertible A] :
    LinearIndependent K (fun i ↦ Aᵀ i) 
Arguments: {m : Type u} [DecidableEq m] {K : Type u_3} [Field K] [Fintype m] (A : Matrix m m K) [Invertible A]
Goal: LinearIndependent K fun i => A.transpose i
-- Matrix.nonsing_inv_cancel_or_zero
theorem nonsing_inv_cancel_or_zero : A⁻¹ * A = 1 ∧ A * A⁻¹ = 1 ∨ A⁻¹ = 0 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α)
Goal: A⁻¹ * A = 1 ∧ A * A⁻¹ = 1 ∨ A⁻¹ = 0
-- Matrix.det_nonsing_inv_mul_det
theorem det_nonsing_inv_mul_det (h : IsUnit A.det) : A⁻¹.det * A.det = 1 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α) (h : IsUnit A.det)
Goal: A⁻¹.det * A.det = 1
-- Matrix.det_nonsing_inv
@[simp]
theorem det_nonsing_inv : A⁻¹.det = Ring.inverse A.det 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α)
Goal: A⁻¹.det = Ring.inverse A.det
-- Matrix.isUnit_nonsing_inv_det
theorem isUnit_nonsing_inv_det (h : IsUnit A.det) : IsUnit A⁻¹.det 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α) (h : IsUnit A.det)
Goal: IsUnit A⁻¹.det
-- Matrix.nonsing_inv_nonsing_inv
@[simp]
theorem nonsing_inv_nonsing_inv (h : IsUnit A.det) : A⁻¹⁻¹ = A 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α) (h : IsUnit A.det)
Goal: A⁻¹⁻¹ = A
-- Matrix.isUnit_nonsing_inv_det_iff
theorem isUnit_nonsing_inv_det_iff {A : Matrix n n α} : IsUnit A⁻¹.det ↔ IsUnit A.det 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] {A : Matrix n n α}
Goal: IsUnit A⁻¹.det ↔ IsUnit A.det
-- Matrix.unitOfDetInvertible_eq_nonsingInvUnit
theorem unitOfDetInvertible_eq_nonsingInvUnit [Invertible A.det] :
    unitOfDetInvertible A = nonsingInvUnit A (isUnit_of_invertible _) 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α) [Invertible A.det]
Goal: A.unitOfDetInvertible = A.nonsingInvUnit ⋯
-- Matrix.inv_eq_left_inv
theorem inv_eq_left_inv (h : B * A = 1) : A⁻¹ = B 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] {A B : Matrix n n α} (h : B * A = 1)
Goal: A⁻¹ = B
-- Matrix.inv_eq_right_inv
theorem inv_eq_right_inv (h : A * B = 1) : A⁻¹ = B 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] {A B : Matrix n n α} (h : A * B = 1)
Goal: A⁻¹ = B
-- Matrix.left_inv_eq_left_inv
theorem left_inv_eq_left_inv (h : B * A = 1) (g : C * A = 1) : B = C 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] {A B C : Matrix n n α} (h : B * A = 1) (g : C * A = 1)
Goal: B = C
-- Matrix.right_inv_eq_right_inv
theorem right_inv_eq_right_inv (h : A * B = 1) (g : A * C = 1) : B = C 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] {A B C : Matrix n n α} (h : A * B = 1) (g : A * C = 1)
Goal: B = C
-- Matrix.right_inv_eq_left_inv
theorem right_inv_eq_left_inv (h : A * B = 1) (g : C * A = 1) : B = C 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] {A B C : Matrix n n α} (h : A * B = 1) (g : C * A = 1)
Goal: B = C
-- Matrix.inv_inj
theorem inv_inj (h : A⁻¹ = B⁻¹) (h' : IsUnit A.det) : A = B 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] {A B : Matrix n n α} (h : A⁻¹ = B⁻¹) (h' : IsUnit A.det)
Goal: A = B
-- Matrix.inv_zero
@[simp]
theorem inv_zero : (0 : Matrix n n α)⁻¹ = 0 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α]
Goal: 0⁻¹ = 0
-- Matrix.inv_smul
theorem inv_smul (k : α) [Invertible k] (h : IsUnit A.det) : (k • A)⁻¹ = ⅟ k • A⁻¹ 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α) (k : α) [Invertible k] (h : IsUnit A.det)
Goal: (k • A)⁻¹ = ⅟k • A⁻¹
-- Matrix.inv_smul'
theorem inv_smul' (k : αˣ) (h : IsUnit A.det) : (k • A)⁻¹ = k⁻¹ • A⁻¹ 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α) (k : αˣ) (h : IsUnit A.det)
Goal: (k • A)⁻¹ = k⁻¹ • A⁻¹
-- Matrix.inv_adjugate
theorem inv_adjugate (A : Matrix n n α) (h : IsUnit A.det) : (adjugate A)⁻¹ = h.unit⁻¹ • A 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α) (h : IsUnit A.det)
Goal: A.adjugate⁻¹ = h.unit⁻¹ • A
-- Matrix.invOf_diagonal_eq
theorem invOf_diagonal_eq {α} [Semiring α] (v : n → α) [Invertible v] [Invertible (diagonal v)] :
    ⅟ (diagonal v) = diagonal (⅟ v) 
Arguments: {n : Type u'} [Fintype n] [DecidableEq n] {α : Type u_2} [Semiring α] (v : n → α) [Invertible v] [Invertible (Matrix.diagonal v)]
Goal: ⅟(Matrix.diagonal v) = Matrix.diagonal ⅟v
-- Matrix.diagonalInvertibleEquivInvertible_apply
@[simps]
def diagonalInvertibleEquivInvertible (v : n → α) : Invertible (diagonal v) ≃ Invertible v 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (v : n → α) [Invertible (Matrix.diagonal v)]
Goal: (Matrix.diagonalInvertibleEquivInvertible v) inst✝ = Matrix.invertibleOfDiagonalInvertible v
-- Matrix.diagonalInvertibleEquivInvertible_symm_apply
@[simps]
def diagonalInvertibleEquivInvertible (v : n → α) : Invertible (diagonal v) ≃ Invertible v 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (v : n → α) [Invertible v]
Goal: (Matrix.diagonalInvertibleEquivInvertible v).symm inst✝ = Matrix.diagonalInvertible v
-- Matrix.isUnit_diagonal
@[simp]
theorem isUnit_diagonal {v : n → α} : IsUnit (diagonal v) ↔ IsUnit v 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] {v : n → α}
Goal: IsUnit (Matrix.diagonal v) ↔ IsUnit v
-- Matrix.inv_diagonal
theorem inv_diagonal (v : n → α) : (diagonal v)⁻¹ = diagonal (Ring.inverse v) 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (v : n → α)
Goal: (Matrix.diagonal v)⁻¹ = Matrix.diagonal (Ring.inverse v)
-- Matrix.inv_inv_inv
@[simp]
theorem inv_inv_inv (A : Matrix n n α) : A⁻¹⁻¹⁻¹ = A⁻¹ 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α)
Goal: A⁻¹⁻¹⁻¹ = A⁻¹
-- Matrix.inv_add_inv
theorem inv_add_inv {A B : Matrix n n α} (h : IsUnit A ↔ IsUnit B) :
    A⁻¹ + B⁻¹ = A⁻¹ * (A + B) * B⁻¹ 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] {A B : Matrix n n α} (h : IsUnit A ↔ IsUnit B)
Goal: A⁻¹ + B⁻¹ = A⁻¹ * (A + B) * B⁻¹
-- Matrix.inv_sub_inv
theorem inv_sub_inv {A B : Matrix n n α} (h : IsUnit A ↔ IsUnit B) :
    A⁻¹ - B⁻¹ = A⁻¹ * (B - A) * B⁻¹ 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] {A B : Matrix n n α} (h : IsUnit A ↔ IsUnit B)
Goal: A⁻¹ - B⁻¹ = A⁻¹ * (B - A) * B⁻¹
-- Matrix.mul_inv_rev
theorem mul_inv_rev (A B : Matrix n n α) : (A * B)⁻¹ = B⁻¹ * A⁻¹ 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A B : Matrix n n α)
Goal: (A * B)⁻¹ = B⁻¹ * A⁻¹
-- Matrix.list_prod_inv_reverse
theorem list_prod_inv_reverse : ∀ l : List (Matrix n n α), l.prod⁻¹ = (l.reverse.map Inv.inv).prod
  
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (l : List (Matrix n n α))
Goal: l.prod⁻¹ = (List.map Inv.inv l.reverse).prod
-- Matrix.det_smul_inv_mulVec_eq_cramer
@[simp]
theorem det_smul_inv_mulVec_eq_cramer (A : Matrix n n α) (b : n → α) (h : IsUnit A.det) :
    A.det • A⁻¹ *ᵥ b = cramer A b 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α) (b : n → α) (h : IsUnit A.det)
Goal: A.det • A⁻¹.mulVec b = A.cramer b
-- Matrix.det_smul_inv_vecMul_eq_cramer_transpose
@[simp]
theorem det_smul_inv_vecMul_eq_cramer_transpose (A : Matrix n n α) (b : n → α) (h : IsUnit A.det) :
    A.det • b ᵥ* A⁻¹ = cramer Aᵀ b 
Arguments: {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] (A : Matrix n n α) (b : n → α) (h : IsUnit A.det)
Goal: A.det • Matrix.vecMul b A⁻¹ = A.transpose.cramer b
-- Matrix.invOf_submatrix_equiv_eq
theorem invOf_submatrix_equiv_eq (A : Matrix m m α) (e₁ e₂ : n ≃ m) [Invertible A]
    [Invertible (A.submatrix e₁ e₂)] : ⅟ (A.submatrix e₁ e₂) = (⅟ A).submatrix e₂ e₁ 
Arguments: {m : Type u} {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] [Fintype m] [DecidableEq m] (A : Matrix m m α) (e₁ e₂ : n ≃ m) [Invertible A] [Invertible (A.submatrix ⇑e₁ ⇑e₂)]
Goal: ⅟(A.submatrix ⇑e₁ ⇑e₂) = (⅟A).submatrix ⇑e₂ ⇑e₁
-- Matrix.submatrixEquivInvertibleEquivInvertible_apply
@[simps]
def submatrixEquivInvertibleEquivInvertible (A : Matrix m m α) (e₁ e₂ : n ≃ m) :
    Invertible (A.submatrix e₁ e₂) ≃ Invertible A 
Arguments: {m : Type u} {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] [Fintype m] [DecidableEq m] (A : Matrix m m α) (e₁ e₂ : n ≃ m)
Goal: ∀ (x : Invertible (A.submatrix ⇑e₁ ⇑e₂)),
  (A.submatrixEquivInvertibleEquivInvertible e₁ e₂) x = A.invertibleOfSubmatrixEquivInvertible e₁ e₂
-- Matrix.submatrixEquivInvertibleEquivInvertible_symm_apply
@[simps]
def submatrixEquivInvertibleEquivInvertible (A : Matrix m m α) (e₁ e₂ : n ≃ m) :
    Invertible (A.submatrix e₁ e₂) ≃ Invertible A 
Arguments: {m : Type u} {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] [Fintype m] [DecidableEq m] (A : Matrix m m α) (e₁ e₂ : n ≃ m)
Goal: ∀ (x : Invertible A), (A.submatrixEquivInvertibleEquivInvertible e₁ e₂).symm x = A.submatrixEquivInvertible e₁ e₂
-- Matrix.isUnit_submatrix_equiv
@[simp]
theorem isUnit_submatrix_equiv {A : Matrix m m α} (e₁ e₂ : n ≃ m) :
    IsUnit (A.submatrix e₁ e₂) ↔ IsUnit A 
Arguments: {m : Type u} {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] [Fintype m] [DecidableEq m] {A : Matrix m m α} (e₁ e₂ : n ≃ m)
Goal: IsUnit (A.submatrix ⇑e₁ ⇑e₂) ↔ IsUnit A
-- Matrix.inv_submatrix_equiv
@[simp]
theorem inv_submatrix_equiv (A : Matrix m m α) (e₁ e₂ : n ≃ m) :
    (A.submatrix e₁ e₂)⁻¹ = A⁻¹.submatrix e₂ e₁ 
Arguments: {m : Type u} {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] [Fintype m] [DecidableEq m] (A : Matrix m m α) (e₁ e₂ : n ≃ m)
Goal: (A.submatrix ⇑e₁ ⇑e₂)⁻¹ = A⁻¹.submatrix ⇑e₂ ⇑e₁
-- Matrix.inv_reindex
theorem inv_reindex (e₁ e₂ : n ≃ m) (A : Matrix n n α) : (reindex e₁ e₂ A)⁻¹ = reindex e₂ e₁ A⁻¹ 
Arguments: {m : Type u} {n : Type u'} {α : Type v} [Fintype n] [DecidableEq n] [CommRing α] [Fintype m] [DecidableEq m] (e₁ e₂ : n ≃ m) (A : Matrix n n α)
Goal: ((Matrix.reindex e₁ e₂) A)⁻¹ = (Matrix.reindex e₂ e₁) A⁻¹
-- Matrix.det_conj
theorem det_conj {M : Matrix m m α} (h : IsUnit M) (N : Matrix m m α) :
    det (M * N * M⁻¹) = det N 
Arguments: {m : Type u} {α : Type v} [Fintype m] [DecidableEq m] [CommRing α] {M : Matrix m m α} (h : IsUnit M) (N : Matrix m m α)
Goal: (M * N * M⁻¹).det = N.det
-- Matrix.det_conj'
theorem det_conj' {M : Matrix m m α} (h : IsUnit M) (N : Matrix m m α) :
    det (M⁻¹ * N * M) = det N 
Arguments: {m : Type u} {α : Type v} [Fintype m] [DecidableEq m] [CommRing α] {M : Matrix m m α} (h : IsUnit M) (N : Matrix m m α)
Goal: (M⁻¹ * N * M).det = N.det
-- Matrix.toLinearEquiv'_apply
@[simp]
theorem toLinearEquiv'_apply (P : Matrix n n R) (h : Invertible P) :
    (P.toLinearEquiv' h : Module.End R (n → R)) = Matrix.toLin' P 
Arguments: {n : Type u_1} [Fintype n] {R : Type u_2} [CommRing R] [DecidableEq n] (P : Matrix n n R) (h : Invertible P)
Goal: ↑(P.toLinearEquiv' h) = Matrix.toLin' P
-- Matrix.toLinearEquiv'_symm_apply
@[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) 
Arguments: {n : Type u_1} [Fintype n] {R : Type u_2} [CommRing R] [DecidableEq n] (P : Matrix n n R) (h : Invertible P)
Goal: ↑(P.toLinearEquiv' h).symm = Matrix.toLin' ⅟P
-- Matrix.toLinearEquiv_apply
@[simps apply]
noncomputable def toLinearEquiv [DecidableEq n] (A : Matrix n n R) (hA : IsUnit A.det) :
    M ≃ₗ[R] M 
Arguments: {n : Type u_1} [Fintype n] {R : Type u_2} {M : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] (b : Basis n R M) [DecidableEq n] (A : Matrix n n R) (hA : IsUnit A.det) (a : M)
Goal: (Matrix.toLinearEquiv b A hA) a = ((Matrix.toLin b b) A) a
-- Matrix.ker_toLin_eq_bot
theorem ker_toLin_eq_bot [DecidableEq n] (A : Matrix n n R) (hA : IsUnit A.det) :
    LinearMap.ker (toLin b b A) = ⊥ 
Arguments: {n : Type u_1} [Fintype n] {R : Type u_2} {M : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] (b : Basis n R M) [DecidableEq n] (A : Matrix n n R) (hA : IsUnit A.det)
Goal: LinearMap.ker ((Matrix.toLin b b) A) = ⊥
-- Matrix.range_toLin_eq_top
theorem range_toLin_eq_top [DecidableEq n] (A : Matrix n n R) (hA : IsUnit A.det) :
    LinearMap.range (toLin b b A) = ⊤ 
Arguments: {n : Type u_1} [Fintype n] {R : Type u_2} {M : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] (b : Basis n R M) [DecidableEq n] (A : Matrix n n R) (hA : IsUnit A.det)
Goal: LinearMap.range ((Matrix.toLin b b) A) = ⊤
-- Matrix.exists_mulVec_eq_zero_iff_aux
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 
Arguments: {n : Type u_1} [Fintype n] {K : Type u_4} [DecidableEq n] [Field K] {M : Matrix n n K}
Goal: (∃ v, v ≠ 0 ∧ M.mulVec v = 0) ↔ M.det = 0
-- Matrix.exists_mulVec_eq_zero_iff'
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 
Arguments: {n : Type u_1} [Fintype n] {A : Type u_4} (K : Type u_5) [DecidableEq n] [CommRing A] [Nontrivial A] [Field K] [Algebra A K] [IsFractionRing A K] {M : Matrix n n A}
Goal: (∃ v, v ≠ 0 ∧ M.mulVec v = 0) ↔ M.det = 0
-- Matrix.exists_mulVec_eq_zero_iff
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 
Arguments: {n : Type u_1} [Fintype n] {A : Type u_4} [DecidableEq n] [CommRing A] [IsDomain A] {M : Matrix n n A}
Goal: (∃ v, v ≠ 0 ∧ M.mulVec v = 0) ↔ M.det = 0
-- Matrix.exists_vecMul_eq_zero_iff
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 
Arguments: {n : Type u_1} [Fintype n] {A : Type u_4} [DecidableEq n] [CommRing A] [IsDomain A] {M : Matrix n n A}
Goal: (∃ v, v ≠ 0 ∧ Matrix.vecMul v M = 0) ↔ M.det = 0
-- Matrix.nondegenerate_iff_det_ne_zero
theorem nondegenerate_iff_det_ne_zero {A : Type*} [DecidableEq n] [CommRing A] [IsDomain A]
    {M : Matrix n n A} : Nondegenerate M ↔ M.det ≠ 0 
Arguments: {n : Type u_1} [Fintype n] {A : Type u_4} [DecidableEq n] [CommRing A] [IsDomain A] {M : Matrix n n A}
Goal: M.Nondegenerate ↔ M.det ≠ 0
-- Matrix.det_ne_zero_of_sum_col_pos
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 
Arguments: {n : Type u_1} [Fintype n] [DecidableEq n] {S : Type u_2} [LinearOrderedCommRing S] {A : Matrix n n S} (h1 : Pairwise fun i j => A i j < 0) (h2 : ∀ (j : n), 0 < ∑ i : n, A i j)
Goal: A.det ≠ 0
-- Matrix.det_ne_zero_of_sum_row_pos
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 
Arguments: {n : Type u_1} [Fintype n] [DecidableEq n] {S : Type u_2} [LinearOrderedCommRing S] {A : Matrix n n S} (h1 : Pairwise fun i j => A i j < 0) (h2 : ∀ (i : n), 0 < ∑ j : n, A i j)
Goal: A.det ≠ 0
-- Matrix.finite_real_spectrum
lemma finite_real_spectrum : (spectrum ℝ A).Finite 
Arguments: {n : Type u_1} {𝕜 : Type u_2} [RCLike 𝕜] [Fintype n] [DecidableEq n] {A : Matrix n n 𝕜}
Goal: (spectrum ℝ A).Finite
-- Matrix.IsHermitian.eigenvalues_eq_spectrum_real
theorem eigenvalues_eq_spectrum_real {a : Matrix n n 𝕜} (ha : IsHermitian a) :
    spectrum ℝ a = Set.range (ha.eigenvalues) 
Arguments: {n : Type u_1} {𝕜 : Type u_2} [RCLike 𝕜] [Fintype n] [DecidableEq n] {a : Matrix n n 𝕜} (ha : a.IsHermitian)
Goal: spectrum ℝ a = Set.range ha.eigenvalues
-- Matrix.IsHermitian.cfcAux_apply
@[simps]
noncomputable def cfcAux : C(spectrum ℝ A, ℝ) →⋆ₐ[ℝ] (Matrix n n 𝕜) 
Arguments: {n : Type u_1} {𝕜 : Type u_2} [RCLike 𝕜] [Fintype n] [DecidableEq n] {A : Matrix n n 𝕜} (hA : A.IsHermitian) (g : C(↑(spectrum ℝ A), ℝ))
Goal: hA.cfcAux g =
  ↑hA.eigenvectorUnitary * Matrix.diagonal (RCLike.ofReal ∘ ⇑g ∘ fun i => ⟨hA.eigenvalues i, ⋯⟩) *
    star ↑hA.eigenvectorUnitary
-- Matrix.IsHermitian.closedEmbedding_cfcAux
lemma closedEmbedding_cfcAux : ClosedEmbedding hA.cfcAux 
Arguments: {n : Type u_1} {𝕜 : Type u_2} [RCLike 𝕜] [Fintype n] [DecidableEq n] {A : Matrix n n 𝕜} (hA : A.IsHermitian)
Goal: ClosedEmbedding ⇑hA.cfcAux
-- Matrix.IsHermitian.cfcAux_id
lemma cfcAux_id : hA.cfcAux (.restrict (spectrum ℝ A) (.id ℝ)) = A 
Arguments: {n : Type u_1} {𝕜 : Type u_2} [RCLike 𝕜] [Fintype n] [DecidableEq n] {A : Matrix n n 𝕜} (hA : A.IsHermitian)
Goal: hA.cfcAux (ContinuousMap.restrict (spectrum ℝ A) (ContinuousMap.id ℝ)) = A
-- Matrix.IsHermitian.cfc_eq
lemma cfc_eq (f : ℝ → ℝ) : cfc f A = hA.cfc f 
Arguments: {n : Type u_1} {𝕜 : Type u_2} [RCLike 𝕜] [Fintype n] [DecidableEq n] {A : Matrix n n 𝕜} (hA : A.IsHermitian) (f : ℝ → ℝ)
Goal: cfc f A = hA.cfc f
-- Matrix.BlockTriangular.submatrix
@[simp]
protected theorem BlockTriangular.submatrix {f : n → m} (h : M.BlockTriangular b) :
    (M.submatrix f f).BlockTriangular (b ∘ f) 
Arguments: {α : Type u_1} {m : Type u_3} {n : Type u_4} {R : Type v} [CommRing R] {M : Matrix m m R} {b : m → α} [LT α] {f : n → m} (h : M.BlockTriangular b)
Goal: (M.submatrix f f).BlockTriangular (b ∘ f)
-- Matrix.blockTriangular_reindex_iff
theorem blockTriangular_reindex_iff {b : n → α} {e : m ≃ n} :
    (reindex e e M).BlockTriangular b ↔ M.BlockTriangular (b ∘ e) 
Arguments: {α : Type u_1} {m : Type u_3} {n : Type u_4} {R : Type v} [CommRing R] {M : Matrix m m R} [LT α] {b : n → α} {e : m ≃ n}
Goal: ((Matrix.reindex e e) M).BlockTriangular b ↔ M.BlockTriangular (b ∘ ⇑e)
-- Matrix.BlockTriangular.transpose
protected theorem BlockTriangular.transpose :
    M.BlockTriangular b → Mᵀ.BlockTriangular (toDual ∘ b) 
Arguments: {α : Type u_1} {m : Type u_3} {R : Type v} [CommRing R] {M : Matrix m m R} {b : m → α} [LT α]
Goal: M.BlockTriangular b → Mᵀ.BlockTriangular (⇑OrderDual.toDual ∘ b)
-- Matrix.blockTriangular_transpose_iff
@[simp]
protected theorem blockTriangular_transpose_iff {b : m → αᵒᵈ} :
    Mᵀ.BlockTriangular b ↔ M.BlockTriangular (ofDual ∘ b) 
Arguments: {α : Type u_1} {m : Type u_3} {R : Type v} [CommRing R] {M : Matrix m m R} [LT α] {b : m → αᵒᵈ}
Goal: Mᵀ.BlockTriangular b ↔ M.BlockTriangular (⇑OrderDual.ofDual ∘ b)
-- Matrix.blockTriangular_zero
@[simp]
theorem blockTriangular_zero : BlockTriangular (0 : Matrix m m R) b 
Arguments: {α : Type u_1} {m : Type u_3} {R : Type v} [CommRing R] {b : m → α} [LT α]
Goal: Matrix.BlockTriangular 0 b
-- Matrix.BlockTriangular.neg
protected theorem BlockTriangular.neg (hM : BlockTriangular M b) : BlockTriangular (-M) b 
Arguments: {α : Type u_1} {m : Type u_3} {R : Type v} [CommRing R] {M : Matrix m m R} {b : m → α} [LT α] (hM : M.BlockTriangular b)
Goal: (-M).BlockTriangular b
-- Matrix.BlockTriangular.add
theorem BlockTriangular.add (hM : BlockTriangular M b) (hN : BlockTriangular N b) :
    BlockTriangular (M + N) b 
Arguments: {α : Type u_1} {m : Type u_3} {R : Type v} [CommRing R] {M N : Matrix m m R} {b : m → α} [LT α] (hM : M.BlockTriangular b) (hN : N.BlockTriangular b)
Goal: (M + N).BlockTriangular b