Documentation

LeanPool.Monlib4.QuantumGraph.ToProjections

Quantum graphs as projections #

This file contains the definition of a quantum graph as a projection, and the proof that the

Elaborate projection/QAM statements with the matrix coalgebra induced by φ.

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    Introduce the projection matrix coalgebra context induced by φ in a proof.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[reducible, inline]
      noncomputable abbrev FiniteDimensional.finrank (𝕜 : Type u_1) (E : Type u_2) [DivisionRing 𝕜] [AddCommGroup E] [Module 𝕜 E] :

      Compatibility spelling for the old FiniteDimensional.finrank namespace.

      Equations
      Instances For
        @[reducible, inline]
        noncomputable abbrev Qam.reflIdempotent {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} ( : φ.IsFaithfulPosMap) (A : Matrix p p →ₗ[] Matrix p p ) :

        The reflexive idempotent product used in older Monlib quantum-graph files.

        Equations
        Instances For
          noncomputable def blockDiag'KroneckerEquiv {p : Type u_1} [Fintype p] [DecidableEq p] {n : pType u_2} [(i : p) → Fintype (n i)] [(i : p) → DecidableEq (n i)] {φ : (i : p) → Module.Dual (Matrix (n i) (n i) )} ( : ∀ (i : p), (φ i).IsFaithfulPosMap) :
          Matrix ((i : p) × n i × n i) ((i : p) × n i × n i) ≃ₗ[] TensorProduct { x : Matrix ((i : p) × n i) ((i : p) × n i) // x.IsBlockDiagonal } { x : Matrix ((i : p) × n i) ((i : p) × n i) // x.IsBlockDiagonal }

          Linear equivalence from block-diagonal matrix coordinates to the tensor product of block-diagonal matrices.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem Matrix.conj_conjTranspose' {R : Type u_1} {n₁ : Type u_2} {n₂ : Type u_3} [InvolutiveStar R] (A : Matrix n₁ n₂ R) :
            theorem toMatrix_mulLeft_mulRight_adjoint {p : Type u_2} [Fintype p] [DecidableEq p] {n : pType u_1} [(i : p) → Fintype (n i)] [(i : p) → DecidableEq (n i)] {φ : (i : p) → Module.Dual (Matrix (n i) (n i) )} ( : ∀ (i : p), (φ i).IsFaithfulPosMap) (x y : (i : p) → Matrix (n i) (n i) ) :
            def Pi.LinearMap.apply {ι₁ : Type u_1} {ι₂ : Type u_2} {E₁ : ι₁Type u_3} [DecidableEq ι₁] [(i : ι₁) → AddCommMonoid (E₁ i)] [(i : ι₁) → Module (E₁ i)] {E₂ : ι₂Type u_4} [(i : ι₂) → AddCommMonoid (E₂ i)] [(i : ι₂) → Module (E₂ i)] (i : ι₁) (j : ι₂) :
            (((a : ι₁) → E₁ a) →ₗ[] (a : ι₂) → E₂ a) →ₗ[] E₁ i →ₗ[] E₂ j

            Apply a linear map between dependent products to a selected input and output component.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem Pi.LinearMap.apply_apply_apply {ι₁ : Type u_1} {ι₂ : Type u_2} {E₁ : ι₁Type u_3} [DecidableEq ι₁] [(i : ι₁) → AddCommMonoid (E₁ i)] [(i : ι₁) → Module (E₁ i)] {E₂ : ι₂Type u_4} [(i : ι₂) → AddCommMonoid (E₂ i)] [(i : ι₂) → Module (E₂ i)] (i : ι₁) (j : ι₂) (x : ((a : ι₁) → E₁ a) →ₗ[] (a : ι₂) → E₂ a) (a : E₁ i) :
              ((apply i j) x) a = x ((LinearMap.single E₁ i) a) j
              theorem orthogonal_projection_iff_lm {𝕜 : Type u_1} {E : Type u_2} [RCLike 𝕜] [NormedAddCommGroup E] [InnerProductSpace 𝕜 E] [FiniteDimensional 𝕜 E] {p : E →ₗ[𝕜] E} :
              theorem Matrix.conj_eq_transpose_conjTranspose {R : Type u_1} {n₁ : Type u_2} {n₂ : Type u_3} [Star R] (A : Matrix n₁ n₂ R) :
              theorem Matrix.conj_eq_conjTranspose_transpose {R : Type u_1} {n₁ : Type u_2} {n₂ : Type u_3} [Star R] (A : Matrix n₁ n₂ R) :
              theorem Matrix.star_transpose_eq_star_transpose {R : Type u_1} {n : Type u_2} [Star R] (A : Matrix n n R) :
              noncomputable def oneMapTranspose {p : Type u_1} [Fintype p] [DecidableEq p] :

              Star algebra equivalence between a matrix tensor product and matrices on product indices.

              Equations
              Instances For
                theorem toMatrix''_symm_map_star {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] (x : Matrix (p × p) (p × p) ) :
                noncomputable def Qam.fdOrthogonalProjection {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] (U : Submodule (Matrix p p )) :

                The orthogonal projection onto a submodule, using the finite-dimensional matrix context.

                Equations
                Instances For
                  theorem Qam.fdOrthogonalProjection_eq_sum_rankOne {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] {ι : Type u_2} [Fintype ι] {U : Submodule (Matrix p p )} (b : OrthonormalBasis ι U) :
                  fdOrthogonalProjection U = i : ι, (((rankOne ) (b i)) (b i))
                  noncomputable def Qam.submoduleOfIdempotentAndReal {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] {A : Matrix p p →ₗ[] Matrix p p } (hA1 : (reflIdempotent A) A = A) (hA2 : LinearMap.IsReal A) :

                  The submodule associated to an idempotent real quantum adjacency map.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    A canonical orthonormal basis for the submodule associated to an idempotent real QAM.

                    Equations
                    Instances For
                      class RealQam {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} ( : φ.IsFaithfulPosMap) (A : Matrix p p →ₗ[] Matrix p p ) :

                      Quantum adjacency maps that are both Schur-idempotent and real.

                      Instances
                        theorem RealQam_iff {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] {A : Matrix p p →ₗ[] Matrix p p } :
                        theorem RealQam.add_iff {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] {A B : Matrix p p →ₗ[] Matrix p p } (hA : RealQam A) (hB : RealQam B) :
                        RealQam (A + B) (Qam.reflIdempotent A) B + (Qam.reflIdempotent B) A = 0
                        theorem RealQam.zero {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] :
                        RealQam 0

                        The zero map as a real QAM.

                        @[reducible]
                        noncomputable instance RealQam.hasZero {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] :
                        Equations
                        theorem Qam.reflIdempotent_zero {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] (a : Matrix p p →ₗ[] Matrix p p ) :
                        (reflIdempotent a) 0 = 0
                        theorem Qam.zero_reflIdempotent {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] (a : Matrix p p →ₗ[] Matrix p p ) :
                        (reflIdempotent 0) a = 0
                        @[reducible]
                        noncomputable def RealQam.edges {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] {x : Matrix p p →ₗ[] Matrix p p } (hx : RealQam x) :

                        Number of edges of a real QAM, computed as the rank of its associated submodule.

                        Equations
                        Instances For
                          @[reducible]
                          noncomputable def RealQam.edges' {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] :
                          { x : Matrix p p →ₗ[] Matrix p p // RealQam x }

                          Edge-count function on the subtype of real QAMs.

                          Equations
                          Instances For
                            theorem RealQam.edges_eq {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] {A : Matrix p p →ₗ[] Matrix p p } (hA : RealQam A) :
                            hA.edges = (A φ.matrix⁻¹).trace
                            theorem Qam.trivialGraph_edges {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] [Nonempty p] :
                            .edges = 1
                            theorem RealQam.edges_eq_zero_iff {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] {A : Matrix p p →ₗ[] Matrix p p } (hA : RealQam A) :
                            hA.edges = 0 A = 0
                            theorem psi_apply_complete_graph {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] {t s : } :
                            (.psi t s) (((rankOne ) 1) 1) = 1
                            theorem AlgEquiv.TensorProduct.map_toLinearMap' {R : Type u_1} {S : Type u_2} {T : Type u_3} {U : Type u_4} {V : Type u_5} [CommSemiring R] [Semiring S] [Semiring T] [Semiring U] [Semiring V] [Algebra R S] [Algebra R T] [Algebra R U] [Algebra R V] (f : S ≃ₐ[R] T) (g : U ≃ₐ[R] V) :
                            theorem AlgEquiv.toLinearMap_one {R : Type u_1} {S : Type u_2} [CommSemiring R] [Semiring S] [Algebra R S] :
                            theorem RealQam.edges_eq_dim_iff {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] {A : Matrix p p →ₗ[] Matrix p p } (hA : RealQam A) :
                            theorem RealQam.edges_eq_one_iff {p : Type u_1} [Fintype p] [DecidableEq p] {φ : Module.Dual (Matrix p p )} [ : φ.IsFaithfulPosMap] {A : Matrix p p →ₗ[] Matrix p p } (hA : RealQam A) :
                            hA.edges = 1 ∃ (x : { x : Matrix p p // x 0 }), A = (1 / x ^ 2) (LinearMap.mulLeft (x * φ.matrix) * LinearMap.adjoint (LinearMap.mulRight (φ.matrix * x)))