Zulip Chat Archive

Stream: general

Topic: vector dotproduct with summation


victoria (May 13 2024 at 20:47):

I'm stuck on showing the following simple example: vector dot product a sum of vectors = sum of vector dot product.

import Mathlib.Data.Matrix.Basic
import Mathlib.Data.Matrix.Reflection
import Mathlib.Data.Matrix.RowCol
import Mathlib.Algebra.BigOperators.Finprod
import Mathlib.Algebra.BigOperators.Basic
open BigOperators
open Finset
open Matrix

example (v : Fin n  ) (w : Fin m  (Fin n  )) : v ⬝ᵥ  i, w i =  i, v ⬝ᵥ w i := by
  sorry

victoria (May 13 2024 at 20:51):

update code

import Mathlib.Analysis.InnerProductSpace.PiL2
import Mathlib.Data.Matrix.Basic
import Mathlib.Data.Matrix.Reflection
import Mathlib.Data.Matrix.RowCol
import Mathlib.Algebra.BigOperators.Finprod
import Mathlib.Algebra.BigOperators.Basic
open BigOperators
open Finset
open Matrix


variable(m :  ) (n :  )
example (v : Fin n  ) (w : Fin m  (Fin n  )) : v ⬝ᵥ  i, w i =  i, v ⬝ᵥ w i := by
  sorry

Eric Wieser (May 13 2024 at 20:58):

(note that set_option autoImplicit falsewould have given you a clearer error for the first code)

Eric Wieser (May 13 2024 at 21:08):

@loogle Matrix.dot_product, Finset.sum

loogle (May 13 2024 at 21:08):

:exclamation: unknown identifier 'Matrix.dot_product'
Did you mean "Matrix.dot_product", Finset.sum?

Eric Wieser (May 13 2024 at 21:09):

@loogle  Matrix.dotProduct, Finset.sum

loogle (May 13 2024 at 21:09):

:search: Matrix.dotProduct_one, Matrix.one_dotProduct, and 5 more

Martin Dvořák (May 13 2024 at 21:09):

variable {m n : }
example (v : Fin n  ) (A : Fin m  (Fin n  )) : v ⬝ᵥ  i, A i =  i, v ⬝ᵥ A i := by
  convert_to v ⬝ᵥ (1 ᵥ* A) = (A *ᵥ v) ⬝ᵥ 1
  · unfold Matrix.vecMul Matrix.dotProduct
    aesop
  · congr
    simp [Matrix.mulVec]
    ext
    simp [Matrix.dotProduct, mul_comm]
  rw [Matrix.dotProduct_comm _ 1, Matrix.dotProduct_mulVec, Matrix.dotProduct_comm]

Eric Wieser (May 13 2024 at 21:11):

example (v : Fin n  ) (w : Fin m  (Fin n  )) : v ⬝ᵥ  i, w i =  i, v ⬝ᵥ w i :=
  map_sum
    { toFun := dotProduct v
      map_add' := dotProduct_add v
      map_zero' := dotProduct_zero v : _ →+ _ } _ _

Eric Wieser (May 13 2024 at 21:12):

loogle said:

:search: Matrix.dotProduct_one, Matrix.one_dotProduct, and 5 more

This lemma is evidently missing; want to contribute (a more general version of) it to mathlib?

Richard Copley (May 13 2024 at 21:40):

import Mathlib.Tactic

open BigOperators Matrix

variable {m α β : Type*} [Fintype m] [NonUnitalNonAssocSemiring α]

nonrec def Matrix.dotProduct_addHom (v : m  α) : (m  α) →+ α where
  toFun := dotProduct v
  map_add' := dotProduct_add v
  map_zero' := dotProduct_zero v

theorem Matrix.dotProduct_sum (v : m  α) (w : β  m  α) (s : Finset β) :
    v ⬝ᵥ  i in s, w i =  i in s, v ⬝ᵥ w i :=
  map_sum (dotProduct_addHom v) _ _

variable (m : ) (n : )
example (v : Fin n  ) (w : Fin m  Fin n  ) : v ⬝ᵥ  i, w i =  i, v ⬝ᵥ w i := by
  rw? says rw [dotProduct_sum]
      -- "no goals"

Last updated: May 02 2025 at 03:31 UTC