Theorem: Matrix.PosSemidef.dotProduct_mulVec_zero_iff
File: Mathlib/LinearAlgebra/Matrix/PosDef.lean

tactic: constructor
state_before: m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix n n 𝕜
hA : A.PosSemidef
x : n → 𝕜
⊢ star x ⬝ᵥ A *ᵥ x = 0 ↔ A *ᵥ x = 0
state_after: case mp
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix n n 𝕜
hA : A.PosSemidef
x : n → 𝕜
⊢ star x ⬝ᵥ A *ᵥ x = 0 → A *ᵥ x = 0

case mpr
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix n n 𝕜
hA : A.PosSemidef
x : n → 𝕜
⊢ A *ᵥ x = 0 → star x ⬝ᵥ A *ᵥ x = 0

tactic: obtain ⟨B, rfl⟩ := posSemidef_iff_eq_transpose_mul_self.mp hA
state_before: case mp
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix n n 𝕜
hA : A.PosSemidef
x : n → 𝕜
⊢ star x ⬝ᵥ A *ᵥ x = 0 → A *ᵥ x = 0
state_after: case mp.intro
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
x : n → 𝕜
B : Matrix n n 𝕜
hA : (Bᴴ * B).PosSemidef
⊢ star x ⬝ᵥ (Bᴴ * B) *ᵥ x = 0 → (Bᴴ * B) *ᵥ x = 0

tactic: rw [← Matrix.mulVec_mulVec, dotProduct_mulVec,
  vecMul_conjTranspose, star_star, dotProduct_star_self_eq_zero]
state_before: case mp.intro
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
x : n → 𝕜
B : Matrix n n 𝕜
hA : (Bᴴ * B).PosSemidef
⊢ star x ⬝ᵥ (Bᴴ * B) *ᵥ x = 0 → (Bᴴ * B) *ᵥ x = 0
state_after: case mp.intro
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
x : n → 𝕜
B : Matrix n n 𝕜
hA : (Bᴴ * B).PosSemidef
⊢ B *ᵥ x = 0 → Bᴴ *ᵥ B *ᵥ x = 0

tactic: intro h0
state_before: case mp.intro
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
x : n → 𝕜
B : Matrix n n 𝕜
hA : (Bᴴ * B).PosSemidef
⊢ B *ᵥ x = 0 → Bᴴ *ᵥ B *ᵥ x = 0
state_after: case mp.intro
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
x : n → 𝕜
B : Matrix n n 𝕜
hA : (Bᴴ * B).PosSemidef
h0 : B *ᵥ x = 0
⊢ Bᴴ *ᵥ B *ᵥ x = 0

tactic: rw [h0, mulVec_zero]
state_before: case mp.intro
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
x : n → 𝕜
B : Matrix n n 𝕜
hA : (Bᴴ * B).PosSemidef
h0 : B *ᵥ x = 0
⊢ Bᴴ *ᵥ B *ᵥ x = 0
state_after: no goals

tactic: intro h0
state_before: case mpr
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix n n 𝕜
hA : A.PosSemidef
x : n → 𝕜
⊢ A *ᵥ x = 0 → star x ⬝ᵥ A *ᵥ x = 0
state_after: case mpr
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix n n 𝕜
hA : A.PosSemidef
x : n → 𝕜
h0 : A *ᵥ x = 0
⊢ star x ⬝ᵥ A *ᵥ x = 0

tactic: rw [h0, dotProduct_zero]
state_before: case mpr
m : Type u_1
n : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : RCLike 𝕜
A : Matrix n n 𝕜
hA : A.PosSemidef
x : n → 𝕜
h0 : A *ᵥ x = 0
⊢ star x ⬝ᵥ A *ᵥ x = 0
state_after: no goals