Documentation

MIPRE.Foundations.OpBound

Operator bounds on matrices, by hand #

The rigidity arguments of the Pauli basis test's appendix are chains of estimates ‖M |ψ⟩‖ ≤ …, and the only thing they need about the operators in front is a bound ‖M v‖ ≤ K ‖v‖. Bnd M K is that bound, with the four closure properties the chains use --- sums, products, scalars, and the two sources: a self-adjoint contraction has Bnd M 1, and an isometry has ‖M v‖ = ‖v‖ on the nose.

This is the ℓ² operator norm, spelled as a relation instead of a number. That is deliberate. Mathlib has the norm, through Matrix.toEuclideanCLM and the C*-algebra structure on continuous linear maps, but the Loewner order on EuclideanSpace ℂ n →L[ℂ] EuclideanSpace ℂ n costs enough instance search to time out the elaborator on a statement as small as T * T ≤ 1 → ‖T‖ ≤ 1. The order the arguments actually need is the one on matrices (Matrix.nonneg_iff_posSemidef, which is cheap), so the bridge here goes from a matrix inequality straight to a vector-norm inequality and never mentions an operator norm.

The instance of the Hilbert-space calculus. The bound, the state norm and the quadratic form of this file are those of the matrix state model StateModel.mat v (MIPRE/Foundations/StateModel.lean), where matrices act on EuclideanSpace ℂ N through Matrix.toEuclideanCLM (bnd_iff, snorm_eq_mat, qform_eq_mat), and their rules are proved there once, for every represented algebra (Phase 1(b) of planning/mipco-track.md). The state norm is the model's by definition, so its rules are the model's rules verbatim. What this file adds is about matrices: the matrix order, and the Kronecker embeddings of the two factors.

def MIPRE.evec {N : Type u_1} (v : N → ℂ) :

A vector of N → ℂ, as a vector of EuclideanSpace ℂ N.

Equations
Instances For
    @[simp]
    theorem MIPRE.evec_add {N : Type u_1} (v w : N → ℂ) :
    evec (v + w) = evec v + evec w
    @[simp]
    theorem MIPRE.evec_smul {N : Type u_1} (c : ℂ) (v : N → ℂ) :
    evec (c • v) = c • evec v
    @[simp]
    theorem MIPRE.evec_zero {N : Type u_1} :
    evec 0 = 0
    theorem MIPRE.evec_sub {N : Type u_1} (v w : N → ℂ) :
    evec (v - w) = evec v - evec w
    theorem MIPRE.star_mulVec_dotProduct {N : Type u_1} [Fintype N] {M : Type u_2} [Fintype M] (A B : Matrix M N ℂ) (v : N → ℂ) :

    The sesquilinear form of two matrices applied to the same vector, moved onto one side: ⟨A v, B v⟩ = ⟨v, A† B v⟩.

    theorem MIPRE.norm_evec_sq {N : Type u_1} [Fintype N] (v : N → ℂ) :
    theorem MIPRE.norm_evec_mulVec_sq {N : Type u_1} [Fintype N] {M : Type u_2} [Fintype M] (A : Matrix M N ℂ) (v : N → ℂ) :
    theorem MIPRE.norm_evec_mulVec_eq {N : Type u_1} [Fintype N] {M : Type u_2} [Fintype M] {A : Matrix M N ℂ} [DecidableEq N] (h : A.conjTranspose * A = 1) (v : N → ℂ) :

    A rectangular isometry preserves the norm.

    The bound #

    def MIPRE.Bnd {N : Type u_1} [Fintype N] (M : Matrix N N ℂ) (K : ℝ) :

    ‖M v‖ ≤ K ‖v‖ for every v: the ℓ² operator norm of M is at most K.

    Equations
    Instances For
      theorem MIPRE.bnd_iff {N : Type u_1} [Fintype N] [DecidableEq N] {M : Matrix N N ℂ} {K : ℝ} (w : N → ℂ) :

      The bound is that of the matrix model, whatever its state.

      The norm on a fixed state #

      snorm v M = ‖M v‖. Every estimate in a rigidity argument is a statement about this, and the four rules below --- the triangle inequality, scalars, a bound in front, an isometry in front --- are all of them.

      noncomputable def MIPRE.snorm {N : Type u_1} [Fintype N] (v : N → ℂ) (M : Matrix N N ℂ) :

      ‖M v‖, for a fixed state v.

      Equations
      Instances For
        theorem MIPRE.snorm_eq_mat {N : Type u_1} [Fintype N] (v : N → ℂ) [DecidableEq N] (M : Matrix N N ℂ) :

        The state norm is that of the matrix model, by definition.

        theorem MIPRE.snorm_nonneg {N : Type u_1} [Fintype N] (v : N → ℂ) (M : Matrix N N ℂ) :
        0 ≤ snorm v M
        theorem MIPRE.snorm_add_le {N : Type u_1} [Fintype N] (v : N → ℂ) (M M' : Matrix N N ℂ) :
        snorm v (M + M') ≤ snorm v M + snorm v M'
        theorem MIPRE.snorm_sub_le {N : Type u_1} [Fintype N] (v : N → ℂ) (M M' : Matrix N N ℂ) :
        snorm v (M - M') ≤ snorm v M + snorm v M'
        theorem MIPRE.snorm_sub_comm {N : Type u_1} [Fintype N] (v : N → ℂ) (M M' : Matrix N N ℂ) :
        snorm v (M - M') = snorm v (M' - M)
        theorem MIPRE.snorm_smul {N : Type u_1} [Fintype N] (v : N → ℂ) (c : ℂ) (M : Matrix N N ℂ) :
        snorm v (c • M) = ‖c‖ * snorm v M
        theorem MIPRE.snorm_mul_le {N : Type u_1} [Fintype N] (v : N → ℂ) {M : Matrix N N ℂ} {K : ℝ} (h : Bnd M K) (M' : Matrix N N ℂ) :
        snorm v (M * M') ≤ K * snorm v M'

        A bound in front of anything.

        The quadratic form #

        def MIPRE.qform {N : Type u_1} [Fintype N] (v : N → ℂ) (M : Matrix N N ℂ) :

        ⟨v| M |v⟩, as a real.

        Equations
        Instances For
          theorem MIPRE.qform_eq_mat {N : Type u_1} [Fintype N] (v : N → ℂ) [DecidableEq N] (M : Matrix N N ℂ) :

          The quadratic form is that of the matrix model.

          theorem MIPRE.qform_add {N : Type u_1} [Fintype N] (v : N → ℂ) (M M' : Matrix N N ℂ) :
          qform v (M + M') = qform v M + qform v M'
          theorem MIPRE.qform_sub {N : Type u_1} [Fintype N] (v : N → ℂ) (M M' : Matrix N N ℂ) :
          qform v (M - M') = qform v M - qform v M'
          theorem MIPRE.qform_smul_real {N : Type u_1} [Fintype N] (v : N → ℂ) (r : ℝ) (M : Matrix N N ℂ) :
          qform v (↑r • M) = r * qform v M
          theorem MIPRE.qform_sum {N : Type u_1} [Fintype N] (v : N → ℂ) {ι : Type u_2} (s : Finset ι) (f : ι → Matrix N N ℂ) :
          qform v (∑ i ∈ s, f i) = ∑ i ∈ s, qform v (f i)
          theorem MIPRE.qform_one {N : Type u_1} [Fintype N] (v : N → ℂ) [DecidableEq N] (hv : ‖evec v‖ = 1) :
          qform v 1 = 1
          theorem MIPRE.snorm_sq_eq_qform {N : Type u_1} [Fintype N] (v : N → ℂ) (M : Matrix N N ℂ) :
          snorm v M ^ 2 = qform v (M.conjTranspose * M)

          The squared state norm is the quadratic form of M† M.

          theorem MIPRE.bnd_one_of_conjTranspose_mul_self_le {N : Type u_1} [Fintype N] [DecidableEq N] {M : Matrix N N ℂ} (h : M.conjTranspose * M ≤ 1) :
          Bnd M 1

          A self-adjoint contraction is bounded by one. The hypothesis is the matrix inequality M† M ≤ 1, which is Matrix.PosSemidef of the difference.

          theorem MIPRE.mul_self_le_of_le_one {N : Type u_1} [Fintype N] [DecidableEq N] {X : Matrix N N ℂ} (h0 : 0 ≤ X) (h1 : X ≤ 1) :
          X * X ≤ X

          X² ≤ X for 0 ≤ X ≤ 1: X - X² = X (1 - X) is a product of commuting positive matrices.

          theorem MIPRE.norm_evec_mulVec_of_isometry {N : Type u_1} [Fintype N] [DecidableEq N] {M : Matrix N N ℂ} (h : M.conjTranspose * M = 1) (v : N → ℂ) :

          An isometry preserves the norm exactly.

          The bipartite structure #

          A soundness argument on a bipartite state works with two commuting copies of a matrix algebra inside the one on the product space: aOp X = X ⊗ Id for the first factor and bOp Y = Id ⊗ Y for the second. Both are ring homomorphisms, they commute with each other, and both carry a matrix contraction to a Bnd _ 1, which is all the estimates need.

          def MIPRE.aOp {HA : Type u_2} {HB : Type u_3} [DecidableEq HB] (X : Matrix HA HA ℂ) :
          Matrix (HA × HB) (HA × HB) ℂ

          A matrix on the first factor, acting on the product space.

          Equations
          Instances For
            def MIPRE.bOp {HA : Type u_2} {HB : Type u_3} [DecidableEq HA] (Y : Matrix HB HB ℂ) :
            Matrix (HA × HB) (HA × HB) ℂ

            A matrix on the second factor, acting on the product space.

            Equations
            Instances For
              @[simp]
              theorem MIPRE.aOp_one {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] :
              aOp 1 = 1
              @[simp]
              theorem MIPRE.bOp_one {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] :
              bOp 1 = 1
              theorem MIPRE.aOp_mul {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (X Y : Matrix HA HA ℂ) :
              aOp (X * Y) = aOp X * aOp Y
              theorem MIPRE.bOp_mul {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (X Y : Matrix HB HB ℂ) :
              bOp (X * Y) = bOp X * bOp Y
              theorem MIPRE.aOp_add {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (X Y : Matrix HA HA ℂ) :
              aOp (X + Y) = aOp X + aOp Y
              theorem MIPRE.bOp_add {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (X Y : Matrix HB HB ℂ) :
              bOp (X + Y) = bOp X + bOp Y
              theorem MIPRE.aOp_smul {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (c : ℂ) (X : Matrix HA HA ℂ) :
              aOp (c • X) = c • aOp X
              theorem MIPRE.bOp_smul {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (c : ℂ) (X : Matrix HB HB ℂ) :
              bOp (c • X) = c • bOp X
              theorem MIPRE.aOp_sub {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (X Y : Matrix HA HA ℂ) :
              aOp (X - Y) = aOp X - aOp Y
              theorem MIPRE.bOp_sub {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (X Y : Matrix HB HB ℂ) :
              bOp (X - Y) = bOp X - bOp Y
              theorem MIPRE.aOp_conjTranspose {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (X : Matrix HA HA ℂ) :
              theorem MIPRE.bOp_conjTranspose {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (X : Matrix HB HB ℂ) :
              theorem MIPRE.aOp_sum {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] {ι : Type u_4} (s : Finset ι) (f : ι → Matrix HA HA ℂ) :
              aOp (∑ i ∈ s, f i) = ∑ i ∈ s, aOp (f i)
              theorem MIPRE.aOp_mul_bOp {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] (X : Matrix HA HA ℂ) (Y : Matrix HB HB ℂ) :
              aOp X * bOp Y = bOp Y * aOp X

              The two factors commute.

              theorem MIPRE.aOp_nonneg {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] {X : Matrix HA HA ℂ} (hX : 0 ≤ X) :
              0 ≤ aOp X
              theorem MIPRE.bOp_nonneg {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] {Y : Matrix HB HB ℂ} (hY : 0 ≤ Y) :
              0 ≤ bOp Y
              theorem MIPRE.bnd_aOp {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] {X : Matrix HA HA ℂ} (h : X.conjTranspose * X ≤ 1) :
              Bnd (aOp X) 1

              A contraction on the first factor is a contraction on the product space.

              theorem MIPRE.bnd_bOp {HA : Type u_2} {HB : Type u_3} [Fintype HA] [DecidableEq HA] [Fintype HB] [DecidableEq HB] {Y : Matrix HB HB ℂ} (h : Y.conjTranspose * Y ≤ 1) :
              Bnd (bOp Y) 1

              A contraction on the second factor is a contraction on the product space.