Physlib Documentation

QuantumInfo.ForMathlib.HermitianMat.CFC

Matrix operations on HermitianMats with the CFC

theorem HermitianMat.isSelfAdjoint {d : Type u_1} {๐•œ : Type u_3} [RCLike ๐•œ] (A : HermitianMat d ๐•œ) :
IsSelfAdjoint โ†‘A
theorem HermitianMat.continuousOn_finite {ฮฑ : Type u_5} {ฮฒ : Type u_6} (f : ฮฑ โ†’ ฮฒ) (S : Set ฮฑ) [TopologicalSpace ฮฑ] [TopologicalSpace ฮฒ] [T1Space ฮฑ] [Finite โ†‘S] :
@[simp]
theorem HermitianMat.conjTranspose_cfc {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
(cfc f โ†‘A).conjTranspose = cfc f โ†‘A
def HermitianMat.cfc {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
HermitianMat d ๐•œ
Equations
Instances For
    theorem HermitianMat.cfc_eq {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
    A.cfc f = โŸจcfc f โ†‘A, โ‹ฏโŸฉ
    @[simp]
    theorem HermitianMat.mat_cfc {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
    โ†‘(A.cfc f) = cfc f โ†‘A
    theorem HermitianMat.cfc_eq_cfc_iff_eqOn {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} (f g : โ„ โ†’ โ„) :
    A.cfc f = A.cfc g โ†” Set.EqOn f g (spectrum โ„ โ†‘A)
    theorem HermitianMat.cfc_congr {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} {f g : โ„ โ†’ โ„} (hfg : Set.EqOn f g (spectrum โ„ โ†‘A)) :
    A.cfc f = A.cfc g
    theorem HermitianMat.cfc_congr_of_nonneg {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} {f g : โ„ โ†’ โ„} (hA : 0 โ‰ค A) (hfg : Set.EqOn f g (Set.Ici 0)) :
    A.cfc f = A.cfc g

    Version of cfc_congr specialized to PSD matrices.

    theorem HermitianMat.cfc_congr_of_posDef {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} {f g : โ„ โ†’ โ„} (hA : (โ†‘A).PosDef) (hfg : Set.EqOn f g (Set.Ioi 0)) :
    A.cfc f = A.cfc g

    Version of cfc_congr specialized to positive definite matrices.

    theorem Commute.cfc_left {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (f : โ„ โ†’ โ„) {A B : HermitianMat d ๐•œ} (hAB : Commute โ†‘A โ†‘B) :
    Commute โ†‘(A.cfc f) โ†‘B
    theorem Commute.cfc_right {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (f : โ„ โ†’ โ„) {A B : HermitianMat d ๐•œ} (hAB : Commute โ†‘A โ†‘B) :
    Commute โ†‘A โ†‘(B.cfc f)
    theorem HermitianMat.cfc_commute {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A B : HermitianMat d ๐•œ} (f g : โ„ โ†’ โ„) (hAB : Commute โ†‘A โ†‘B) :
    Commute โ†‘(A.cfc f) โ†‘(B.cfc g)
    theorem HermitianMat.cfc_self_commute {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f g : โ„ โ†’ โ„) :
    Commute โ†‘(A.cfc f) โ†‘(A.cfc g)
    @[simp]
    theorem HermitianMat.cfc_reindex {d : Type u_1} {dโ‚‚ : Type u_2} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [Fintype dโ‚‚] [DecidableEq dโ‚‚] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) (e : d โ‰ƒ dโ‚‚) :
    (A.reindex e).cfc f = (A.cfc f).reindex e

    Reindexing a matrix commutes with applying the CFC.

    theorem HermitianMat.spectrum_cfc_eq_image {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
    spectrum โ„ โ†‘(A.cfc f) = f '' spectrum โ„ โ†‘A
    theorem HermitianMat.cfc_toMat_eq_sum_smul_proj {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
    โ†‘(A.cfc f) = โˆ‘ i : d, f (โ‹ฏ.eigenvalues i) โ€ข (โ†‘โ‹ฏ.eigenvectorUnitary * Matrix.single i i 1 * (โ†‘โ‹ฏ.eigenvectorUnitary).conjTranspose)

    Spectral decomposition of A.cfc f as a sum of scaled projections (matrix version).

    theorem HermitianMat.cfc_eigenvalues {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (f : โ„ โ†’ โ„) (A : HermitianMat d ๐•œ) :
    โˆƒ (e : d โ‰ƒ d), โ‹ฏ.eigenvalues = f โˆ˜ โ‹ฏ.eigenvalues โˆ˜ โ‡‘e

    Here we give HermitianMat versions of many cfc theorems, like cfc_id, cfc_sub, cfc_comp, etc. We need these because (as above) HermitianMat.cfc is different from _root_.cfc.

    @[simp]
    theorem HermitianMat.cfc_id {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) :
    A.cfc id = A
    @[simp]
    theorem HermitianMat.cfc_id' {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) :
    (A.cfc fun (x : โ„) => x) = A
    theorem HermitianMat.cfc_add {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f g : โ„ โ†’ โ„) :
    A.cfc (f + g) = A.cfc f + A.cfc g
    theorem HermitianMat.cfc_add_apply {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f g : โ„ โ†’ โ„) :
    (A.cfc fun (x : โ„) => f x + g x) = A.cfc f + A.cfc g
    theorem HermitianMat.cfc_sub {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f g : โ„ โ†’ โ„) :
    A.cfc (f - g) = A.cfc f - A.cfc g
    theorem HermitianMat.cfc_sub_apply {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f g : โ„ โ†’ โ„) :
    (A.cfc fun (x : โ„) => f x - g x) = A.cfc f - A.cfc g
    theorem HermitianMat.cfc_neg {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
    A.cfc (-f) = -A.cfc f
    theorem HermitianMat.cfc_neg_apply {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
    (A.cfc fun (x : โ„) => -f x) = -A.cfc f
    theorem HermitianMat.mat_cfc_mul {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f g : โ„ โ†’ โ„) :
    โ†‘(A.cfc (f * g)) = โ†‘(A.cfc f) * โ†‘(A.cfc g)

    We don't have a direct analog of cfc_mul, since we can't generally multiply to HermitianMat's to get another one, so the theorem statement wouldn't be well-typed. But, we can say that the matrices are always equal. See cfc_conj for the coe-free analog to multiplication.

    theorem HermitianMat.mat_cfc_mul_apply {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f g : โ„ โ†’ โ„) :
    โ†‘(A.cfc fun (x : โ„) => f x * g x) = โ†‘(A.cfc f) * โ†‘(A.cfc g)
    theorem HermitianMat.cfc_comp {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f g : โ„ โ†’ โ„) :
    A.cfc (g โˆ˜ f) = (A.cfc f).cfc g
    theorem HermitianMat.cfc_comp_apply {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f g : โ„ โ†’ โ„) :
    (A.cfc fun (x : โ„) => g (f x)) = (A.cfc f).cfc g
    theorem HermitianMat.cfc_conj {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f g : โ„ โ†’ โ„) :
    (conj โ†‘(A.cfc g)) (A.cfc f) = A.cfc (f * g ^ 2)
    @[simp]
    theorem HermitianMat.cfc_diagonal {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (f : โ„ โ†’ โ„) (g : d โ†’ โ„) :
    (diagonal ๐•œ g).cfc f = diagonal ๐•œ (f โˆ˜ g)
    theorem HermitianMat.cfc_conj_unitary {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) (U : โ†ฅ(Matrix.unitaryGroup d ๐•œ)) :
    ((conj โ†‘U) A).cfc f = (conj โ†‘U) (A.cfc f)
    @[simp]
    theorem HermitianMat.cfc_const {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (r : โ„) :
    (A.cfc fun (x : โ„) => r) = r โ€ข 1
    @[simp]
    theorem HermitianMat.cfc_const_mul_id {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (r : โ„) :
    (A.cfc fun (x : โ„) => r * x) = r โ€ข A
    @[simp]
    theorem HermitianMat.cfc_const_mul {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) (r : โ„) :
    (A.cfc fun (x : โ„) => r * f x) = r โ€ข A.cfc f
    @[simp]
    theorem HermitianMat.cfc_apply_zero {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (f : โ„ โ†’ โ„) :
    @[simp]
    theorem HermitianMat.cfc_apply_one {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (f : โ„ โ†’ โ„) :
    theorem HermitianMat.cfc_pow {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) {n : โ„•} :
    (A.cfc fun (x : โ„) => x ^ n) = A ^ n
    theorem HermitianMat.cfc_nonneg_iff {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
    0 โ‰ค A.cfc f โ†” โˆ€ (i : d), 0 โ‰ค f (โ‹ฏ.eigenvalues i)
    theorem HermitianMat.cfc_posDef {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
    (โ†‘(A.cfc f)).PosDef โ†” โˆ€ (i : d), 0 < f (โ‹ฏ.eigenvalues i)
    theorem HermitianMat.cfc_nonneg_of_nonneg {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} {f : โ„ โ†’ โ„} (hA : 0 โ‰ค A) (hf : โˆ€ i โ‰ฅ 0, 0 โ‰ค f i) :

    If a rael function preserves nonnegativity, the CFC preserves PSDness.

    theorem HermitianMat.cfc_nonSingular {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) (hf : โˆ€ (i : d), f (โ‹ฏ.eigenvalues i) โ‰  0) :
    theorem HermitianMat.trace_mul_cfc {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (f : โ„ โ†’ โ„) :
    (โ†‘A * โ†‘(A.cfc f)).trace = โ†‘(โˆ‘ i : d, โ‹ฏ.eigenvalues i * f (โ‹ฏ.eigenvalues i))
    theorem HermitianMat.norm_eq_sum_eigenvalues_sq {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) :
    โ€–Aโ€– ^ 2 = โˆ‘ i : d, โ‹ฏ.eigenvalues i ^ 2
    theorem HermitianMat.lt_smul_of_norm_lt {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} {r : โ„} (h : โ€–Aโ€– โ‰ค r) :
    theorem HermitianMat.ball_subset_Icc {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : HermitianMat d ๐•œ) (r : โ„) :
    theorem HermitianMat.spectrum_subset_of_mem_Icc {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A B : HermitianMat d ๐•œ) :
    โˆƒ (a : โ„) (b : โ„), โˆ€ (x : HermitianMat d ๐•œ), A โ‰ค x โˆง x โ‰ค B โ†’ spectrum โ„ โ†‘x โІ Set.Icc a b
    theorem HermitianMat.cfc_continuous {d : Type u_1} [Fintype d] [DecidableEq d] {f : โ„ โ†’ โ„} (hf : Continuous f) :
    Continuous fun (x : HermitianMat d โ„‚) => x.cfc f
    theorem HermitianMat.Matrix.PosDef.spectrum_subset_Ioi {d : Type u_5} {๐•œ : Type u_6} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : Matrix d d ๐•œ} (hA : A.PosDef) :
    theorem HermitianMat.continuous_cfc_fun {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {X : Type u_4} [TopologicalSpace X] (A : HermitianMat d ๐•œ) {f : X โ†’ โ„ โ†’ โ„} (hf : โˆ€ (i : โ„), Continuous fun (x : X) => f x i) :
    Continuous fun (x : X) => A.cfc (f x)

    If f is a continuous family of functions parameterized by x, then (fun x => A.cfc (f x)) is also continuous.

    theorem HermitianMat.continuousOn_cfc_fun {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {X : Type u_4} [TopologicalSpace X] (A : HermitianMat d ๐•œ) {f : X โ†’ โ„ โ†’ โ„} {S : Set X} {T : Set โ„} (hf : โˆ€ i โˆˆ T, ContinuousOn (fun (x : X) => f x i) S) (hA : spectrum โ„ โ†‘A โІ T) :
    ContinuousOn (fun (x : X) => A.cfc (f x)) S

    ContinuousOn variant for when all the matrices (A x) have a spectrum in a set T, and f is continuous on a set S.

    theorem HermitianMat.norm_cfc_le_sqrt_card_mul_bound {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f : โ„ โ†’ โ„} {C : โ„} (hC : 0 โ‰ค C) (hf : โˆ€ x โˆˆ spectrum โ„ โ†‘A, โ€–f xโ€– โ‰ค C) :

    Bound the Frobenius norm of a functional calculus application.

    theorem HermitianMat.norm_cfc_sub_cfc_le_sqrt_card {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f g : โ„ โ†’ โ„} :
    โ€–A.cfc f - A.cfc gโ€– โ‰ค โˆšโ†‘(Fintype.card d) * โจ† x โˆˆ spectrum โ„ โ†‘A, โ€–f x - g xโ€–
    theorem HermitianMat.norm_cfc_sub_le_of_sup_le {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f g : โ„ โ†’ โ„} {T : Set โ„} {ฮต : โ„} (hT : spectrum โ„ โ†‘A โІ T) (hฮต : 0 โ‰ค ฮต) (h_sup : โˆ€ x โˆˆ T, โ€–f x - g xโ€– โ‰ค ฮต) :
    theorem HermitianMat.dist_lt_of_continuous' {X : Type u_5} [TopologicalSpace X] {f : X โ†’ โ„ โ†’ โ„} {S : Set X} {T : Set โ„} (hT : IsCompact T) (hf : ContinuousOn (fun (p : X ร— โ„) => f p.1 p.2) (S ร—หข T)) {xโ‚€ : X} (hxโ‚€ : xโ‚€ โˆˆ S) {ฮต : โ„} (hฮต : 0 < ฮต) :
    โˆƒ U โˆˆ nhds xโ‚€, โˆ€ x โˆˆ U โˆฉ S, โˆ€ t โˆˆ T, โ€–f x t - f xโ‚€ tโ€– < ฮต

    If $f$ is jointly continuous on $S \times T$ and $T$ is compact, then $x \mapsto f(x, \cdot)$ is continuous into the space of bounded functions on $T$ with the uniform norm.

    The functional calculus is continuous on matrices with spectrum in a compact set.

    theorem HermitianMat.continuous_cfc_joint_compact {X : Type u_5} {d : Type u_6} [TopologicalSpace X] [Fintype d] [DecidableEq d] {f : X โ†’ โ„ โ†’ โ„} {A : X โ†’ HermitianMat d โ„‚} {S : Set X} {T : Set โ„} (hT : IsCompact T) (hf : ContinuousOn (fun (p : X ร— โ„) => f p.1 p.2) (S ร—หข T)) (hAโ‚ : โˆ€ x โˆˆ S, spectrum โ„ โ†‘(A x) โІ T) (hAโ‚‚ : ContinuousOn (fun (x : X) => A x) S) :
    ContinuousOn (fun (x : X) => (A x).cfc (f x)) S

    The spectrum of a HermitianMat is contained in the closed ball of radius โ€–Aโ€– around 0.

    theorem HermitianMat.spectrum_subset_of_isOpen {d : Type u_1} [Fintype d] [DecidableEq d] (Aโ‚€ : HermitianMat d โ„‚) (U : Set โ„) (hU : IsOpen U) (hAU : spectrum โ„ โ†‘Aโ‚€ โІ U) :
    theorem HermitianMat.continuousWithinAt_cfc_of_continuousOn {d : Type u_1} [Fintype d] [DecidableEq d] {T : Set โ„} {g : โ„ โ†’ โ„} {Aโ‚€ : HermitianMat d โ„‚} (hg : ContinuousOn g T) (hAโ‚€ : spectrum โ„ โ†‘Aโ‚€ โІ T) :
    theorem HermitianMat.dist_lt_of_continuous_spectrum {d : Type u_1} [Fintype d] [DecidableEq d] {X : Type u_5} [TopologicalSpace X] {f : X โ†’ โ„ โ†’ โ„} {A : X โ†’ HermitianMat d โ„‚} {S : Set X} {T : Set โ„} (hf : ContinuousOn (fun (p : X ร— โ„) => f p.1 p.2) (S ร—หข T)) (hAโ‚ : โˆ€ x โˆˆ S, spectrum โ„ โ†‘(A x) โІ T) (hAโ‚‚ : ContinuousOn (fun (x : X) => A x) S) {xโ‚€ : X} (hxโ‚€ : xโ‚€ โˆˆ S) {ฮต : โ„} (hฮต : 0 < ฮต) :
    โˆƒ U โˆˆ nhds xโ‚€, โˆ€ y โˆˆ U โˆฉ S, โˆ€ t โˆˆ spectrum โ„ โ†‘(A y), โ€–f y t - f xโ‚€ tโ€– < ฮต
    theorem HermitianMat.continuous_cfc_joint {X : Type u_5} {d : Type u_6} [TopologicalSpace X] [Fintype d] [DecidableEq d] {f : X โ†’ โ„ โ†’ โ„} {A : X โ†’ HermitianMat d โ„‚} {S : Set X} {T : Set โ„} (hf : ContinuousOn (fun (p : X ร— โ„) => f p.1 p.2) (S ร—หข T)) (hAโ‚ : โˆ€ x โˆˆ S, spectrum โ„ โ†‘(A x) โІ T) (hAโ‚‚ : ContinuousOn (fun (x : X) => A x) S) :
    ContinuousOn (fun (x : X) => (A x).cfc (f x)) S
    theorem HermitianMat.continuousOn_cfc_fun_nonsingular {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {X : Type u_4} [TopologicalSpace X] (A : HermitianMat d ๐•œ) {f : X โ†’ โ„ โ†’ โ„} {S : Set X} (hf : โˆ€ (i : โ„), i โ‰  0 โ†’ ContinuousOn (fun (x : X) => f x i) S) [A.NonSingular] :
    ContinuousOn (fun (x : X) => A.cfc (f x)) S

    Specialization of continuousOn_cfc_fun for nonsingular matrices.

    theorem HermitianMat.continuousOn_cfc_fun_nonneg {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {X : Type u_4} [TopologicalSpace X] (A : HermitianMat d ๐•œ) {f : X โ†’ โ„ โ†’ โ„} {S : Set X} (hf : โˆ€ i โ‰ฅ 0, ContinuousOn (fun (x : X) => f x i) S) (hA : 0 โ‰ค A) :
    ContinuousOn (fun (x : X) => A.cfc (f x)) S

    Specialization of continuousOn_cfc_fun for positive semidefinite matrices.

    theorem HermitianMat.continuousOn_cfc_fun_posDef {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {X : Type u_4} [TopologicalSpace X] (A : HermitianMat d ๐•œ) {f : X โ†’ โ„ โ†’ โ„} {S : Set X} (hf : โˆ€ i > 0, ContinuousOn (fun (x : X) => f x i) S) (hA : (โ†‘A).PosDef) :
    ContinuousOn (fun (x : X) => A.cfc (f x)) S

    Specialization of continuousOn_cfc_fun for positive definite matrices.

    theorem HermitianMat.inv_cfc_eq_cfc_inv {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} (f : โ„ โ†’ โ„) (hf : โˆ€ (i : d), f (โ‹ฏ.eigenvalues i) โ‰  0) :
    (A.cfc f)โปยน = A.cfc fun (u : โ„) => (f u)โปยน

    The inverse of the CFC is the CFC of the inverse function.

    theorem HermitianMat.cfc_inv {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} [A.NonSingular] :
    theorem HermitianMat.integral_toMat {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [RCLike ๐•œ] (A : โ„ โ†’ HermitianMat d ๐•œ) (Tโ‚ Tโ‚‚ : โ„) {ฮผ : MeasureTheory.Measure โ„} (hA : IntervalIntegrable A ฮผ Tโ‚ Tโ‚‚) :
    โ†‘(โˆซ (t : โ„) in Tโ‚..Tโ‚‚, A t โˆ‚ฮผ) = โˆซ (t : โ„) in Tโ‚..Tโ‚‚, โ†‘(A t) โˆ‚ฮผ

    The integral of a Hermitian matrix function commutes with toMat.

    theorem HermitianMat.intervalIntegrable_sum_smul_const {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (Tโ‚ Tโ‚‚ : โ„) {ฮผ : MeasureTheory.Measure โ„} (g : โ„ โ†’ d โ†’ โ„) (P : d โ†’ Matrix d d ๐•œ) (hg : โˆ€ (i : d), IntervalIntegrable (fun (t : โ„) => g t i) ฮผ Tโ‚ Tโ‚‚) :
    IntervalIntegrable (fun (t : โ„) => โˆ‘ i : d, g t i โ€ข P i) ฮผ Tโ‚ Tโ‚‚

    A sum of scaled constant matrices is integrable if the scalar functions are integrable.

    theorem HermitianMat.intervalIntegrable_toMat_iff {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (A : โ„ โ†’ HermitianMat d ๐•œ) (Tโ‚ Tโ‚‚ : โ„) {ฮผ : MeasureTheory.Measure โ„} :
    IntervalIntegrable (fun (t : โ„) => โ†‘(A t)) ฮผ Tโ‚ Tโ‚‚ โ†” IntervalIntegrable A ฮผ Tโ‚ Tโ‚‚

    A function to Hermitian matrices is integrable iff its matrix values are integrable.

    theorem HermitianMat.integrable_cfc {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} (Tโ‚ Tโ‚‚ : โ„) (f : โ„ โ†’ โ„ โ†’ โ„) {ฮผ : MeasureTheory.Measure โ„} (hf : โˆ€ (i : d), IntervalIntegrable (fun (t : โ„) => f t (โ‹ฏ.eigenvalues i)) ฮผ Tโ‚ Tโ‚‚) :
    IntervalIntegrable (fun (t : โ„) => A.cfc (f t)) ฮผ Tโ‚ Tโ‚‚

    The CFC of an integrable function family is integrable.

    theorem HermitianMat.integral_cfc_eq_cfc_integral {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} (Tโ‚ Tโ‚‚ : โ„) {ฮผ : MeasureTheory.Measure โ„} (f : โ„ โ†’ โ„ โ†’ โ„) (hf : โˆ€ (i : d), IntervalIntegrable (fun (t : โ„) => f t (โ‹ฏ.eigenvalues i)) ฮผ Tโ‚ Tโ‚‚) :
    โˆซ (t : โ„) in Tโ‚..Tโ‚‚, A.cfc (f t) โˆ‚ฮผ = A.cfc fun (u : โ„) => โˆซ (t : โ„) in Tโ‚..Tโ‚‚, f t u โˆ‚ฮผ

    The integral of the CFC is the CFC of the integral.

    theorem HermitianMat.cfc_pos_of_pos {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} {f : โ„ โ†’ โ„} (hA : 0 < A) (hf : โˆ€ i > 0, 0 < f i) (hfโ‚‚ : 0 โ‰ค f 0) :
    0 < A.cfc f
    theorem Commute.exists_HermitianMat_cfc {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A B : HermitianMat d ๐•œ} (hAB : Commute โ†‘A โ†‘B) :
    โˆƒ (C : HermitianMat d ๐•œ), (โˆƒ (f : โ„ โ†’ โ„), A = C.cfc f) โˆง โˆƒ (g : โ„ โ†’ โ„), B = C.cfc g

    If two matrices A and B commute, then they is a common matrix with which they are both CFCs of. This is a variant of the common theorem that "commuting matrices can be simultaneously diagonalized."

    theorem HermitianMat.cfc_le_cfc_of_PosDef {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] (g : โ„ โ†’ โ„) {A : HermitianMat d ๐•œ} (f : โ„ โ†’ โ„) (hfg : โˆ€ (i : โ„), 0 < i โ†’ f i โ‰ค g i) (hA : (โ†‘A).PosDef) :
    A.cfc f โ‰ค A.cfc g
    theorem HermitianMat.cfc_le_cfc_of_commute_monoOn {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A B : HermitianMat d ๐•œ} {f : โ„ โ†’ โ„} (hf : MonotoneOn f (Set.Ioi 0)) (hABโ‚ : Commute โ†‘A โ†‘B) (hABโ‚‚ : A โ‰ค B) (hA : (โ†‘A).PosDef) (hB : (โ†‘B).PosDef) :
    A.cfc f โ‰ค B.cfc f
    theorem HermitianMat.cfc_le_cfc_of_commute {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A B : HermitianMat d ๐•œ} (f : โ„ โ†’ โ„) (hf : Monotone f) (hABโ‚ : Commute โ†‘A โ†‘B) (hABโ‚‚ : A โ‰ค B) :
    A.cfc f โ‰ค B.cfc f

    TODO: See above

    theorem HermitianMat.inv_ge_one_of_le_one {d : Type u_1} {๐•œ : Type u_3} [Fintype d] [DecidableEq d] [RCLike ๐•œ] {A : HermitianMat d ๐•œ} (hA : (โ†‘A).PosDef) (h : A โ‰ค 1) :
    theorem HermitianMat.trace_cfc_eq {d : Type u_1} [Fintype d] [DecidableEq d] (A : HermitianMat d โ„‚) (f : โ„ โ†’ โ„) :
    (A.cfc f).trace = โˆ‘ i : d, f (โ‹ฏ.eigenvalues i)

    The trace of cfc(f, A) equals the sum of f applied to eigenvalues.

    theorem HermitianMat.mulVec_eq_zero_iff_inner_eigenvector_zero {d : Type u_1} [Fintype d] [DecidableEq d] (A : HermitianMat d โ„‚) (x : EuclideanSpace โ„‚ d) :
    (โ†‘A).mulVec x.ofLp = 0 โ†” โˆ€ (i : d), โ‹ฏ.eigenvalues i โ‰  0 โ†’ inner โ„‚ (โ‹ฏ.eigenvectorBasis i) x = 0
    theorem HermitianMat.cfc_mulVec_expansion {d : Type u_1} [Fintype d] [DecidableEq d] (A : HermitianMat d โ„‚) (f : โ„ โ†’ โ„) (x : EuclideanSpace โ„‚ d) :
    (โ†‘(A.cfc f)).mulVec x.ofLp = (โˆ‘ i : d, โ†‘(f (โ‹ฏ.eigenvalues i)) โ€ข inner โ„‚ (โ‹ฏ.eigenvectorBasis i) x โ€ข โ‹ฏ.eigenvectorBasis i).ofLp
    theorem HermitianMat.ker_cfc_le_ker_on_set {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f : โ„ โ†’ โ„} {s : Set โ„} (hs : spectrum โ„ โ†‘A โІ s) (h : โˆ€ i โˆˆ s, f i = 0 โ†’ i = 0) :
    theorem HermitianMat.ker_cfc_le_ker {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f : โ„ โ†’ โ„} (h : โˆ€ (i : โ„), f i = 0 โ†’ i = 0) :
    theorem HermitianMat.ker_cfc_le_ker_nonneg {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f : โ„ โ†’ โ„} (hA : 0 โ‰ค A) (h : โˆ€ i โ‰ฅ 0, f i = 0 โ†’ i = 0) :
    theorem HermitianMat.ker_le_ker_cfc_on_set {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f : โ„ โ†’ โ„} {s : Set โ„} (hs : spectrum โ„ โ†‘A โІ s) (h : โˆ€ i โˆˆ s, i = 0 โ†’ f i = 0) :
    theorem HermitianMat.ker_le_ker_cfc {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f : โ„ โ†’ โ„} (h : โˆ€ (i : โ„), i = 0 โ†’ f i = 0) :
    theorem HermitianMat.ker_le_ker_cfc_nonneg {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f : โ„ โ†’ โ„} (hA : 0 โ‰ค A) (h : โˆ€ i โ‰ฅ 0, i = 0 โ†’ f i = 0) :
    theorem HermitianMat.ker_cfc_eq_ker {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f : โ„ โ†’ โ„} (h : โˆ€ (i : โ„), f i = 0 โ†” i = 0) :
    (A.cfc f).ker = A.ker
    theorem HermitianMat.ker_cfc_eq_ker_nonneg {d : Type u_1} [Fintype d] [DecidableEq d] {A : HermitianMat d โ„‚} {f : โ„ โ†’ โ„} (hA : 0 โ‰ค A) (h : โˆ€ i โ‰ฅ 0, f i = 0 โ†” i = 0) :
    (A.cfc f).ker = A.ker