ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- PiTensorProduct.map_reindex_symm
theorem map_reindex_symm (f : Π i, s i →ₗ[R] t i) (e : ι ≃ ι₂) (x : ⨂[R] i, s (e.symm i)) :
    map f ((reindex R s e).symm x) = (reindex R t e).symm (map (fun i ↦ f (e.symm i)) x) 
Arguments: {ι : Type u_1} {ι₂ : Type u_2} {R : Type u_4} [CommSemiring R] {s : ι → Type u_7} [(i : ι) → AddCommMonoid (s i)] [(i : ι) → Module R (s i)] {t : ι → Type u_11} [(i : ι) → AddCommMonoid (t i)] [(i : ι) → Module R (t i)] (f : (i : ι) → s i →ₗ[R] t i) (e : ι ≃ ι₂) (x : PiTensorProduct R fun i => s (e.symm i))
Goal: (PiTensorProduct.map f) ((PiTensorProduct.reindex R s e).symm x) =
  (PiTensorProduct.reindex R t e).symm ((PiTensorProduct.map fun i => f (e.symm i)) x)
-- PiTensorProduct.isEmptyEquiv_symm_apply
@[simps symm_apply]
def isEmptyEquiv [IsEmpty ι] : (⨂[R] i : ι, s i) ≃ₗ[R] R 
Arguments: (ι : Type u_1) {R : Type u_4} [CommSemiring R] {s : ι → Type u_7} [(i : ι) → AddCommMonoid (s i)] [(i : ι) → Module R (s i)] [IsEmpty ι] (r : R)
Goal: (PiTensorProduct.isEmptyEquiv ι).symm r = r • (PiTensorProduct.tprod R) isEmptyElim
-- PiTensorProduct.isEmptyEquiv_apply_tprod
@[simp]
theorem isEmptyEquiv_apply_tprod [IsEmpty ι] (f : Π i, s i) :
    isEmptyEquiv ι (tprod R f) = 1 
Arguments: (ι : Type u_1) {R : Type u_4} [CommSemiring R] {s : ι → Type u_7} [(i : ι) → AddCommMonoid (s i)] [(i : ι) → Module R (s i)] [IsEmpty ι] (f : (i : ι) → s i)
Goal: (PiTensorProduct.isEmptyEquiv ι) ((PiTensorProduct.tprod R) f) = 1
-- PiTensorProduct.subsingletonEquiv_symm_apply
@[simps symm_apply]
def subsingletonEquiv [Subsingleton ι] (i₀ : ι) : (⨂[R] _ : ι, M) ≃ₗ[R] M 
Arguments: {ι : Type u_1} {R : Type u_4} [CommSemiring R] {M : Type u_8} [AddCommMonoid M] [Module R M] [Subsingleton ι] (i₀ : ι) (m : M)
Goal: (PiTensorProduct.subsingletonEquiv i₀).symm m = (PiTensorProduct.tprod R) fun x => m
-- PiTensorProduct.subsingletonEquiv_apply_tprod
@[simp]
theorem subsingletonEquiv_apply_tprod [Subsingleton ι] (i : ι) (f : ι → M) :
    subsingletonEquiv i (tprod R f) = f i 
Arguments: {ι : Type u_1} {R : Type u_4} [CommSemiring R] {M : Type u_8} [AddCommMonoid M] [Module R M] [Subsingleton ι] (i : ι) (f : ι → M)
Goal: (PiTensorProduct.subsingletonEquiv i) ((PiTensorProduct.tprod R) f) = f i
-- _private.Mathlib.LinearAlgebra.PiTensorProduct.0.PiTensorProduct.tmul_apply
private theorem tmul_apply (a : ι → M) (b : ι₂ → M) :
    tmul ((⨂ₜ[R] i, a i) ⊗ₜ[R] ⨂ₜ[R] i, b i) = ⨂ₜ[R] i, Sum.elim a b i 
Arguments: {ι : Type u_1} {ι₂ : Type u_2} {R : Type u_4} [CommSemiring R] {M : Type u_8} [AddCommMonoid M] [Module R M] (a : ι → M) (b : ι₂ → M)
Goal: PiTensorProduct.tmul (((PiTensorProduct.tprod R) fun i => a i) ⊗ₜ[R] (PiTensorProduct.tprod R) fun i => b i) =
  (PiTensorProduct.tprod R) fun i => Sum.elim a b i
-- _private.Mathlib.LinearAlgebra.PiTensorProduct.0.PiTensorProduct.tmulSymm_apply
private theorem tmulSymm_apply (a : ι ⊕ ι₂ → M) :
    tmulSymm (⨂ₜ[R] i, a i) = (⨂ₜ[R] i, a (Sum.inl i)) ⊗ₜ[R] ⨂ₜ[R] i, a (Sum.inr i) 
Arguments: {ι : Type u_1} {ι₂ : Type u_2} {R : Type u_4} [CommSemiring R] {M : Type u_8} [AddCommMonoid M] [Module R M] (a : ι ⊕ ι₂ → M)
Goal: PiTensorProduct.tmulSymm ((PiTensorProduct.tprod R) fun i => a i) =
  ((PiTensorProduct.tprod R) fun i => a (Sum.inl i)) ⊗ₜ[R] (PiTensorProduct.tprod R) fun i => a (Sum.inr i)
-- PiTensorProduct.tmulEquiv_apply
@[simp]
theorem tmulEquiv_apply (a : ι → M) (b : ι₂ → M) :
    tmulEquiv (ι := ι) (ι₂ := ι₂) R M ((⨂ₜ[R] i, a i) ⊗ₜ[R] ⨂ₜ[R] i, b i) =
    ⨂ₜ[R] i, Sum.elim a b i 
Arguments: {ι : Type u_1} {ι₂ : Type u_2} (R : Type u_4) [CommSemiring R] (M : Type u_8) [AddCommMonoid M] [Module R M] (a : ι → M) (b : ι₂ → M)
Goal: (PiTensorProduct.tmulEquiv R M)
    (((PiTensorProduct.tprod R) fun i => a i) ⊗ₜ[R] (PiTensorProduct.tprod R) fun i => b i) =
  (PiTensorProduct.tprod R) fun i => Sum.elim a b i
-- PiTensorProduct.tmulEquiv_symm_apply
@[simp]
theorem tmulEquiv_symm_apply (a : ι ⊕ ι₂ → M) :
    (tmulEquiv (ι := ι) (ι₂ := ι₂) R M).symm (⨂ₜ[R] i, a i) =
    (⨂ₜ[R] i, a (Sum.inl i)) ⊗ₜ[R] ⨂ₜ[R] i, a (Sum.inr i) 
Arguments: {ι : Type u_1} {ι₂ : Type u_2} (R : Type u_4) [CommSemiring R] (M : Type u_8) [AddCommMonoid M] [Module R M] (a : ι ⊕ ι₂ → M)
Goal: (PiTensorProduct.tmulEquiv R M).symm ((PiTensorProduct.tprod R) fun i => a i) =
  ((PiTensorProduct.tprod R) fun i => a (Sum.inl i)) ⊗ₜ[R] (PiTensorProduct.tprod R) fun i => a (Sum.inr i)
-- TensorProduct.sum_tmul_eq_zero_of_vanishesTrivially
theorem sum_tmul_eq_zero_of_vanishesTrivially (hmn : VanishesTrivially R m n) :
    ∑ i, m i ⊗ₜ n i = (0 : M ⊗[R] N) 
Arguments: (R : Type u) [CommRing R] {M : Type u} [AddCommGroup M] [Module R M] {N : Type u} [AddCommGroup N] [Module R N] {ι : Type u} [Fintype ι] {m : ι → M} {n : ι → N} (hmn : TensorProduct.VanishesTrivially R m n)
Goal: ∑ i : ι, m i ⊗ₜ[R] n i = 0
-- TensorProduct.vanishesTrivially_of_sum_tmul_eq_zero
theorem vanishesTrivially_of_sum_tmul_eq_zero (hm : Submodule.span R (Set.range m) = ⊤)
    (hmn : ∑ i, m i ⊗ₜ n i = (0 : M ⊗[R] N)) : VanishesTrivially R m n 
Arguments: (R : Type u) [CommRing R] {M : Type u} [AddCommGroup M] [Module R M] {N : Type u} [AddCommGroup N] [Module R N] {ι : Type u} [Fintype ι] {m : ι → M} {n : ι → N} (hm : Submodule.span R (Set.range m) = ⊤) (hmn : ∑ i : ι, m i ⊗ₜ[R] n i = 0)
Goal: TensorProduct.VanishesTrivially R m n
-- TensorProduct.vanishesTrivially_iff_sum_tmul_eq_zero
theorem vanishesTrivially_iff_sum_tmul_eq_zero (hm : Submodule.span R (Set.range m) = ⊤) :
    VanishesTrivially R m n ↔ ∑ i, m i ⊗ₜ n i = (0 : M ⊗[R] N) 
Arguments: (R : Type u) [CommRing R] {M : Type u} [AddCommGroup M] [Module R M] {N : Type u} [AddCommGroup N] [Module R N] {ι : Type u} [Fintype ι] {m : ι → M} {n : ι → N} (hm : Submodule.span R (Set.range m) = ⊤)
Goal: TensorProduct.VanishesTrivially R m n ↔ ∑ i : ι, m i ⊗ₜ[R] n i = 0
-- TensorProduct.vanishesTrivially_of_sum_tmul_eq_zero_of_rTensor_injective
theorem vanishesTrivially_of_sum_tmul_eq_zero_of_rTensor_injective
    (hm : Injective (rTensor N (span R (Set.range m)).subtype))
    (hmn : ∑ i, m i ⊗ₜ n i = (0 : M ⊗[R] N)) : VanishesTrivially R m n 
Arguments: (R : Type u) [CommRing R] {M : Type u} [AddCommGroup M] [Module R M] {N : Type u} [AddCommGroup N] [Module R N] {ι : Type u} [Fintype ι] {m : ι → M} {n : ι → N} (hm : Function.Injective ⇑(LinearMap.rTensor N (Submodule.span R (Set.range m)).subtype)) (hmn : ∑ i : ι, m i ⊗ₜ[R] n i = 0)
Goal: TensorProduct.VanishesTrivially R m n
-- TensorProduct.vanishesTrivially_iff_sum_tmul_eq_zero_of_rTensor_injective
theorem vanishesTrivially_iff_sum_tmul_eq_zero_of_rTensor_injective
    (hm : Injective (rTensor N (span R (Set.range m)).subtype)) :
    VanishesTrivially R m n ↔ ∑ i, m i ⊗ₜ n i = (0 : M ⊗[R] N) 
Arguments: (R : Type u) [CommRing R] {M : Type u} [AddCommGroup M] [Module R M] {N : Type u} [AddCommGroup N] [Module R N] {ι : Type u} [Fintype ι] {m : ι → M} {n : ι → N} (hm : Function.Injective ⇑(LinearMap.rTensor N (Submodule.span R (Set.range m)).subtype))
Goal: TensorProduct.VanishesTrivially R m n ↔ ∑ i : ι, m i ⊗ₜ[R] n i = 0
-- TensorProduct.rTensor_injective_of_forall_vanishesTrivially
theorem rTensor_injective_of_forall_vanishesTrivially
    (hMN : ∀ {ι : Type u} [Fintype ι] {m : ι → M} {n : ι → N},
      ∑ i, m i ⊗ₜ n i = (0 : M ⊗[R] N) → VanishesTrivially R m n)
    (M' : Submodule R M) : Injective (rTensor N M'.subtype) 
Arguments: (R : Type u) [CommRing R] {M : Type u} [AddCommGroup M] [Module R M] {N : Type u} [AddCommGroup N] [Module R N] (hMN :
  ∀ {ι : Type u} [inst : Fintype ι] {m : ι → M} {n : ι → N},
    ∑ i : ι, m i ⊗ₜ[R] n i = 0 → TensorProduct.VanishesTrivially R m n) (M' : Submodule R M)
Goal: Function.Injective ⇑(LinearMap.rTensor N M'.subtype)
-- TensorProduct.forall_vanishesTrivially_iff_forall_rTensor_injective
theorem forall_vanishesTrivially_iff_forall_rTensor_injective :
    (∀ {ι : Type u} [Fintype ι] {m : ι → M} {n : ι → N},
      ∑ i, m i ⊗ₜ n i = (0 : M ⊗[R] N) → VanishesTrivially R m n) ↔
    ∀ M' : Submodule R M, Injective (rTensor N M'.subtype) 
Arguments: (R : Type u) [CommRing R] {M : Type u} [AddCommGroup M] [Module R M] {N : Type u} [AddCommGroup N] [Module R N]
Goal: (∀ {ι : Type u} [inst : Fintype ι] {m : ι → M} {n : ι → N},
    ∑ i : ι, m i ⊗ₜ[R] n i = 0 → TensorProduct.VanishesTrivially R m n) ↔
  ∀ (M' : Submodule R M), Function.Injective ⇑(LinearMap.rTensor N M'.subtype)
-- TensorProduct.forall_vanishesTrivially_iff_forall_FG_rTensor_injective
theorem forall_vanishesTrivially_iff_forall_FG_rTensor_injective :
    (∀ {ι : Type u} [Fintype ι] {m : ι → M} {n : ι → N},
      ∑ i, m i ⊗ₜ n i = (0 : M ⊗[R] N) → VanishesTrivially R m n) ↔
    ∀ (M' : Submodule R M) (_ : M'.FG), Injective (rTensor N M'.subtype) 
Arguments: (R : Type u) [CommRing R] {M : Type u} [AddCommGroup M] [Module R M] {N : Type u} [AddCommGroup N] [Module R N]
Goal: (∀ {ι : Type u} [inst : Fintype ι] {m : ι → M} {n : ι → N},
    ∑ i : ι, m i ⊗ₜ[R] n i = 0 → TensorProduct.VanishesTrivially R m n) ↔
  ∀ (M' : Submodule R M), M'.FG → Function.Injective ⇑(LinearMap.rTensor N M'.subtype)
-- TensorProduct.rTensor_injective_of_forall_FG_rTensor_injective
theorem rTensor_injective_of_forall_FG_rTensor_injective
    (hMN : ∀ (M' : Submodule R M) (_ : M'.FG), Injective (rTensor N M'.subtype))
    (M' : Submodule R M) : Injective (rTensor N M'.subtype) 
Arguments: (R : Type u) [CommRing R] {M : Type u} [AddCommGroup M] [Module R M] {N : Type u} [AddCommGroup N] [Module R N] (hMN : ∀ (M' : Submodule R M), M'.FG → Function.Injective ⇑(LinearMap.rTensor N M'.subtype)) (M' : Submodule R M)
Goal: Function.Injective ⇑(LinearMap.rTensor N M'.subtype)
-- Matrix.minpoly_toLin'
@[simp]
theorem minpoly_toLin' : minpoly R (toLin' M) = minpoly R M 
Arguments: {R : Type u} [CommRing R] {n : Type v} [DecidableEq n] [Fintype n] (M : Matrix n n R)
Goal: minpoly R (Matrix.toLin' M) = minpoly R M
-- Matrix.minpoly_toLin
@[simp]
theorem minpoly_toLin (b : Basis n R N) (M : Matrix n n R) :
    minpoly R (toLin b b M) = minpoly R M 
Arguments: {R : Type u} [CommRing R] {n : Type v} [DecidableEq n] [Fintype n] {N : Type w} [AddCommGroup N] [Module R N] (b : Basis n R N) (M : Matrix n n R)
Goal: minpoly R ((Matrix.toLin b b) M) = minpoly R M
-- Matrix.isIntegral
theorem isIntegral : IsIntegral R M 
Arguments: {R : Type u} [CommRing R] {n : Type v} [DecidableEq n] [Fintype n] (M : Matrix n n R)
Goal: IsIntegral R M
-- Matrix.minpoly_dvd_charpoly
theorem minpoly_dvd_charpoly {K : Type*} [Field K] (M : Matrix n n K) : minpoly K M ∣ M.charpoly 
Arguments: {n : Type v} [DecidableEq n] [Fintype n] {K : Type u_1} [Field K] (M : Matrix n n K)
Goal: minpoly K M ∣ M.charpoly
-- LinearMap.minpoly_toMatrix'
@[simp]
theorem minpoly_toMatrix' (f : (n → R) →ₗ[R] n → R) : minpoly R (toMatrix' f) = minpoly R f 
Arguments: {R : Type u} [CommRing R] {n : Type v} [DecidableEq n] [Fintype n] (f : (n → R) →ₗ[R] n → R)
Goal: minpoly R (LinearMap.toMatrix' f) = minpoly R f
-- LinearMap.minpoly_toMatrix
@[simp]
theorem minpoly_toMatrix (b : Basis n R N) (f : N →ₗ[R] N) :
    minpoly R (toMatrix b b f) = minpoly R f 
Arguments: {R : Type u} [CommRing R] {n : Type v} [DecidableEq n] [Fintype n] {N : Type w} [AddCommGroup N] [Module R N] (b : Basis n R N) (f : N →ₗ[R] N)
Goal: minpoly R ((LinearMap.toMatrix b b) f) = minpoly R f
-- charpoly_leftMulMatrix
theorem charpoly_leftMulMatrix {S : Type*} [Ring S] [Algebra R S] (h : PowerBasis R S) :
    (leftMulMatrix h.basis h.gen).charpoly = minpoly R h.gen 
Arguments: {R : Type u} [CommRing R] {S : Type u_1} [Ring S] [Algebra R S] (h : PowerBasis R S)
Goal: ((Algebra.leftMulMatrix h.basis) h.gen).charpoly = minpoly R h.gen
-- Matrix.det_eq_prod_roots_charpoly_of_splits
theorem det_eq_prod_roots_charpoly_of_splits (hAps : A.charpoly.Splits (RingHom.id R)) :
    A.det = (Matrix.charpoly A).roots.prod 
Arguments: {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [Field R] {A : Matrix n n R} (hAps : Polynomial.Splits (RingHom.id R) A.charpoly)
Goal: A.det = A.charpoly.roots.prod
-- Matrix.trace_eq_sum_roots_charpoly_of_splits
theorem trace_eq_sum_roots_charpoly_of_splits (hAps : A.charpoly.Splits (RingHom.id R)) :
    A.trace = (Matrix.charpoly A).roots.sum 
Arguments: {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [Field R] {A : Matrix n n R} (hAps : Polynomial.Splits (RingHom.id R) A.charpoly)
Goal: A.trace = A.charpoly.roots.sum
-- Matrix.det_eq_prod_roots_charpoly
theorem det_eq_prod_roots_charpoly [IsAlgClosed R] : A.det = (Matrix.charpoly A).roots.prod 
Arguments: {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [Field R] (A : Matrix n n R) [IsAlgClosed R]
Goal: A.det = A.charpoly.roots.prod
-- Matrix.trace_eq_sum_roots_charpoly
theorem trace_eq_sum_roots_charpoly [IsAlgClosed R] : A.trace = (Matrix.charpoly A).roots.sum 
Arguments: {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [Field R] (A : Matrix n n R) [IsAlgClosed R]
Goal: A.trace = A.charpoly.roots.sum
-- Matrix.charmatrix_apply
theorem charmatrix_apply :
    charmatrix M i j = (Matrix.diagonal fun _ : n => X) i j - C (M i j) 
Arguments: {R : Type u_1} [CommRing R] {n : Type u_4} [DecidableEq n] [Fintype n] (M : Matrix n n R) (i j : n)
Goal: M.charmatrix i j = Matrix.diagonal (fun x => Polynomial.X) i j - Polynomial.C (M i j)
-- Matrix.charmatrix_apply_eq
@[simp]
theorem charmatrix_apply_eq : charmatrix M i i = (X : R[X]) - C (M i i) 
Arguments: {R : Type u_1} [CommRing R] {n : Type u_4} [DecidableEq n] [Fintype n] (M : Matrix n n R) (i : n)
Goal: M.charmatrix i i = Polynomial.X - Polynomial.C (M i i)
-- Matrix.charmatrix_apply_ne
@[simp]
theorem charmatrix_apply_ne (h : i ≠ j) : charmatrix M i j = -C (M i j) 
Arguments: {R : Type u_1} [CommRing R] {n : Type u_4} [DecidableEq n] [Fintype n] (M : Matrix n n R) (i j : n) (h : i ≠ j)
Goal: M.charmatrix i j = -Polynomial.C (M i j)
-- Matrix.matPolyEquiv_charmatrix
theorem matPolyEquiv_charmatrix : matPolyEquiv (charmatrix M) = X - C M 
Arguments: {R : Type u_1} [CommRing R] {n : Type u_4} [DecidableEq n] [Fintype n] (M : Matrix n n R)
Goal: matPolyEquiv M.charmatrix = Polynomial.X - Polynomial.C M
-- Matrix.charmatrix_reindex
theorem charmatrix_reindex (e : n ≃ m) :
    charmatrix (reindex e e M) = reindex e e (charmatrix M) 
Arguments: {R : Type u_1} [CommRing R] {m : Type u_3} {n : Type u_4} [DecidableEq m] [DecidableEq n] [Fintype m] [Fintype n] (M : Matrix n n R) (e : n ≃ m)
Goal: ((Matrix.reindex e e) M).charmatrix = (Matrix.reindex e e) M.charmatrix
-- Matrix.charmatrix_map
lemma charmatrix_map (M : Matrix n n R) (f : R →+* S) :
    charmatrix (M.map f) = (charmatrix M).map (Polynomial.map f) 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] {n : Type u_4} [DecidableEq n] [Fintype n] (M : Matrix n n R) (f : R →+* S)
Goal: (M.map ⇑f).charmatrix = M.charmatrix.map (Polynomial.map f)
-- Matrix.charmatrix_fromBlocks
lemma charmatrix_fromBlocks :
    charmatrix (fromBlocks M₁₁ M₁₂ M₂₁ M₂₂) =
      fromBlocks (charmatrix M₁₁) (- M₁₂.map C) (- M₂₁.map C) (charmatrix M₂₂) 
Arguments: {R : Type u_1} [CommRing R] {m : Type u_3} {n : Type u_4} [DecidableEq m] [DecidableEq n] [Fintype m] [Fintype n] (M₁₁ : Matrix m m R) (M₁₂ : Matrix m n R) (M₂₁ : Matrix n m R) (M₂₂ : Matrix n n R)
Goal: (Matrix.fromBlocks M₁₁ M₁₂ M₂₁ M₂₂).charmatrix =
  Matrix.fromBlocks M₁₁.charmatrix (-M₁₂.map ⇑Polynomial.C) (-M₂₁.map ⇑Polynomial.C) M₂₂.charmatrix
-- Matrix.charpoly_reindex
theorem charpoly_reindex (e : n ≃ m)
    (M : Matrix n n R) : (reindex e e M).charpoly = M.charpoly 
Arguments: {R : Type u_1} [CommRing R] {m : Type u_3} {n : Type u_4} [DecidableEq m] [DecidableEq n] [Fintype m] [Fintype n] (e : n ≃ m) (M : Matrix n n R)
Goal: ((Matrix.reindex e e) M).charpoly = M.charpoly
-- Matrix.charpoly_map
lemma charpoly_map (M : Matrix n n R) (f : R →+* S) :
    (M.map f).charpoly = M.charpoly.map f 
Arguments: {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] {n : Type u_4} [DecidableEq n] [Fintype n] (M : Matrix n n R) (f : R →+* S)
Goal: (M.map ⇑f).charpoly = Polynomial.map f M.charpoly
-- Matrix.charpoly_fromBlocks_zero₁₂
@[simp]
lemma charpoly_fromBlocks_zero₁₂ :
    (fromBlocks M₁₁ 0 M₂₁ M₂₂).charpoly = (M₁₁.charpoly * M₂₂.charpoly) 
Arguments: {R : Type u_1} [CommRing R] {m : Type u_3} {n : Type u_4} [DecidableEq m] [DecidableEq n] [Fintype m] [Fintype n] (M₁₁ : Matrix m m R) (M₂₁ : Matrix n m R) (M₂₂ : Matrix n n R)
Goal: (Matrix.fromBlocks M₁₁ 0 M₂₁ M₂₂).charpoly = M₁₁.charpoly * M₂₂.charpoly
-- Matrix.charpoly_fromBlocks_zero₂₁
@[simp]
lemma charpoly_fromBlocks_zero₂₁ :
    (fromBlocks M₁₁ M₁₂ 0 M₂₂).charpoly = (M₁₁.charpoly * M₂₂.charpoly) 
Arguments: {R : Type u_1} [CommRing R] {m : Type u_3} {n : Type u_4} [DecidableEq m] [DecidableEq n] [Fintype m] [Fintype n] (M₁₁ : Matrix m m R) (M₁₂ : Matrix m n R) (M₂₂ : Matrix n n R)
Goal: (Matrix.fromBlocks M₁₁ M₁₂ 0 M₂₂).charpoly = M₁₁.charpoly * M₂₂.charpoly
-- Matrix.aeval_self_charpoly
theorem aeval_self_charpoly (M : Matrix n n R) : aeval M M.charpoly = 0 
Arguments: {R : Type u_1} [CommRing R] {n : Type u_4} [DecidableEq n] [Fintype n] (M : Matrix n n R)
Goal: (Polynomial.aeval M) M.charpoly = 0
-- Matrix.charpoly.univ_map_eval₂Hom
@[simp]
lemma univ_map_eval₂Hom (M : n × n → S) :
    (univ R n).map (eval₂Hom f M) = charpoly (Matrix.of M.curry) 
Arguments: {R : Type u_1} {S : Type u_2} (n : Type u_3) [CommRing R] [CommRing S] [Fintype n] [DecidableEq n] (f : R →+* S) (M : n × n → S)
Goal: Polynomial.map (MvPolynomial.eval₂Hom f M) (Matrix.charpoly.univ R n) = (Matrix.of (Function.curry M)).charpoly
-- Matrix.charpoly.univ_map_map
lemma univ_map_map :
    (univ R n).map (MvPolynomial.map f) = univ S n 
Arguments: {R : Type u_1} {S : Type u_2} (n : Type u_3) [CommRing R] [CommRing S] [Fintype n] [DecidableEq n] (f : R →+* S)
Goal: Polynomial.map (MvPolynomial.map f) (Matrix.charpoly.univ R n) = Matrix.charpoly.univ S n
-- Matrix.charpoly.univ_coeff_eval₂Hom
@[simp]
lemma univ_coeff_eval₂Hom (M : n × n → S) (i : ℕ) :
    MvPolynomial.eval₂Hom f M ((univ R n).coeff i) =
      (charpoly (Matrix.of M.curry)).coeff i 
Arguments: {R : Type u_1} {S : Type u_2} (n : Type u_3) [CommRing R] [CommRing S] [Fintype n] [DecidableEq n] (f : R →+* S) (M : n × n → S) (i : ℕ)
Goal: (MvPolynomial.eval₂Hom f M) ((Matrix.charpoly.univ R n).coeff i) = (Matrix.of (Function.curry M)).charpoly.coeff i
-- Matrix.charpoly.univ_monic
lemma univ_monic : (univ R n).Monic 
Arguments: (R : Type u_1) (n : Type u_3) [CommRing R] [Fintype n] [DecidableEq n]
Goal: (Matrix.charpoly.univ R n).Monic
-- Matrix.charpoly.univ_natDegree
lemma univ_natDegree [Nontrivial R] : (univ R n).natDegree = Fintype.card n 
Arguments: (R : Type u_1) (n : Type u_3) [CommRing R] [Fintype n] [DecidableEq n] [Nontrivial R]
Goal: (Matrix.charpoly.univ R n).natDegree = Fintype.card n
-- Matrix.charpoly.univ_coeff_card
@[simp]
lemma univ_coeff_card : (univ R n).coeff (Fintype.card n) = 1 
Arguments: (R : Type u_1) (n : Type u_3) [CommRing R] [Fintype n] [DecidableEq n]
Goal: (Matrix.charpoly.univ R n).coeff (Fintype.card n) = 1
-- Matrix.charpoly.optionEquivLeft_symm_univ_isHomogeneous
lemma optionEquivLeft_symm_univ_isHomogeneous :
    ((optionEquivLeft R (n × n)).symm (univ R n)).IsHomogeneous (Fintype.card n) 
Arguments: (R : Type u_1) (n : Type u_3) [CommRing R] [Fintype n] [DecidableEq n]
Goal: ((MvPolynomial.optionEquivLeft R (n × n)).symm (Matrix.charpoly.univ R n)).IsHomogeneous (Fintype.card n)
-- Matrix.charpoly.univ_coeff_isHomogeneous
lemma univ_coeff_isHomogeneous (i j : ℕ) (h : i + j = Fintype.card n) :
    ((univ R n).coeff i).IsHomogeneous j 
Arguments: (R : Type u_1) (n : Type u_3) [CommRing R] [Fintype n] [DecidableEq n] (i j : ℕ) (h : i + j = Fintype.card n)
Goal: ((Matrix.charpoly.univ R n).coeff i).IsHomogeneous j
-- FiniteField.Matrix.charpoly_pow_card
@[simp]
theorem FiniteField.Matrix.charpoly_pow_card {K : Type*} [Field K] [Fintype K] (M : Matrix n n K) :
    (M ^ Fintype.card K).charpoly = M.charpoly 
Arguments: {n : Type u_1} [DecidableEq n] [Fintype n] {K : Type u_2} [Field K] [Fintype K] (M : Matrix n n K)
Goal: (M ^ Fintype.card K).charpoly = M.charpoly
-- ZMod.charpoly_pow_card
@[simp]
theorem ZMod.charpoly_pow_card {p : ℕ} [Fact p.Prime] (M : Matrix n n (ZMod p)) :
    (M ^ p).charpoly = M.charpoly 
Arguments: {n : Type u_1} [DecidableEq n] [Fintype n] {p : ℕ} [Fact (Nat.Prime p)] (M : Matrix n n (ZMod p))
Goal: (M ^ p).charpoly = M.charpoly
-- FiniteField.trace_pow_card
theorem FiniteField.trace_pow_card {K : Type*} [Field K] [Fintype K] (M : Matrix n n K) :
    trace (M ^ Fintype.card K) = trace M ^ Fintype.card K 
Arguments: {n : Type u_1} [DecidableEq n] [Fintype n] {K : Type u_2} [Field K] [Fintype K] (M : Matrix n n K)
Goal: (M ^ Fintype.card K).trace = M.trace ^ Fintype.card K
-- ZMod.trace_pow_card
theorem ZMod.trace_pow_card {p : ℕ} [Fact p.Prime] (M : Matrix n n (ZMod p)) :
    trace (M ^ p) = trace M ^ p 
Arguments: {n : Type u_1} [DecidableEq n] [Fintype n] {p : ℕ} [Fact (Nat.Prime p)] (M : Matrix n n (ZMod p))
Goal: (M ^ p).trace = M.trace ^ p
-- Matrix.IsHermitian.mulVec_eigenvectorBasis
lemma mulVec_eigenvectorBasis (j : n) :
    A *ᵥ ⇑(hA.eigenvectorBasis j) = (hA.eigenvalues j) • ⇑(hA.eigenvectorBasis j) 
Arguments: {𝕜 : Type u_1} [RCLike 𝕜] {n : Type u_2} [Fintype n] {A : Matrix n n 𝕜} [DecidableEq n] (hA : A.IsHermitian) (j : n)
Goal: A.mulVec ((WithLp.equiv 2 ((i : n) → (fun x => 𝕜) i)) (hA.eigenvectorBasis j)) =
  hA.eigenvalues j • (WithLp.equiv 2 ((i : n) → (fun x => 𝕜) i)) (hA.eigenvectorBasis j)
-- Matrix.IsHermitian.spectrum_toEuclideanLin
theorem spectrum_toEuclideanLin : spectrum 𝕜 (toEuclideanLin A) = spectrum 𝕜 A 
Arguments: {𝕜 : Type u_1} [RCLike 𝕜] {n : Type u_2} [Fintype n] {A : Matrix n n 𝕜} [DecidableEq n]
Goal: spectrum 𝕜 (Matrix.toEuclideanLin A) = spectrum 𝕜 A
-- Matrix.IsHermitian.eigenvalues_mem_spectrum_real
theorem eigenvalues_mem_spectrum_real (i : n) : hA.eigenvalues i ∈ spectrum ℝ A 
Arguments: {𝕜 : Type u_1} [RCLike 𝕜] {n : Type u_2} [Fintype n] {A : Matrix n n 𝕜} [DecidableEq n] (hA : A.IsHermitian) (i : n)
Goal: hA.eigenvalues i ∈ spectrum ℝ A
-- Matrix.IsHermitian.eigenvectorUnitary_coe
lemma eigenvectorUnitary_coe {𝕜 : Type*} [RCLike 𝕜] {n : Type*} [Fintype n]
    {A : Matrix n n 𝕜} [DecidableEq n] (hA : Matrix.IsHermitian A) :
    eigenvectorUnitary hA =
      (EuclideanSpace.basisFun n 𝕜).toBasis.toMatrix (hA.eigenvectorBasis).toBasis 
Arguments: {𝕜 : Type u_3} [RCLike 𝕜] {n : Type u_4} [Fintype n] {A : Matrix n n 𝕜} [DecidableEq n] (hA : A.IsHermitian)
Goal: ↑hA.eigenvectorUnitary = (EuclideanSpace.basisFun n 𝕜).toBasis.toMatrix ⇑hA.eigenvectorBasis.toBasis
-- Matrix.IsHermitian.eigenvectorUnitary_apply
@[simp]
theorem eigenvectorUnitary_apply (i j : n) :
    eigenvectorUnitary hA i j = ⇑(hA.eigenvectorBasis j) i 
Arguments: {𝕜 : Type u_1} [RCLike 𝕜] {n : Type u_2} [Fintype n] {A : Matrix n n 𝕜} [DecidableEq n] (hA : A.IsHermitian) (i j : n)
Goal: ↑hA.eigenvectorUnitary i j = (WithLp.equiv 2 ((i : n) → (fun x => 𝕜) i)) (hA.eigenvectorBasis j) i
-- Matrix.IsHermitian.eigenvectorUnitary_mulVec
theorem eigenvectorUnitary_mulVec (j : n) :
    eigenvectorUnitary hA *ᵥ Pi.single j 1 = ⇑(hA.eigenvectorBasis j) 
Arguments: {𝕜 : Type u_1} [RCLike 𝕜] {n : Type u_2} [Fintype n] {A : Matrix n n 𝕜} [DecidableEq n] (hA : A.IsHermitian) (j : n)
Goal: (↑hA.eigenvectorUnitary).mulVec (Pi.single j 1) = (WithLp.equiv 2 ((i : n) → (fun x => 𝕜) i)) (hA.eigenvectorBasis j)
-- Matrix.IsHermitian.star_eigenvectorUnitary_mulVec
theorem star_eigenvectorUnitary_mulVec (j : n) :
    (star (eigenvectorUnitary hA : Matrix n n 𝕜)) *ᵥ ⇑(hA.eigenvectorBasis j) = Pi.single j 1 
Arguments: {𝕜 : Type u_1} [RCLike 𝕜] {n : Type u_2} [Fintype n] {A : Matrix n n 𝕜} [DecidableEq n] (hA : A.IsHermitian) (j : n)
Goal: (star ↑hA.eigenvectorUnitary).mulVec ((WithLp.equiv 2 ((i : n) → (fun x => 𝕜) i)) (hA.eigenvectorBasis j)) =
  Pi.single j 1
-- Matrix.IsHermitian.star_mul_self_mul_eq_diagonal
theorem star_mul_self_mul_eq_diagonal :
    (star (eigenvectorUnitary hA : Matrix n n 𝕜)) * A * (eigenvectorUnitary hA : Matrix n n 𝕜)
      = diagonal (RCLike.ofReal ∘ hA.eigenvalues) 
Arguments: {𝕜 : Type u_1} [RCLike 𝕜] {n : Type u_2} [Fintype n] {A : Matrix n n 𝕜} [DecidableEq n] (hA : A.IsHermitian)
Goal: star ↑hA.eigenvectorUnitary * A * ↑hA.eigenvectorUnitary = Matrix.diagonal (RCLike.ofReal ∘ hA.eigenvalues)