mathlib3 documentation

monlib / linear_algebra.my_ips.mat_ips

The inner product space on finite dimensional C*-algebras #

This file contains some basic results on the inner product space on finite dimensional C*-algebras.

theorem linear_functional_right_mul {R : Type u_1} {A : Type u_2} [comm_semiring R] [semiring A] [algebra R A] [star_semigroup A] {φ : A →ₗ[R] R} (x y z : A) :

A lemma that states the right multiplication property of a linear functional.

theorem linear_functional_left_mul {R : Type u_1} {A : Type u_2} [comm_semiring R] [semiring A] [algebra R A] [star_semigroup A] {φ : A →ₗ[R] R} (x y z : A) :

A lemma that states the left multiplication property of a linear functional.

def module.dual.pi.matrix_block {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (ψ : Π (i : k), module.dual (matrix (s i) (s i) )) (i : k) :
matrix (s i) (s i)

A function that returns the direct sum of matrices for each index of type 'i'.

Equations
def module.dual.pi.matrix {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (ψ : Π (i : k), matrix (s i) (s i) →ₗ[] ) :
matrix (Σ (i : k), s i) (Σ (i : k), s i)

A function that returns a direct sum matrix.

Equations
theorem inner_pi_eq_sum {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (x y : Π (i : k), matrix (s i) (s i) ) :
has_inner.inner x y = finset.univ.sum (λ (i : k), has_inner.inner (x i) (y i))

A lemma that states the inner product of two direct sum matrices is the sum of the inner products of their components.

theorem module.dual.pi.matrix_block_apply {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} {i : k} :
def star_alg_equiv.pi {𝕜 : Type u_2} [is_R_or_C 𝕜] {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (f : Π (i : k), matrix (s i) (s i) 𝕜 ≃⋆ₐ[𝕜] matrix (s i) (s i) 𝕜) :
(Π (i : k), matrix (s i) (s i) 𝕜) ≃⋆ₐ[𝕜] Π (i : k), matrix (s i) (s i) 𝕜

A function that returns a star algebra equivalence for each index of type 'i'.

Equations
theorem star_alg_equiv.pi_apply {𝕜 : Type u_2} [is_R_or_C 𝕜] {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (f : Π (i : k), matrix (s i) (s i) 𝕜 ≃⋆ₐ[𝕜] matrix (s i) (s i) 𝕜) (x : Π (i : k), matrix (s i) (s i) 𝕜) (i : k) :
(star_alg_equiv.pi f) x i = (f i) (x i)
noncomputable def star_alg_equiv.pi.unitary {𝕜 : Type u_2} [is_R_or_C 𝕜] {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (f : Π (i : k), matrix (s i) (s i) 𝕜 ≃⋆ₐ[𝕜] matrix (s i) (s i) 𝕜) (i : k) :

the unitary element from the star algebraic equivalence

Equations
theorem star_alg_equiv.pi.unitary_apply {𝕜 : Type u_2} [is_R_or_C 𝕜] {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (f : Π (i : k), matrix (s i) (s i) 𝕜 ≃⋆ₐ[𝕜] matrix (s i) (s i) 𝕜) (a : k) :
theorem star_alg_equiv.of_pi_is_inner {𝕜 : Type u_2} [is_R_or_C 𝕜] {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_3} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (f : Π (i : k), matrix (s i) (s i) 𝕜 ≃⋆ₐ[𝕜] matrix (s i) (s i) 𝕜) :

any $^*$-isomorphism on $\bigoplus_i M_{n_i}$ is an inner automorphism

def incl_pi {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {i : k} (x : s i ) :
(Σ (j : k), s j)
Equations
def excl_pi {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (x : (Σ (j : k), s j) ) (i : k) :
s i
Equations
theorem module.dual.pi.apply'' {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (ψ : Π (i : k), matrix (s i) (s i) →ₗ[] ) (x : Π (i : k), matrix (s i) (s i) ) :
theorem star_alg_equiv.pi_is_trace_preserving {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (f : Π (i : k), matrix (s i) (s i) ≃⋆ₐ[] matrix (s i) (s i) ) (x : Π (i : k), matrix (s i) (s i) ) :
theorem star_alg_equiv.pi_symm_apply_apply {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (f : Π (i : k), matrix (s i) (s i) ≃⋆ₐ[] matrix (s i) (s i) ) (x : Π (i : k), matrix (s i) (s i) ) :
(star_alg_equiv.pi (λ (i : k), (f i).symm)) ((star_alg_equiv.pi f) x) = x
theorem module.dual.pi.apply_eq_of {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (ψ : Π (i : k), module.dual (matrix (s i) (s i) )) (x : Π (i : k), matrix (s i) (s i) ) (h : (a : Π (i : k), matrix ((λ (i : k), s i) i) ((λ (i : k), s i) i) ), (module.dual.pi ψ) a = (matrix.block_diagonal' x * matrix.block_diagonal' a).trace) :
theorem star_alg_equiv.pi_symm_apply_eq {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (f : Π (i : k), matrix (s i) (s i) ≃⋆ₐ[] matrix (s i) (s i) ) (x y : Π (i : k), matrix (s i) (s i) ) :
(star_alg_equiv.pi (λ (i : k), (f i).symm)) x = y x = (star_alg_equiv.pi f) y
theorem unitary.inj_mul {A : Type u_1} [monoid A] [star_semigroup A] (U : (unitary A)) (x y : A) :
x = y x * U = y * U

Section single_block #

The adjoint of a star-algebraic equivalence $f$ on matrix algebras is given by $$f^*\colon x \mapsto f^{-1}(x Q) Q^{-1},$$ where $Q$ is hφ.matrix.

Let f be a star-algebraic equivalence on matrix algebras. Then tfae:

  • f φ.matrix = φ.matrix,
  • f.adjoint = f⁻¹,
  • φ ∘ f = φ,
  • ∀ x y, ⟪f x, f y⟫_ℂ = ⟪x, y⟫_ℂ,
  • ∀ x, ‖f x‖ = ‖x‖,
  • φ.matrix commutes with f.unitary.
@[protected]
noncomputable def module.dual.is_faithful_pos_map.basis {n : Type u_3} [decidable_eq n] [fintype n] {φ : module.dual (matrix n n )} (hφ : φ.is_faithful_pos_map) :
basis (n × n) (matrix n n )
Equations
@[protected]
theorem module.dual.is_faithful_pos_map.basis_apply {n : Type u_3} [decidable_eq n] [fintype n] {φ : module.dual (matrix n n )} (hφ : φ.is_faithful_pos_map) (ij : n × n) :
(hφ.basis) ij = (matrix.std_basis_matrix ij.fst ij.snd 1).mul (_.rpow (-(1 / 2)))
@[protected]
Equations
@[protected]
Equations
@[protected]
theorem module.dual.is_faithful_pos_map.basis_repr_apply {n : Type u_3} [decidable_eq n] [fintype n] {φ : module.dual (matrix n n )} [hφ : fact φ.is_faithful_pos_map] (x : matrix n n ) (ij : n × n) :
((_.basis.repr) x) ij = has_inner.inner ((_.basis) ij) x
@[protected]
theorem module.dual.is_faithful_pos_map.to_matrix_symm_apply {n : Type u_3} [decidable_eq n] [fintype n] {φ : module.dual (matrix n n )} [hφ : fact φ.is_faithful_pos_map] (x : matrix (n × n) (n × n) ) :
(_.to_matrix.symm) x = finset.univ.sum (λ (i : n), finset.univ.sum (λ (j : n), finset.univ.sum (λ (k : n), finset.univ.sum (λ (l : n), x (i, j) (k, l) (rank_one ((_.basis) (i, j)) ((_.basis) (k, l)))))))
theorem module.dual.eq_rank_one_of_faithful_pos_map {n : Type u_3} [decidable_eq n] [fintype n] {φ : module.dual (matrix n n )} [hφ : fact φ.is_faithful_pos_map] (x : matrix n n →ₗ[] matrix n n ) :
x = finset.univ.sum (λ (i : n), finset.univ.sum (λ (j : n), finset.univ.sum (λ (k : n), finset.univ.sum (λ (l : n), (_.to_matrix) x (i, j) (k, l) (rank_one ((_.basis) (i, j)) ((_.basis) (k, l)))))))

Section direct_sum #

theorem linear_map.sum_single_comp_proj {R : Type u_1} {ι : Type u_2} [fintype ι] [decidable_eq ι] [semiring R] {φ : ι Type u_3} [Π (i : ι), add_comm_monoid (φ i)] [Π (i : ι), module R (φ i)] :
theorem linear_map.lrsum_eq_single_proj_lrcomp {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] (f : (Π (i : k), matrix (s i) (s i) ) →ₗ[] Π (i : k), matrix (s i) (s i) ) :
theorem module.dual.pi.is_faithful_pos_map.inner_eq {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (x y : Π (i : k), matrix (s i) (s i) ) :
theorem module.dual.pi.is_faithful_pos_map.inner_eq' {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (x y : Π (i : k), matrix (s i) (s i) ) :
has_inner.inner x y = finset.univ.sum (λ (i : k), (((ψ i).matrix.mul (x i).conj_transpose).mul (y i)).trace)
theorem module.dual.pi.is_faithful_pos_map.inner_left_mul {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (x y z : Π (i : k), matrix (s i) (s i) ) :
theorem module.dual.pi.is_faithful_pos_map.mul_right {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} (hψ : (i : k), (ψ i).is_faithful_pos_map) (x y z : Π (i : k), matrix (s i) (s i) ) :
theorem module.dual.pi.is_faithful_pos_map.inner_left_conj {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (x y z : Π (i : k), matrix (s i) (s i) ) :
theorem module.dual.pi.is_faithful_pos_map.inner_right_mul {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (x y z : Π (i : k), matrix (s i) (s i) ) :
theorem module.dual.pi.is_faithful_pos_map.adjoint_eq {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] :
@[protected]
noncomputable def module.dual.pi.is_faithful_pos_map.basis {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} (hψ : (i : k), (ψ i).is_faithful_pos_map) :
basis (Σ (i : k), s i × s i) (Π (i : k), matrix (s i) (s i) )
Equations
@[protected]
theorem module.dual.pi.is_faithful_pos_map.basis_apply {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} (hψ : (i : k), (ψ i).is_faithful_pos_map) (ijk : Σ (i : k), s i × s i) :
@[protected]
theorem module.dual.pi.is_faithful_pos_map.basis_apply' {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} (hψ : (i : k), (ψ i).is_faithful_pos_map) (i : k) (j l : s i) :
theorem module.dual.pi.is_faithful_pos_map.include_block_left_inner {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] {i : k} (x : matrix (s i) (s i) ) (y : Π (j : k), matrix (s j) (s j) ) :
theorem module.dual.pi.is_faithful_pos_map.include_block_inner_same {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] {i : k} {x y : matrix (s i) (s i) } :
theorem module.dual.pi.is_faithful_pos_map.include_block_inner_same' {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] {i j : k} {x : matrix (s i) (s i) } {y : matrix (s j) (s j) } (h : i = j) :
theorem module.dual.pi.is_faithful_pos_map.include_block_inner_ne_same {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] {i j : k} {x : matrix (s i) (s i) } {y : matrix (s j) (s j) } (h : i j) :
@[protected]
theorem module.dual.pi.is_faithful_pos_map.basis.apply_cast_eq_mpr {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} (hψ : (i : k), (ψ i).is_faithful_pos_map) {i j : k} {a : s j × s j} (h : i = j) :
(_.basis) (_.mpr a) = _.mpr ((_.basis) a)
@[protected]
theorem module.dual.pi.is_faithful_pos_map.basis_is_orthonormal {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] :
@[protected]
noncomputable def module.dual.pi.is_faithful_pos_map.orthonormal_basis {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] :
orthonormal_basis (Σ (i : k), s i × s i) (Π (i : k), matrix (s i) (s i) )
Equations
@[protected]
theorem module.dual.pi.is_faithful_pos_map.orthonormal_basis_apply {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] {ijk : Σ (i : k), s i × s i} :
@[protected]
theorem module.dual.pi.is_faithful_pos_map.orthonormal_basis_apply' {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] {i : k} {j l : s i} :
@[protected]
theorem module.dual.pi.is_faithful_pos_map.inner_coord {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (ijk : Σ (i : k), s i × s i) (y : Π (i : k), matrix (s i) (s i) ) :
@[protected]
theorem module.dual.pi.is_faithful_pos_map.basis_repr_apply {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (x : Π (i : k), matrix (s i) (s i) ) (ijk : Σ (i : k), s i × s i) :
theorem module.dual.pi.is_faithful_pos_map.matrix_block.is_self_adjoint {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] :
theorem module.dual.pi.is_faithful_pos_map.matrix_block_inv_mul_self {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] :
theorem module.dual.pi.is_faithful_pos_map.matrix_block_self_mul_inv {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] :
noncomputable def module.dual.pi.is_faithful_pos_map.to_matrix {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} (hψ : (i : k), (ψ i).is_faithful_pos_map) :
((Π (i : k), matrix (s i) (s i) ) →ₗ[] Π (i : k), matrix (s i) (s i) ) ≃ₐ[] matrix (Σ (i : k), s i × s i) (Σ (i : k), s i × s i)
Equations
theorem module.dual.pi.is_faithful_pos_map.to_matrix_apply' {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (f : (Π (i : k), matrix (s i) (s i) ) →ₗ[] Π (i : k), matrix (s i) (s i) ) (r l : Σ (r : k), s r × s r) :
theorem module.dual.pi.is_faithful_pos_map.star_alg_equiv_adjoint_eq {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (f : Π (i : k), matrix (s i) (s i) ≃⋆ₐ[] matrix (s i) (s i) ) (x : Π (i : k), matrix (s i) (s i) ) :
theorem module.dual.pi.is_faithful_pos_map.star_alg_equiv_commute_iff {k : Type u_1} [fintype k] [decidable_eq k] {s : k Type u_2} [Π (i : k), fintype (s i)] [Π (i : k), decidable_eq (s i)] {ψ : Π (i : k), module.dual (matrix (s i) (s i) )} [hψ : (i : k), fact (ψ i).is_faithful_pos_map] (f : Π (i : k), matrix (s i) (s i) ≃⋆ₐ[] matrix (s i) (s i) ) :