@@ -28,6 +28,7 @@ Chapter 6 of Wolf's lecture notes.
2828* `IsCPMap.isPositiveMap`: completely positive maps are positive
2929* `IsChannel`: completely positive + trace-preserving (CPTP)
3030* `IsPositiveMap.map_isHermitian`: positive maps preserve Hermiticity
31+ * `matrix_isClosed_posSemidef`: the positive semidefinite cone is closed
3132* `densityMatrices_isCompact`: the set of density matrices is compact
3233* `densityMatrices_isConvex`: the set of density matrices is convex
3334* `IsChannel.map_densityMatrices`: channels map density matrices to density matrices
@@ -142,8 +143,8 @@ def densityMatrices (D : ℕ) : Set (Matrix (Fin D) (Fin D) ℂ) :=
142143 ρ ∈ densityMatrices D ↔ ρ.PosSemidef ∧ trace ρ = 1 := Iff.rfl
143144
144145/-- The quadratic form `X ↦ star v ⬝ᵥ X.mulVec v` is continuous. -/
145- private lemma continuous_quadraticForm (v : Fin D → ℂ) :
146- Continuous (fun X : Matrix (Fin D) (Fin D) ℂ => star v ⬝ᵥ X.mulVec v) :=
146+ private lemma continuous_quadraticForm {m : Type *} [Fintype m] (v : m → ℂ) :
147+ Continuous (fun X : Matrix m m ℂ => star v ⬝ᵥ X.mulVec v) :=
147148 Continuous.dotProduct continuous_const (Continuous.matrix_mulVec continuous_id continuous_const)
148149
149150/-! ### Auxiliary lemmas for boundedness -/
@@ -235,23 +236,32 @@ theorem posSemidef_trace_bounded_isBounded (c : ℝ) :
235236 pow_le_pow_left₀ (norm_nonneg _) (hentry i j) 2
236237 _ = (↑D * c) ^ 2 := by simp [sum_const]; ring
237238
238- /-- The PSD cone is closed.
239+ /-- The PSD cone is closed for matrices over any finite index type .
239240
240241Proof: `PosSemidef X ↔ X.IsHermitian ∧ ∀ v, 0 ≤ star v ⬝ᵥ X.mulVec v`.
241242- `{X | X.IsHermitian}` is closed (continuous `conjTranspose`).
242243- Each `{X | 0 ≤ star v ⬝ᵥ X.mulVec v}` is closed (preimage of closed
243244 nonneg cone under continuous quadratic form). -/
244- theorem isClosed_posSemidef :
245- IsClosed {X : Matrix (Fin D) (Fin D) ℂ | X.PosSemidef} := by
246- have : {X : Matrix (Fin D) (Fin D) ℂ | X.PosSemidef}
247- = {X | X.IsHermitian} ∩ ⋂ (v : Fin D → ℂ), {X | 0 ≤ star v ⬝ᵥ X.mulVec v} := by
248- ext X; simp only [Set.mem_setOf_eq, Set.mem_inter_iff, Set.mem_iInter,
245+ theorem matrix_isClosed_posSemidef {m : Type *} [Finite m] :
246+ IsClosed {X : Matrix m m ℂ | X.PosSemidef} := by
247+ classical
248+ letI := Fintype.ofFinite m
249+ have : {X : Matrix m m ℂ | X.PosSemidef}
250+ = {X | X.IsHermitian} ∩
251+ ⋂ (v : m → ℂ), {X | 0 ≤ star v ⬝ᵥ X.mulVec v} := by
252+ ext X
253+ simp only [Set.mem_setOf_eq, Set.mem_inter_iff, Set.mem_iInter,
249254 Matrix.posSemidef_iff_dotProduct_mulVec]
250255 rw [this]
251256 exact (isClosed_eq continuous_star continuous_id).inter
252257 (isClosed_iInter fun v =>
253258 (isClosed_le continuous_const continuous_id).preimage (continuous_quadraticForm v))
254259
260+ /-- The PSD cone is closed on `Fin D`-indexed matrices. -/
261+ theorem isClosed_posSemidef :
262+ IsClosed {X : Matrix (Fin D) (Fin D) ℂ | X.PosSemidef} :=
263+ matrix_isClosed_posSemidef
264+
255265/-- The set of density matrices is compact (Heine-Borel).
256266
257267Closed: intersection of the closed PSD cone and the closed set `{trace = 1}`.
0 commit comments