ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- QuadraticForm.tensorAssoc_apply
@[simp] lemma tensorAssoc_apply
    (Q₁ : QuadraticForm R M₁) (Q₂ : QuadraticForm R M₂) (Q₃ : QuadraticForm R M₃)
    (x : (M₁ ⊗[R] M₂) ⊗[R] M₃) :
    tensorAssoc Q₁ Q₂ Q₃ x = TensorProduct.assoc R M₁ M₂ M₃ x 
Arguments: {R : Type uR} {M₁ : Type uM₁} {M₂ : Type uM₂} {M₃ : Type uM₃} [CommRing R] [AddCommGroup M₁] [AddCommGroup M₂] [AddCommGroup M₃] [Module R M₁] [Module R M₂] [Module R M₃] [Invertible 2] (Q₁ : QuadraticForm R M₁) (Q₂ : QuadraticForm R M₂) (Q₃ : QuadraticForm R M₃) (x : (M₁ ⊗[R] M₂) ⊗[R] M₃)
Goal: (Q₁.tensorAssoc Q₂ Q₃) x = (TensorProduct.assoc R M₁ M₂ M₃) x
-- QuadraticForm.tensorAssoc_symm_apply
@[simp] lemma tensorAssoc_symm_apply
    (Q₁ : QuadraticForm R M₁) (Q₂ : QuadraticForm R M₂) (Q₃ : QuadraticForm R M₃)
    (x : M₁ ⊗[R] (M₂ ⊗[R] M₃)) :
    (tensorAssoc Q₁ Q₂ Q₃).symm x = (TensorProduct.assoc R M₁ M₂ M₃).symm x 
Arguments: {R : Type uR} {M₁ : Type uM₁} {M₂ : Type uM₂} {M₃ : Type uM₃} [CommRing R] [AddCommGroup M₁] [AddCommGroup M₂] [AddCommGroup M₃] [Module R M₁] [Module R M₂] [Module R M₃] [Invertible 2] (Q₁ : QuadraticForm R M₁) (Q₂ : QuadraticForm R M₂) (Q₃ : QuadraticForm R M₃) (x : M₁ ⊗[R] M₂ ⊗[R] M₃)
Goal: (Q₁.tensorAssoc Q₂ Q₃).symm x = (TensorProduct.assoc R M₁ M₂ M₃).symm x
-- QuadraticForm.comp_tensorRId_eq
theorem comp_tensorRId_eq (Q₁ : QuadraticForm R M₁) :
    Q₁.comp (TensorProduct.rid R M₁) = Q₁.tmul (sq (R := R)) 
Arguments: {R : Type uR} {M₁ : Type uM₁} [CommRing R] [AddCommGroup M₁] [Module R M₁] [Invertible 2] (Q₁ : QuadraticForm R M₁)
Goal: QuadraticMap.comp Q₁ ↑(TensorProduct.rid R M₁) = Q₁.tmul QuadraticMap.sq
-- QuadraticForm.tmul_tensorRId_apply
@[simp]
theorem tmul_tensorRId_apply
    (Q₁ : QuadraticForm R M₁) (x : M₁ ⊗[R] R) :
    Q₁ (TensorProduct.rid R M₁ x) = Q₁.tmul (sq (R := R)) x 
Arguments: {R : Type uR} {M₁ : Type uM₁} [CommRing R] [AddCommGroup M₁] [Module R M₁] [Invertible 2] (Q₁ : QuadraticForm R M₁) (x : M₁ ⊗[R] R)
Goal: Q₁ ((TensorProduct.rid R M₁) x) = (Q₁.tmul QuadraticMap.sq) x
-- QuadraticForm.tensorRId_toLinearEquiv
@[simps toLinearEquiv]
def tensorRId (Q₁ : QuadraticForm R M₁) :
    (Q₁.tmul (sq (R := R))).IsometryEquiv Q₁ 
Arguments: {R : Type uR} {M₁ : Type uM₁} [CommRing R] [AddCommGroup M₁] [Module R M₁] [Invertible 2] (Q₁ : QuadraticForm R M₁)
Goal: Q₁.tensorRId.toLinearEquiv = TensorProduct.rid R M₁
-- QuadraticForm.tensorRId_apply
@[simp] lemma tensorRId_apply (Q₁ : QuadraticForm R M₁) (x : M₁ ⊗[R] R) :
    tensorRId Q₁ x = TensorProduct.rid R M₁ x 
Arguments: {R : Type uR} {M₁ : Type uM₁} [CommRing R] [AddCommGroup M₁] [Module R M₁] [Invertible 2] (Q₁ : QuadraticForm R M₁) (x : M₁ ⊗[R] R)
Goal: Q₁.tensorRId x = (TensorProduct.rid R M₁) x
-- QuadraticForm.tensorRId_symm_apply
@[simp] lemma tensorRId_symm_apply (Q₁ : QuadraticForm R M₁) (x : M₁) :
    (tensorRId Q₁).symm x = (TensorProduct.rid R M₁).symm x 
Arguments: {R : Type uR} {M₁ : Type uM₁} [CommRing R] [AddCommGroup M₁] [Module R M₁] [Invertible 2] (Q₁ : QuadraticForm R M₁) (x : M₁)
Goal: Q₁.tensorRId.symm x = (TensorProduct.rid R M₁).symm x
-- QuadraticForm.comp_tensorLId_eq
theorem comp_tensorLId_eq (Q₂ : QuadraticForm R M₂) :
    Q₂.comp (TensorProduct.lid R M₂) = QuadraticForm.tmul (sq (R := R)) Q₂ 
Arguments: {R : Type uR} {M₂ : Type uM₂} [CommRing R] [AddCommGroup M₂] [Module R M₂] [Invertible 2] (Q₂ : QuadraticForm R M₂)
Goal: QuadraticMap.comp Q₂ ↑(TensorProduct.lid R M₂) = QuadraticForm.tmul QuadraticMap.sq Q₂
-- QuadraticForm.tmul_tensorLId_apply
@[simp]
theorem tmul_tensorLId_apply
    (Q₂ : QuadraticForm R M₂) (x : R ⊗[R] M₂) :
    Q₂ (TensorProduct.lid R M₂ x) = QuadraticForm.tmul (sq (R := R)) Q₂ x 
Arguments: {R : Type uR} {M₂ : Type uM₂} [CommRing R] [AddCommGroup M₂] [Module R M₂] [Invertible 2] (Q₂ : QuadraticForm R M₂) (x : R ⊗[R] M₂)
Goal: Q₂ ((TensorProduct.lid R M₂) x) = (QuadraticForm.tmul QuadraticMap.sq Q₂) x
-- QuadraticForm.tensorLId_toLinearEquiv
@[simps toLinearEquiv]
def tensorLId (Q₂ : QuadraticForm R M₂) :
    (QuadraticForm.tmul (sq (R := R)) Q₂).IsometryEquiv Q₂ 
Arguments: {R : Type uR} {M₂ : Type uM₂} [CommRing R] [AddCommGroup M₂] [Module R M₂] [Invertible 2] (Q₂ : QuadraticForm R M₂)
Goal: Q₂.tensorLId.toLinearEquiv = TensorProduct.lid R M₂
-- QuadraticForm.tensorLId_apply
@[simp] lemma tensorLId_apply (Q₂ : QuadraticForm R M₂) (x : R ⊗[R] M₂) :
    tensorLId Q₂ x = TensorProduct.lid R M₂ x 
Arguments: {R : Type uR} {M₂ : Type uM₂} [CommRing R] [AddCommGroup M₂] [Module R M₂] [Invertible 2] (Q₂ : QuadraticForm R M₂) (x : R ⊗[R] M₂)
Goal: Q₂.tensorLId x = (TensorProduct.lid R M₂) x
-- QuadraticForm.tensorLId_symm_apply
@[simp] lemma tensorLId_symm_apply (Q₂ : QuadraticForm R M₂) (x : M₂) :
    (tensorLId Q₂).symm x = (TensorProduct.lid R M₂).symm x 
Arguments: {R : Type uR} {M₂ : Type uM₂} [CommRing R] [AddCommGroup M₂] [Module R M₂] [Invertible 2] (Q₂ : QuadraticForm R M₂) (x : M₂)
Goal: Q₂.tensorLId.symm x = (TensorProduct.lid R M₂).symm x
-- LinearMap.BilinForm.mem_dualSubmodule
lemma mem_dualSubmodule {N : Submodule R M} {x} :
    x ∈ B.dualSubmodule N ↔ ∀ y ∈ N, B x y ∈ (1 : Submodule R S) 
Arguments: {R : Type u_1} {S : Type u_3} {M : Type u_2} [CommRing R] [Field S] [AddCommGroup M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M] (B : LinearMap.BilinForm S M) {N : Submodule R M} {x : M}
Goal: x ∈ B.dualSubmodule N ↔ ∀ y ∈ N, (B x) y ∈ 1
-- LinearMap.BilinForm.le_flip_dualSubmodule
lemma le_flip_dualSubmodule {N₁ N₂ : Submodule R M} :
    N₁ ≤ B.flip.dualSubmodule N₂ ↔ N₂ ≤ B.dualSubmodule N₁ 
Arguments: {R : Type u_1} {S : Type u_3} {M : Type u_2} [CommRing R] [Field S] [AddCommGroup M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M] (B : LinearMap.BilinForm S M) {N₁ N₂ : Submodule R M}
Goal: N₁ ≤ B.flip.dualSubmodule N₂ ↔ N₂ ≤ B.dualSubmodule N₁
-- LinearMap.BilinForm.dualSubmoduleParing_spec
@[simp]
lemma dualSubmoduleParing_spec {N : Submodule R M} (x : B.dualSubmodule N) (y : N) :
    algebraMap R S (B.dualSubmoduleParing x y) = B x y 
Arguments: {R : Type u_1} {S : Type u_3} {M : Type u_2} [CommRing R] [Field S] [AddCommGroup M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M] (B : LinearMap.BilinForm S M) {N : Submodule R M} (x : ↥(B.dualSubmodule N)) (y : ↥N)
Goal: (algebraMap R S) (B.dualSubmoduleParing x y) = (B ↑x) ↑y
-- LinearMap.BilinForm.dualSubmoduleToDual_apply_apply
-- TODO: Show that this is perfect when `N` is a lattice and `B` is nondegenerate.
@[simps]
noncomputable
def dualSubmoduleToDual [NoZeroSMulDivisors R S] (N : Submodule R M) :
    B.dualSubmodule N →ₗ[R] Module.Dual R N 
Arguments: {R : Type u_1} {S : Type u_2} {M : Type u_3} [CommRing R] [Field S] [AddCommGroup M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M] (B : LinearMap.BilinForm S M) [NoZeroSMulDivisors R S] (N : Submodule R M) (x : ↥(B.dualSubmodule N)) (y : ↥N)
Goal: ((B.dualSubmoduleToDual N) x) y = B.dualSubmoduleParing x y
-- LinearMap.BilinForm.dualSubmoduleToDual_injective
lemma dualSubmoduleToDual_injective (hB : B.Nondegenerate) [NoZeroSMulDivisors R S]
    (N : Submodule R M) (hN : Submodule.span S (N : Set M) = ⊤) :
    Function.Injective (B.dualSubmoduleToDual N) 
Arguments: {R : Type u_3} {S : Type u_1} {M : Type u_2} [CommRing R] [Field S] [AddCommGroup M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M] (B : LinearMap.BilinForm S M) (hB : B.Nondegenerate) [NoZeroSMulDivisors R S] (N : Submodule R M) (hN : Submodule.span S ↑N = ⊤)
Goal: Function.Injective ⇑(B.dualSubmoduleToDual N)
-- LinearMap.BilinForm.dualSubmodule_span_of_basis
lemma dualSubmodule_span_of_basis {ι} [Finite ι] [DecidableEq ι]
    (hB : B.Nondegenerate) (b : Basis ι S M) :
    B.dualSubmodule (Submodule.span R (Set.range b)) =
      Submodule.span R (Set.range <| B.dualBasis hB b) 
Arguments: {R : Type u_4} {S : Type u_2} {M : Type u_3} [CommRing R] [Field S] [AddCommGroup M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M] (B : LinearMap.BilinForm S M) {ι : Type u_1} [Finite ι] [DecidableEq ι] (hB : B.Nondegenerate) (b : Basis ι S M)
Goal: B.dualSubmodule (Submodule.span R (Set.range ⇑b)) = Submodule.span R (Set.range ⇑(B.dualBasis hB b))
-- LinearMap.BilinForm.dualSubmodule_dualSubmodule_flip_of_basis
lemma dualSubmodule_dualSubmodule_flip_of_basis {ι : Type*} [Finite ι]
    (hB : B.Nondegenerate) (b : Basis ι S M) :
    B.dualSubmodule (B.flip.dualSubmodule (Submodule.span R (Set.range b))) =
      Submodule.span R (Set.range b) 
Arguments: {R : Type u_4} {S : Type u_2} {M : Type u_3} [CommRing R] [Field S] [AddCommGroup M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M] (B : LinearMap.BilinForm S M) {ι : Type u_1} [Finite ι] (hB : B.Nondegenerate) (b : Basis ι S M)
Goal: B.dualSubmodule (B.flip.dualSubmodule (Submodule.span R (Set.range ⇑b))) = Submodule.span R (Set.range ⇑b)
-- LinearMap.BilinForm.dualSubmodule_flip_dualSubmodule_of_basis
lemma dualSubmodule_flip_dualSubmodule_of_basis {ι : Type*} [Finite ι]
    (hB : B.Nondegenerate) (b : Basis ι S M) :
    B.flip.dualSubmodule (B.dualSubmodule (Submodule.span R (Set.range b))) =
      Submodule.span R (Set.range b) 
Arguments: {R : Type u_4} {S : Type u_2} {M : Type u_3} [CommRing R] [Field S] [AddCommGroup M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M] (B : LinearMap.BilinForm S M) {ι : Type u_1} [Finite ι] (hB : B.Nondegenerate) (b : Basis ι S M)
Goal: B.flip.dualSubmodule (B.dualSubmodule (Submodule.span R (Set.range ⇑b))) = Submodule.span R (Set.range ⇑b)
-- LinearMap.BilinForm.dualSubmodule_dualSubmodule_of_basis
lemma dualSubmodule_dualSubmodule_of_basis
    {ι} [Finite ι] (hB : B.Nondegenerate) (hB' : B.IsSymm) (b : Basis ι S M) :
    B.dualSubmodule (B.dualSubmodule (Submodule.span R (Set.range b))) =
      Submodule.span R (Set.range b) 
Arguments: {R : Type u_4} {S : Type u_2} {M : Type u_3} [CommRing R] [Field S] [AddCommGroup M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M] (B : LinearMap.BilinForm S M) {ι : Type u_1} [Finite ι] (hB : B.Nondegenerate) (hB' : B.IsSymm) (b : Basis ι S M)
Goal: B.dualSubmodule (B.dualSubmodule (Submodule.span R (Set.range ⇑b))) = Submodule.span R (Set.range ⇑b)
-- LinearMap.BilinMap.tensorDistrib_tmul
@[simp]
theorem tensorDistrib_tmul (B₁ : BilinForm A M₁) (B₂ : BilinForm R M₂) (m₁ : M₁) (m₂ : M₂)
    (m₁' : M₁) (m₂' : M₂) :
    tensorDistrib R A (B₁ ⊗ₜ B₂) (m₁ ⊗ₜ m₂) (m₁' ⊗ₜ m₂')
      = B₂ m₂ m₂' • B₁ m₁ m₁' 
Arguments: {R : Type uR} {A : Type uA} {M₁ : Type uM₁} {M₂ : Type uM₂} [CommSemiring R] [CommSemiring A] [AddCommMonoid M₁] [AddCommMonoid M₂] [Algebra R A] [Module R M₁] [Module A M₁] [SMulCommClass R A M₁] [IsScalarTower R A M₁] [Module R M₂] (B₁ : LinearMap.BilinForm A M₁) (B₂ : LinearMap.BilinForm R M₂) (m₁ : M₁) (m₂ : M₂) (m₁' : M₁) (m₂' : M₂)
Goal: (((LinearMap.BilinMap.tensorDistrib R A) (B₁ ⊗ₜ[R] B₂)) (m₁ ⊗ₜ[R] m₂)) (m₁' ⊗ₜ[R] m₂') = (B₂ m₂) m₂' • (B₁ m₁) m₁'
-- LinearMap.IsSymm.tmul
lemma _root_.LinearMap.IsSymm.tmul {B₁ : BilinMap A M₁ A} {B₂ : BilinMap R M₂ R}
    (hB₁ : B₁.IsSymm) (hB₂ : B₂.IsSymm) : (B₁.tmul B₂).IsSymm 
Arguments: {R : Type uR} {A : Type uA} {M₁ : Type uM₁} {M₂ : Type uM₂} [CommSemiring R] [CommSemiring A] [AddCommMonoid M₁] [AddCommMonoid M₂] [Algebra R A] [Module R M₁] [Module A M₁] [SMulCommClass R A M₁] [IsScalarTower R A M₁] [Module R M₂] {B₁ : LinearMap.BilinMap A M₁ A} {B₂ : LinearMap.BilinMap R M₂ R} (hB₁ : LinearMap.IsSymm B₁) (hB₂ : LinearMap.IsSymm B₂)
Goal: LinearMap.IsSymm (B₁.tmul B₂)
-- LinearMap.BilinMap.baseChange_tmul
@[simp]
theorem baseChange_tmul (B₂ : BilinMap R M₂ R) (a : A) (m₂ : M₂)
    (a' : A) (m₂' : M₂) :
    B₂.baseChange A (a ⊗ₜ m₂) (a' ⊗ₜ m₂') = (B₂ m₂ m₂') • (a * a') 
Arguments: {R : Type uR} {A : Type uA} {M₂ : Type uM₂} [CommSemiring R] [CommSemiring A] [AddCommMonoid M₂] [Algebra R A] [Module R M₂] (B₂ : LinearMap.BilinMap R M₂ R) (a : A) (m₂ : M₂) (a' : A) (m₂' : M₂)
Goal: ((LinearMap.BilinMap.baseChange A B₂) (a ⊗ₜ[R] m₂)) (a' ⊗ₜ[R] m₂') = (B₂ m₂) m₂' • (a * a')
-- LinearMap.BilinMap.IsSymm.baseChange
lemma IsSymm.baseChange {B₂ : BilinForm R M₂} (hB₂ : B₂.IsSymm) : (B₂.baseChange A).IsSymm 
Arguments: {R : Type uR} (A : Type uA) {M₂ : Type uM₂} [CommSemiring R] [CommSemiring A] [AddCommMonoid M₂] [Algebra R A] [Module R M₂] {B₂ : LinearMap.BilinForm R M₂} (hB₂ : LinearMap.IsSymm B₂)
Goal: LinearMap.IsSymm (LinearMap.BilinMap.baseChange A B₂)
-- LinearMap.BilinMap.tensorDistribEquiv_tmul
@[simp]
theorem tensorDistribEquiv_tmul (B₁ : BilinForm R M₁) (B₂ : BilinForm R M₂) (m₁ : M₁) (m₂ : M₂)
    (m₁' : M₁) (m₂' : M₂) :
    tensorDistribEquiv R (M₁ := M₁) (M₂ := M₂) (B₁ ⊗ₜ[R] B₂) (m₁ ⊗ₜ m₂) (m₁' ⊗ₜ m₂')
      = B₁ m₁ m₁' * B₂ m₂ m₂' 
Arguments: {R : Type uR} {M₁ : Type uM₁} {M₂ : Type uM₂} [CommRing R] [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] [Module.Free R M₁] [Module.Finite R M₁] [Module.Free R M₂] [Module.Finite R M₂] (B₁ : LinearMap.BilinForm R M₁) (B₂ : LinearMap.BilinForm R M₂) (m₁ : M₁) (m₂ : M₂) (m₁' : M₁) (m₂' : M₂)
Goal: (((LinearMap.BilinMap.tensorDistribEquiv R) (B₁ ⊗ₜ[R] B₂)) (m₁ ⊗ₜ[R] m₂)) (m₁' ⊗ₜ[R] m₂') = (B₁ m₁) m₁' * (B₂ m₂) m₂'
-- LinearMap.BilinMap.tensorDistribEquiv_toLinearMap
@[simp]
theorem tensorDistribEquiv_toLinearMap :
    (tensorDistribEquiv R (M₁ := M₁) (M₂ := M₂)).toLinearMap = tensorDistrib R R 
Arguments: (R : Type uR) (M₁ : Type uM₁) (M₂ : Type uM₂) [CommRing R] [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] [Module.Free R M₁] [Module.Finite R M₁] [Module.Free R M₂] [Module.Finite R M₂]
Goal: ↑(LinearMap.BilinMap.tensorDistribEquiv R) = LinearMap.BilinMap.tensorDistrib R R
-- LinearMap.BilinMap.tensorDistribEquiv_apply
@[simp]
theorem tensorDistribEquiv_apply (B : BilinForm R M₁ ⊗ BilinForm R M₂) :
    tensorDistribEquiv R (M₁ := M₁) (M₂ := M₂) B = tensorDistrib R R B 
Arguments: {R : Type uR} {M₁ : Type uM₁} {M₂ : Type uM₂} [CommRing R] [AddCommGroup M₁] [AddCommGroup M₂] [Module R M₁] [Module R M₂] [Module.Free R M₁] [Module.Finite R M₁] [Module.Free R M₂] [Module.Finite R M₂] (B : LinearMap.BilinForm R M₁ ⊗[R] LinearMap.BilinForm R M₂)
Goal: (LinearMap.BilinMap.tensorDistribEquiv R) B = (LinearMap.BilinMap.tensorDistrib R R) B
-- Matrix.vandermonde_apply
@[simp]
theorem vandermonde_apply {n : ℕ} (v : Fin n → R) (i j) : vandermonde v i j = v i ^ (j : ℕ) 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} (v : Fin n → R) (i j : Fin n)
Goal: Matrix.vandermonde v i j = v i ^ ↑j
-- Matrix.vandermonde_cons
@[simp]
theorem vandermonde_cons {n : ℕ} (v0 : R) (v : Fin n → R) :
    vandermonde (Fin.cons v0 v : Fin n.succ → R) =
      Fin.cons (fun (j : Fin n.succ) => v0 ^ (j : ℕ)) fun i => Fin.cons 1
      fun j => v i * vandermonde v i j 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} (v0 : R) (v : Fin n → R)
Goal: Matrix.vandermonde (Fin.cons v0 v) =
  Fin.cons (fun j => v0 ^ ↑j) fun i => Fin.cons 1 fun j => v i * Matrix.vandermonde v i j
-- Matrix.vandermonde_succ
theorem vandermonde_succ {n : ℕ} (v : Fin n.succ → R) :
    vandermonde v =
      Fin.cons (fun (j : Fin n.succ) => v 0 ^ (j : ℕ)) fun i =>
        Fin.cons 1 fun j => v i.succ * vandermonde (Fin.tail v) i j 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} (v : Fin n.succ → R)
Goal: Matrix.vandermonde v =
  Fin.cons (fun j => v 0 ^ ↑j) fun i => Fin.cons 1 fun j => v i.succ * Matrix.vandermonde (Fin.tail v) i j
-- Matrix.vandermonde_mul_vandermonde_transpose
theorem vandermonde_mul_vandermonde_transpose {n : ℕ} (v w : Fin n → R) (i j) :
    (vandermonde v * (vandermonde w)ᵀ) i j = ∑ k : Fin n, (v i * w j) ^ (k : ℕ) 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} (v w : Fin n → R) (i j : Fin n)
Goal: (Matrix.vandermonde v * (Matrix.vandermonde w)ᵀ) i j = ∑ k : Fin n, (v i * w j) ^ ↑k
-- Matrix.vandermonde_transpose_mul_vandermonde
theorem vandermonde_transpose_mul_vandermonde {n : ℕ} (v : Fin n → R) (i j) :
    ((vandermonde v)ᵀ * vandermonde v) i j = ∑ k : Fin n, v k ^ (i + j : ℕ) 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} (v : Fin n → R) (i j : Fin n)
Goal: ((Matrix.vandermonde v)ᵀ * Matrix.vandermonde v) i j = ∑ k : Fin n, v k ^ (↑i + ↑j)
-- Matrix.det_vandermonde
theorem det_vandermonde {n : ℕ} (v : Fin n → R) :
    det (vandermonde v) = ∏ i : Fin n, ∏ j ∈ Ioi i, (v j - v i) 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} (v : Fin n → R)
Goal: (Matrix.vandermonde v).det = ∏ i : Fin n, ∏ j ∈ Finset.Ioi i, (v j - v i)
-- Matrix.det_vandermonde_eq_zero_iff
theorem det_vandermonde_eq_zero_iff [IsDomain R] {n : ℕ} {v : Fin n → R} :
    det (vandermonde v) = 0 ↔ ∃ i j : Fin n, v i = v j ∧ i ≠ j 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {n : ℕ} {v : Fin n → R}
Goal: (Matrix.vandermonde v).det = 0 ↔ ∃ i j, v i = v j ∧ i ≠ j
-- Matrix.det_vandermonde_ne_zero_iff
theorem det_vandermonde_ne_zero_iff [IsDomain R] {n : ℕ} {v : Fin n → R} :
    det (vandermonde v) ≠ 0 ↔ Function.Injective v 
Arguments: {R : Type u_1} [CommRing R] [IsDomain R] {n : ℕ} {v : Fin n → R}
Goal: (Matrix.vandermonde v).det ≠ 0 ↔ Function.Injective v
-- Matrix.det_vandermonde_add
@[simp]
theorem det_vandermonde_add {n : ℕ} (v : Fin n → R) (a : R) :
    (Matrix.vandermonde fun i ↦ v i + a).det = (Matrix.vandermonde v).det 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} (v : Fin n → R) (a : R)
Goal: (Matrix.vandermonde fun i => v i + a).det = (Matrix.vandermonde v).det
-- Matrix.det_vandermonde_sub
@[simp]
theorem det_vandermonde_sub {n : ℕ} (v : Fin n → R) (a : R) :
    (Matrix.vandermonde fun i ↦ v i - a).det = (Matrix.vandermonde v).det 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} (v : Fin n → R) (a : R)
Goal: (Matrix.vandermonde fun i => v i - a).det = (Matrix.vandermonde v).det
-- Matrix.eq_zero_of_forall_index_sum_pow_mul_eq_zero
theorem eq_zero_of_forall_index_sum_pow_mul_eq_zero {R : Type*} [CommRing R] [IsDomain R] {n : ℕ}
    {f v : Fin n → R} (hf : Function.Injective f)
    (hfv : ∀ j, (∑ i : Fin n, f j ^ (i : ℕ) * v i) = 0) : v = 0 
Arguments: {R : Type u_2} [CommRing R] [IsDomain R] {n : ℕ} {f v : Fin n → R} (hf : Function.Injective f) (hfv : ∀ (j : Fin n), ∑ i : Fin n, f j ^ ↑i * v i = 0)
Goal: v = 0
-- Matrix.eq_zero_of_forall_index_sum_mul_pow_eq_zero
theorem eq_zero_of_forall_index_sum_mul_pow_eq_zero {R : Type*} [CommRing R] [IsDomain R] {n : ℕ}
    {f v : Fin n → R} (hf : Function.Injective f) (hfv : ∀ j, (∑ i, v i * f j ^ (i : ℕ)) = 0) :
    v = 0 
Arguments: {R : Type u_2} [CommRing R] [IsDomain R] {n : ℕ} {f v : Fin n → R} (hf : Function.Injective f) (hfv : ∀ (j : Fin n), ∑ i : Fin n, v i * f j ^ ↑i = 0)
Goal: v = 0
-- Matrix.eq_zero_of_forall_pow_sum_mul_pow_eq_zero
theorem eq_zero_of_forall_pow_sum_mul_pow_eq_zero {R : Type*} [CommRing R] [IsDomain R] {n : ℕ}
    {f v : Fin n → R} (hf : Function.Injective f)
    (hfv : ∀ i : Fin n, (∑ j : Fin n, v j * f j ^ (i : ℕ)) = 0) : v = 0 
Arguments: {R : Type u_2} [CommRing R] [IsDomain R] {n : ℕ} {f v : Fin n → R} (hf : Function.Injective f) (hfv : ∀ (i : Fin n), ∑ j : Fin n, v j * f j ^ ↑i = 0)
Goal: v = 0
-- Matrix.eval_matrixOfPolynomials_eq_vandermonde_mul_matrixOfPolynomials
theorem eval_matrixOfPolynomials_eq_vandermonde_mul_matrixOfPolynomials {n : ℕ}
    (v : Fin n → R) (p : Fin n → R[X]) (h_deg : ∀ i, (p i).natDegree ≤ i) :
    Matrix.of (fun i j => ((p j).eval (v i))) =
    (Matrix.vandermonde v) * (Matrix.of (fun (i j : Fin n) => (p j).coeff i)) 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} (v : Fin n → R) (p : Fin n → Polynomial R) (h_deg : ∀ (i : Fin n), (p i).natDegree ≤ ↑i)
Goal: (Matrix.of fun i j => Polynomial.eval (v i) (p j)) = Matrix.vandermonde v * Matrix.of fun i j => (p j).coeff ↑i
-- Matrix.det_eval_matrixOfPolynomials_eq_det_vandermonde
theorem det_eval_matrixOfPolynomials_eq_det_vandermonde {n : ℕ} (v : Fin n → R) (p : Fin n → R[X])
    (h_deg : ∀ i, (p i).natDegree = i) (h_monic : ∀ i, Monic <| p i) :
    (Matrix.vandermonde v).det = (Matrix.of (fun i j => ((p j).eval (v i)))).det 
Arguments: {R : Type u_1} [CommRing R] {n : ℕ} (v : Fin n → R) (p : Fin n → Polynomial R) (h_deg : ∀ (i : Fin n), (p i).natDegree = ↑i) (h_monic : ∀ (i : Fin n), (p i).Monic)
Goal: (Matrix.vandermonde v).det = (Matrix.of fun i j => Polynomial.eval (v i) (p j)).det
-- _private.Mathlib.LinearAlgebra.Multilinear.FiniteDimensional.0.MultilinearMap.free_and_finite_fin
private theorem free_and_finite_fin (n : ℕ) (N : Fin n → Type*) [∀ i, AddCommGroup (N i)]
    [∀ i, Module R (N i)] [∀ i, Module.Finite R (N i)] [∀ i, Module.Free R (N i)] :
    Module.Free R (MultilinearMap R N M₂) ∧ Module.Finite R (MultilinearMap R N M₂) 
Arguments: {R : Type u_2} {M₂ : Type u_3} [CommRing R] [AddCommGroup M₂] [Module R M₂] [Module.Finite R M₂] [Module.Free R M₂] (n : ℕ) (N : Fin n → Type u_5) [(i : Fin n) → AddCommGroup (N i)] [(i : Fin n) → Module R (N i)] [∀ (i : Fin n), Module.Finite R (N i)] [∀ (i : Fin n), Module.Free R (N i)]
Goal: Module.Free R (MultilinearMap R N M₂) ∧ Module.Finite R (MultilinearMap R N M₂)
-- _private.Mathlib.LinearAlgebra.Multilinear.FiniteDimensional.0.MultilinearMap.free_and_finite
private theorem free_and_finite :
    Module.Free R (MultilinearMap R M₁ M₂) ∧ Module.Finite R (MultilinearMap R M₁ M₂) 
Arguments: {ι : Type u_1} {R : Type u_2} {M₂ : Type u_3} {M₁ : ι → Type u_4} [Finite ι] [CommRing R] [AddCommGroup M₂] [Module R M₂] [Module.Finite R M₂] [Module.Free R M₂] [(i : ι) → AddCommGroup (M₁ i)] [(i : ι) → Module R (M₁ i)] [∀ (i : ι), Module.Finite R (M₁ i)] [∀ (i : ι), Module.Free R (M₁ i)]
Goal: Module.Free R (MultilinearMap R M₁ M₂) ∧ Module.Finite R (MultilinearMap R M₁ M₂)
-- MultilinearMap.domCoprod_apply
@[simps apply]
def domCoprod (a : MultilinearMap R (fun _ : ι₁ => N) N₁)
    (b : MultilinearMap R (fun _ : ι₂ => N) N₂) :
    MultilinearMap R (fun _ : ι₁ ⊕ ι₂ => N) (N₁ ⊗[R] N₂) 
Arguments: {R : Type u_1} {ι₁ : Type u_2} {ι₂ : Type u_3} [CommSemiring R] {N₁ : Type u_6} [AddCommMonoid N₁] [Module R N₁] {N₂ : Type u_7} [AddCommMonoid N₂] [Module R N₂] {N : Type u_8} [AddCommMonoid N] [Module R N] (a : MultilinearMap R (fun x => N) N₁) (b : MultilinearMap R (fun x => N) N₂) (v : ι₁ ⊕ ι₂ → N)
Goal: (a.domCoprod b) v = (a fun i => v (Sum.inl i)) ⊗ₜ[R] b fun i => v (Sum.inr i)
-- MultilinearMap.domCoprod'_apply
@[simp]
theorem domCoprod'_apply (a : MultilinearMap R (fun _ : ι₁ => N) N₁)
    (b : MultilinearMap R (fun _ : ι₂ => N) N₂) : domCoprod' (a ⊗ₜ[R] b) = domCoprod a b 
Arguments: {R : Type u_1} {ι₁ : Type u_2} {ι₂ : Type u_3} [CommSemiring R] {N₁ : Type u_6} [AddCommMonoid N₁] [Module R N₁] {N₂ : Type u_7} [AddCommMonoid N₂] [Module R N₂] {N : Type u_8} [AddCommMonoid N] [Module R N] (a : MultilinearMap R (fun x => N) N₁) (b : MultilinearMap R (fun x => N) N₂)
Goal: MultilinearMap.domCoprod' (a ⊗ₜ[R] b) = a.domCoprod b
-- MultilinearMap.domCoprod_domDomCongr_sumCongr
theorem domCoprod_domDomCongr_sumCongr (a : MultilinearMap R (fun _ : ι₁ => N) N₁)
    (b : MultilinearMap R (fun _ : ι₂ => N) N₂) (σa : ι₁ ≃ ι₃) (σb : ι₂ ≃ ι₄) :
    (a.domCoprod b).domDomCongr (σa.sumCongr σb) =
      (a.domDomCongr σa).domCoprod (b.domDomCongr σb) 
Arguments: {R : Type u_1} {ι₁ : Type u_2} {ι₂ : Type u_3} {ι₃ : Type u_4} {ι₄ : Type u_5} [CommSemiring R] {N₁ : Type u_6} [AddCommMonoid N₁] [Module R N₁] {N₂ : Type u_7} [AddCommMonoid N₂] [Module R N₂] {N : Type u_8} [AddCommMonoid N] [Module R N] (a : MultilinearMap R (fun x => N) N₁) (b : MultilinearMap R (fun x => N) N₂) (σa : ι₁ ≃ ι₃) (σb : ι₂ ≃ ι₄)
Goal: MultilinearMap.domDomCongr (σa.sumCongr σb) (a.domCoprod b) =
  (MultilinearMap.domDomCongr σa a).domCoprod (MultilinearMap.domDomCongr σb b)
-- Basis.ext_multilinear_fin
theorem Basis.ext_multilinear_fin {f g : MultilinearMap R M M₂} {ι₁ : Fin n → Type*}
    (e : ∀ i, Basis (ι₁ i) R (M i))
    (h : ∀ v : ∀ i, ι₁ i, (f fun i => e i (v i)) = g fun i => e i (v i)) : f = g 
Arguments: {R : Type u_1} {n : ℕ} {M : Fin n → Type u_3} {M₂ : Type u_4} [CommSemiring R] [AddCommMonoid M₂] [(i : Fin n) → AddCommMonoid (M i)] [(i : Fin n) → Module R (M i)] [Module R M₂] {f g : MultilinearMap R M M₂} {ι₁ : Fin n → Type u_6} (e : (i : Fin n) → Basis (ι₁ i) R (M i)) (h : ∀ (v : (i : Fin n) → ι₁ i), (f fun i => (e i) (v i)) = g fun i => (e i) (v i))
Goal: f = g