Quantum graphs as projections #
This file contains the definition of a quantum graph as a projection, and the proof that the
noncomputable
def
block_diag'_kronecker_equiv
{p : Type u_1}
[fintype p]
[decidable_eq p]
{n : p → Type u_2}
[Π (i : p), fintype (n i)]
[Π (i : p), decidable_eq (n i)]
{φ : Π (i : p), module.dual ℂ (matrix (n i) (n i) ℂ)}
(hφ : ∀ (i : p), fact (φ i).is_faithful_pos_map) :
matrix (Σ (i : p), n i × n i) (Σ (i : p), n i × n i) ℂ ≃ₗ[ℂ] tensor_product ℂ {x // x.is_block_diagonal} {x // x.is_block_diagonal}
Equations
- block_diag'_kronecker_equiv hφ = ((module.dual.pi.is_faithful_pos_map.to_matrix _).symm.to_linear_equiv.trans ((module.dual.pi.is_faithful_pos_map.Psi hφ 0 0).trans (linear_equiv.tensor_product.map 1 (pi.transpose_alg_equiv p n).symm.to_linear_equiv))).trans (linear_equiv.tensor_product.map matrix.is_block_diagonal_pi_alg_equiv.symm.to_linear_equiv matrix.is_block_diagonal_pi_alg_equiv.symm.to_linear_equiv)
theorem
linear_equiv.coe_one
{R : Type u_1}
[semiring R]
(M : Type u_2)
[add_comm_monoid M]
[module R M] :
theorem
matrix.conj_conj_transpose'
{R : Type u_1}
{n₁ : Type u_2}
{n₂ : Type u_3}
[has_involutive_star R]
(A : matrix n₁ n₂ R) :
theorem
to_matrix_mul_left_mul_right_adjoint
{p : Type u_1}
[fintype p]
[decidable_eq p]
{n : p → Type u_2}
[Π (i : p), fintype (n i)]
[Π (i : p), decidable_eq (n i)]
{φ : Π (i : p), module.dual ℂ (matrix (n i) (n i) ℂ)}
(hφ : ∀ (i : p), fact (φ i).is_faithful_pos_map)
(x y : Π (i : p), matrix (n i) (n i) ℂ) :
⇑(module.dual.pi.is_faithful_pos_map.to_matrix _) (linear_map.mul_left ℂ x * ⇑linear_map.adjoint (linear_map.mul_right ℂ y)) = matrix.block_diagonal' (λ (i : p), matrix.kronecker_map has_mul.mul (x i) (⇑(_.sig (1 / 2)) (y i)).conj)
def
pi.linear_map.apply
{ι₁ : Type u_1}
{ι₂ : Type u_2}
{E₁ : ι₁ → Type u_3}
[decidable_eq ι₁]
[fintype ι₁]
[Π (i : ι₁), add_comm_monoid (E₁ i)]
[Π (i : ι₁), module ℂ (E₁ i)]
{E₂ : ι₂ → Type u_4}
[Π (i : ι₂), add_comm_monoid (E₂ i)]
[Π (i : ι₂), module ℂ (E₂ i)]
(i : ι₁)
(j : ι₂) :
@[simp]
theorem
pi.linear_map.apply_apply_apply
{ι₁ : Type u_1}
{ι₂ : Type u_2}
{E₁ : ι₁ → Type u_3}
[decidable_eq ι₁]
[fintype ι₁]
[Π (i : ι₁), add_comm_monoid (E₁ i)]
[Π (i : ι₁), module ℂ (E₁ i)]
{E₂ : ι₂ → Type u_4}
[Π (i : ι₂), add_comm_monoid (E₂ i)]
[Π (i : ι₂), module ℂ (E₂ i)]
(i : ι₁)
(j : ι₂)
(x : (Π (a : ι₁), E₁ a) →ₗ[ℂ] Π (a : ι₂), E₂ a)
(a : E₁ i) :
⇑(⇑(pi.linear_map.apply i j) x) a = ⇑x (⇑(linear_map.single i) a) j
theorem
rank_one_Psi_transpose_to_lin
{n : Type u_1}
[decidable_eq n]
[fintype n]
{φ : module.dual ℂ (matrix n n ℂ)}
[hφ : fact φ.is_faithful_pos_map]
(x y : matrix n n ℂ) :
⇑(_.to_matrix.symm) (⇑tensor_product.to_kronecker (⇑(tensor_product.map 1 (matrix.transpose_alg_equiv n ℂ ℂ).symm.to_linear_map) (⇑(_.Psi 0 (1 / 2)) ↑(rank_one x y)))) = linear_map.mul_left ℂ x * ⇑linear_map.adjoint (linear_map.mul_right ℂ y)
theorem
rank_one_to_matrix_transpose_Psi_symm
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
(x y : matrix p p ℂ) :
⇑((_.Psi 0 (1 / 2)).symm) (⇑(tensor_product.map 1 (matrix.transpose_alg_equiv p ℂ ℂ).to_linear_map) (⇑matrix.kronecker_to_tensor_product (⇑(_.to_matrix) ↑(rank_one x y)))) = linear_map.mul_left ℂ (x.mul φ.matrix) * ⇑linear_map.adjoint (linear_map.mul_right ℂ (φ.matrix.mul y))
theorem
orthogonal_projection_iff_lm
{𝕜 : Type u_1}
{E : Type u_2}
[is_R_or_C 𝕜]
[normed_add_comm_group E]
[inner_product_space 𝕜 E]
[complete_space E]
[finite_dimensional 𝕜 E]
{p : E →ₗ[𝕜] E} :
(∃ (U : submodule 𝕜 E), ↑(orthogonal_projection' U) = p) ↔ is_self_adjoint p ∧ is_idempotent_elem p
Equations
- one_map_transpose = star_alg_equiv.of_alg_equiv ((alg_equiv.tensor_product.map 1 (matrix.transpose_alg_equiv p ℂ ℂ).symm).trans tensor_to_kronecker) one_map_transpose._proof_5
theorem
one_map_transpose_eq
{p : Type u_1}
[fintype p]
[decidable_eq p]
(x : tensor_product ℂ (matrix p p ℂ) (matrix p p ℂ)ᵐᵒᵖ) :
theorem
one_map_transpose_symm_eq
{p : Type u_1}
[fintype p]
[decidable_eq p]
(x : matrix (p × p) (p × p) ℂ) :
theorem
to_matrix''_map_star
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
(x : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ) :
⇑(_.to_matrix) (⇑linear_map.adjoint x) = has_star.star (⇑(_.to_matrix) x)
theorem
to_matrix''_symm_map_star
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
(x : matrix (p × p) (p × p) ℂ) :
⇑(_.to_matrix.symm) (has_star.star x) = ⇑linear_map.adjoint (⇑(_.to_matrix.symm) x)
theorem
qam.idempotent_and_real_iff_exists_ortho_proj
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
(A : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ) :
noncomputable
def
qam.submodule_of_idempotent_and_real
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
{A : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ}
(hA1 : ⇑(⇑(qam.refl_idempotent qam.submodule_of_idempotent_and_real._proof_1) A) A = A)
(hA2 : A.is_real) :
Equations
- qam.submodule_of_idempotent_and_real hA1 hA2 = (λ (_x : ↑(orthogonal_projection' (classical.some _)) = ⇑(qam.submodule_of_idempotent_and_real._proof_4.to_matrix.symm) (⇑tensor_product.to_kronecker (⇑(tensor_product.map 1 (matrix.transpose_alg_equiv p ℂ ℂ).symm.to_linear_map) (⇑(qam.submodule_of_idempotent_and_real._proof_5.Psi 0 (1 / 2)) A)))), classical.some _) _
theorem
qam.orthogonal_projection'_eq
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
{A : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ}
(hA1 : ⇑(⇑(qam.refl_idempotent _) A) A = A)
(hA2 : A.is_real) :
↑(orthogonal_projection' (qam.submodule_of_idempotent_and_real hA1 hA2)) = ⇑(_.to_matrix.symm) (⇑tensor_product.to_kronecker (⇑(tensor_product.map 1 (matrix.transpose_alg_equiv p ℂ ℂ).symm.to_linear_map) (⇑(_.Psi 0 (1 / 2)) A)))
noncomputable
def
qam.onb_of_idempotent_and_real
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
{A : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ}
(hA1 : ⇑(⇑(qam.refl_idempotent qam.onb_of_idempotent_and_real._proof_1) A) A = A)
(hA2 : A.is_real) :
Equations
theorem
qam.idempotent_and_real.eq
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
{A : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ}
(hA1 : ⇑(⇑(qam.refl_idempotent _) A) A = A)
(hA2 : A.is_real) :
A = finset.univ.sum (λ (i : fin (finite_dimensional.finrank ℂ ↥(qam.submodule_of_idempotent_and_real hA1 hA2))), linear_map.mul_left ℂ (↑(⇑(qam.onb_of_idempotent_and_real hA1 hA2) i).mul φ.matrix) * ⇑linear_map.adjoint (linear_map.mul_right ℂ (φ.matrix.mul ↑(⇑(qam.onb_of_idempotent_and_real hA1 hA2) i))))
theorem
real_qam.add_iff
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
{A B : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ}
(hA : real_qam _ A)
(hB : real_qam _ B) :
def
real_qam.zero
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map] :
real_qam _ 0
@[instance]
noncomputable
def
real_qam.has_zero
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map] :
Equations
- real_qam.has_zero = {zero := ⟨0, _⟩}
theorem
qam.refl_idempotent_zero
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
(a : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ) :
⇑(⇑(qam.refl_idempotent _) a) 0 = 0
theorem
qam.zero_refl_idempotent
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
(a : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ) :
⇑(⇑(qam.refl_idempotent _) 0) a = 0
noncomputable
def
real_qam.edges
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
{x : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ}
(hx : real_qam real_qam.edges._proof_1 x) :
Equations
noncomputable
def
real_qam.edges'
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map] :
Equations
- real_qam.edges' = λ (x : {x // real_qam real_qam.edges'._proof_2 x}), finite_dimensional.finrank ℂ ↥(qam.submodule_of_idempotent_and_real _ _)
theorem
complete_graph_real_qam
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map] :
real_qam _ (qam.complete_graph (matrix p p ℂ))
theorem
qam.complete_graph_edges
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map] :
theorem
qam.trivial_graph_real_qam
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
[nontrivial p] :
real_qam _ (qam.trivial_graph hφ rfl)
theorem
qam.trivial_graph_edges
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
[nontrivial p] :
theorem
orthogonal_projection_of_top
{𝕜 : Type u_1}
{E : Type u_2}
[is_R_or_C 𝕜]
[normed_add_comm_group E]
[inner_product_space 𝕜 E]
[complete_space ↥⊤] :
theorem
Psi_apply_complete_graph
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
{t s : ℝ} :
theorem
real_qam.edges_eq_one_iff
{p : Type u_1}
[fintype p]
[decidable_eq p]
{φ : module.dual ℂ (matrix p p ℂ)}
[hφ : fact φ.is_faithful_pos_map]
{A : matrix p p ℂ →ₗ[ℂ] matrix p p ℂ}
(hA : real_qam _ A) :