Dot product of two vectors #
This file contains some results on the map dotProduct
, which maps two
vectors v w : n → R
to the sum of the entrywise products v i * w i
.
Main results #
dotProduct_stdBasis_one
: the dot product ofv
with thei
th standard basis vector isv i
dotProduct_eq_zero_iff
: ifv
's dot product with allw
is zero, thenv
is zero
Tags #
matrix
theorem
dotProduct_nonneg_of_nonneg
{n : Type u_2}
{R : Type u_4}
[Semiring R]
[PartialOrder R]
[IsOrderedRing R]
[Fintype n]
{v w : n → R}
(hv : 0 ≤ v)
(hw : 0 ≤ w)
:
theorem
dotProduct_le_dotProduct_of_nonneg_right
{n : Type u_2}
{R : Type u_4}
[Semiring R]
[PartialOrder R]
[IsOrderedRing R]
[Fintype n]
{u v w : n → R}
(huv : u ≤ v)
(hw : 0 ≤ w)
:
theorem
dotProduct_le_dotProduct_of_nonneg_left
{n : Type u_2}
{R : Type u_4}
[Semiring R]
[PartialOrder R]
[IsOrderedRing R]
[Fintype n]
{u v w : n → R}
(huv : u ≤ v)
(hw : 0 ≤ w)
:
@[simp]
theorem
dotProduct_self_eq_zero
{n : Type u_2}
{R : Type u_4}
[Fintype n]
[Ring R]
[LinearOrder R]
[IsStrictOrderedRing R]
{v : n → R}
:
@[simp]
theorem
dotProduct_star_self_nonneg
{n : Type u_2}
{R : Type u_4}
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
(v : n → R)
:
Note that this applies to ℂ
via RCLike.toStarOrderedRing
.
@[simp]
theorem
dotProduct_self_star_nonneg
{n : Type u_2}
{R : Type u_4}
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
(v : n → R)
:
Note that this applies to ℂ
via RCLike.toStarOrderedRing
.
@[simp]
theorem
dotProduct_star_self_eq_zero
{n : Type u_2}
{R : Type u_4}
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
{v : n → R}
:
Note that this applies to ℂ
via RCLike.toStarOrderedRing
.
@[simp]
theorem
dotProduct_self_star_eq_zero
{n : Type u_2}
{R : Type u_4}
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
{v : n → R}
:
Note that this applies to ℂ
via RCLike.toStarOrderedRing
.
@[simp]
theorem
Matrix.conjTranspose_mul_self_eq_zero
{m : Type u_1}
{R : Type u_4}
[Fintype m]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
{n : Type u_5}
{A : Matrix m n R}
:
@[simp]
theorem
Matrix.self_mul_conjTranspose_eq_zero
{n : Type u_2}
{R : Type u_4}
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
{m : Type u_5}
{A : Matrix m n R}
:
theorem
Matrix.conjTranspose_mul_self_mul_eq_zero
{m : Type u_1}
{n : Type u_2}
{R : Type u_4}
[Fintype m]
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
{p : Type u_5}
(A : Matrix m n R)
(B : Matrix n p R)
:
theorem
Matrix.self_mul_conjTranspose_mul_eq_zero
{m : Type u_1}
{n : Type u_2}
{R : Type u_4}
[Fintype m]
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
{p : Type u_5}
(A : Matrix m n R)
(B : Matrix m p R)
:
theorem
Matrix.mul_self_mul_conjTranspose_eq_zero
{m : Type u_1}
{n : Type u_2}
{R : Type u_4}
[Fintype m]
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
{p : Type u_5}
(A : Matrix m n R)
(B : Matrix p m R)
:
theorem
Matrix.mul_conjTranspose_mul_self_eq_zero
{m : Type u_1}
{n : Type u_2}
{R : Type u_4}
[Fintype m]
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
{p : Type u_5}
(A : Matrix m n R)
(B : Matrix p n R)
:
theorem
Matrix.conjTranspose_mul_self_mulVec_eq_zero
{m : Type u_1}
{n : Type u_2}
{R : Type u_4}
[Fintype m]
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
(A : Matrix m n R)
(v : n → R)
:
theorem
Matrix.self_mul_conjTranspose_mulVec_eq_zero
{m : Type u_1}
{n : Type u_2}
{R : Type u_4}
[Fintype m]
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
(A : Matrix m n R)
(v : m → R)
:
theorem
Matrix.vecMul_conjTranspose_mul_self_eq_zero
{m : Type u_1}
{n : Type u_2}
{R : Type u_4}
[Fintype m]
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
(A : Matrix m n R)
(v : n → R)
:
theorem
Matrix.vecMul_self_mul_conjTranspose_eq_zero
{m : Type u_1}
{n : Type u_2}
{R : Type u_4}
[Fintype m]
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
(A : Matrix m n R)
(v : m → R)
:
@[simp]
theorem
Matrix.dotProduct_star_self_pos_iff
{n : Type u_2}
{R : Type u_4}
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
{v : n → R}
:
Note that this applies to ℂ
via RCLike.toStarOrderedRing
.
@[simp]
theorem
Matrix.dotProduct_self_star_pos_iff
{n : Type u_2}
{R : Type u_4}
[Fintype n]
[PartialOrder R]
[NonUnitalRing R]
[StarRing R]
[StarOrderedRing R]
[NoZeroDivisors R]
{v : n → R}
:
Note that this applies to ℂ
via RCLike.toStarOrderedRing
.