@@ -249,6 +249,31 @@ theorem PosSemidef.trace_eq_zero_iff {A : Matrix n n 𝕜} (hA : A.PosSemidef) :
249249 (by simpa using hA.eigenvalues_nonneg), Finset.mem_univ, true_imp_iff] at h
250250 exact funext_iff.eq ▸ hA.isHermitian.eigenvalues_eq_zero_iff.mp <| h
251251
252+ section conjugate
253+ variable [DecidableEq n] {U x : Matrix n n R}
254+
255+ /-- For an invertible matrix `U`, `star U * x * U` is positive semi-definite iff `x` is.
256+ This works on any ⋆-ring with a partial order.
257+
258+ See `IsUnit.conjugate_nonneg_iff'` for a similar statement for star-ordered rings. -/
259+ theorem IsUnit.posSemidef_conjugate_iff' (hU : IsUnit U) :
260+ PosSemidef (star U * x * U) ↔ x.PosSemidef := by
261+ simp_rw [PosSemidef, isHermitian_iff_isSelfAdjoint, hU.isSelfAdjoint_conjugate_iff',
262+ and_congr_right_iff, ← mulVec_mulVec, dotProduct_mulVec, star_eq_conjTranspose, ← star_mulVec,
263+ ← dotProduct_mulVec]
264+ obtain ⟨V, hV⟩ := hU.exists_right_inv
265+ exact fun _ => ⟨fun H y => by simpa [hV] using H (V *ᵥ y), fun H _ => H _⟩
266+
267+ open Matrix in
268+ /-- For an invertible matrix `U`, `U * x * star U` is positive semi-definite iff `x` is.
269+ This works on any ⋆-ring with a partial order.
270+
271+ See `IsUnit.conjugate_nonneg_iff` for a similar statement for star-ordered rings. -/
272+ theorem IsUnit.posSemidef_conjugate_iff (hU : IsUnit U) :
273+ PosSemidef (U * x * star U) ↔ x.PosSemidef := by simpa using hU.star.posSemidef_conjugate_iff'
274+
275+ end conjugate
276+
252277/-- The matrix `vecMulVec a (star a)` is always positive semi-definite. -/
253278theorem posSemidef_vecMulVec_self_star [StarOrderedRing R] (a : n → R) :
254279 (vecMulVec a (star a)).PosSemidef := by
@@ -470,6 +495,38 @@ theorem _root_.Matrix.posDef_inv_iff [DecidableEq n] {M : Matrix n n K} :
470495
471496end Field
472497
498+ section conjugate
499+ variable [DecidableEq n] {x U : Matrix n n R}
500+
501+ /-- For an invertible matrix `U`, `star U * x * U` is positive definite iff `x` is.
502+ This works on any ⋆-ring with a partial order.
503+
504+ See `IsUnit.isStrictlyPositive_conjugate_iff'` for a similar statement for star-ordered rings.
505+ For matrices, positive definiteness is equivalent to strict positivity when the underlying field is
506+ `ℝ` or `ℂ` (see `Matrix.isStrictlyPositive_iff_posDef`). -/
507+ theorem _root_.Matrix.IsUnit.posDef_conjugate_iff' (hU : IsUnit U) :
508+ PosDef (star U * x * U) ↔ x.PosDef := by
509+ simp_rw [PosDef, isHermitian_iff_isSelfAdjoint, hU.isSelfAdjoint_conjugate_iff',
510+ and_congr_right_iff, ← mulVec_mulVec, dotProduct_mulVec, star_eq_conjTranspose, ← star_mulVec,
511+ ← dotProduct_mulVec]
512+ obtain ⟨V, hV, hV2⟩ := isUnit_iff_exists.mp hU
513+ have hV3 (y : n → R) (hy : y ≠ 0 ) : U *ᵥ y ≠ 0 := fun h => by simpa [hy, hV2] using congr(V *ᵥ $h)
514+ have hV4 (y : n → R) (hy : y ≠ 0 ) : V *ᵥ y ≠ 0 := fun h => by simpa [hy, hV] using congr(U *ᵥ $h)
515+ exact fun _ => ⟨fun h x hx => by simpa [hV] using h _ (hV4 _ hx), fun h x hx => h _ (hV3 _ hx)⟩
516+
517+ open Matrix in
518+ /-- For an invertible matrix `U`, `U * x * star U` is positive definite iff `x` is.
519+ This works on any ⋆-ring with a partial order.
520+
521+ See `IsUnit.isStrictlyPositive_conjugate_iff` for a similar statement for star-ordered rings.
522+ For matrices, positive definiteness is equivalent to strict positivity when the underlying field is
523+ `ℝ` or `ℂ` (see `Matrix.isStrictlyPositive_iff_posDef`). -/
524+ theorem _root_.Matrix.IsUnit.posDef_conjugate_iff (hU : IsUnit U) :
525+ PosDef (U * x * star U) ↔ x.PosDef := by
526+ simpa using hU.star.posDef_conjugate_iff'
527+
528+ end conjugate
529+
473530section SchurComplement
474531
475532variable [StarOrderedRing R']
0 commit comments