Documentation

TCSlib.CodingTheory.QuantumSingleton

Quantum Singleton Bound #

This file proves the quantum Singleton bound for stabilizer codes over a prime field GF(p).

A stabilizer code is modeled as an isotropic subspace S of the symplectic vector space V = GF(p)^n × GF(p)^n with respect to the standard symplectic form.

Main definitions #

Main results #

References #

@[reducible, inline]
abbrev F (p : ) [Fact (Nat.Prime p)] :

The prime field GF(p), realized as ZMod p.

Equations
Instances For
    @[reducible, inline]
    abbrev V (n p : ) [Fact (Nat.Prime p)] :

    The symplectic vector space V := F^n × F^n

    Equations
    Instances For
      def sym_form {n p : } [Fact (Nat.Prime p)] (u v : V n p) :
      F p

      Standard symplectic form on V: sym_form (u, v) = ∑ i, u₁ᵢ v₂ᵢ - u₂ᵢ v₁ᵢ.

      Equations
      Instances For
        theorem sym_form_add_left {n p : } [Fact (Nat.Prime p)] (x y z : V n p) :
        sym_form (x + y) z = sym_form x z + sym_form y z
        theorem sym_form_add_right {n p : } [Fact (Nat.Prime p)] (x y z : V n p) :
        sym_form x (y + z) = sym_form x y + sym_form x z
        theorem sym_form_smul_left {n p : } [Fact (Nat.Prime p)] (c : F p) (x y : V n p) :
        sym_form (c x) y = c * sym_form x y
        theorem sym_form_smul_right {n p : } [Fact (Nat.Prime p)] (c : F p) (x y : V n p) :
        sym_form x (c y) = c * sym_form x y
        theorem sym_form_swap {n p : } [Fact (Nat.Prime p)] (u v : V n p) :

        The symplectic form is antisymmetric: sym_form u v = -sym_form v u.

        noncomputable def symB {n p : } [Fact (Nat.Prime p)] :

        The standard symplectic form sym_form packaged as a LinearMap.BilinForm.

        Equations
        Instances For
          @[simp]
          theorem symB_apply {n p : } [Fact (Nat.Prime p)] (x y : V n p) :
          (symB x) y = sym_form x y
          theorem sym_form_nondegenerate {n p : } [Fact (Nat.Prime p)] (u : V n p) (h : ∀ (v : V n p), sym_form u v = 0) :
          u = 0

          The symplectic form is non-degenerate: if sym_form u v = 0 for all v, then u = 0.

          def supp {n p : } [Fact (Nat.Prime p)] (v : V n p) :

          Support of a vector v in V

          Equations
          Instances For
            def wt {n p : } [Fact (Nat.Prime p)] (v : V n p) :

            Weight of a vector v in V

            Equations
            Instances For
              def V_sub {n p : } [Fact (Nat.Prime p)] (C : Finset (Fin n)) :
              Submodule (F p) (V n p)

              Support subspace V_C

              Equations
              • V_sub C = { carrier := {v : V n p | iC, v.1 i = 0 v.2 i = 0}, add_mem' := , zero_mem' := , smul_mem' := }
              Instances For
                noncomputable def restrictToC {n p : } [Fact (Nat.Prime p)] (C : Finset (Fin n)) :
                (V_sub C) →ₗ[F p] (CF p) × (CF p)
                Equations
                • restrictToC C = { toFun := fun (x : (V_sub C)) => match x with | v, property => (fun (c : C) => v.1 c, fun (c : C) => v.2 c), map_add' := , map_smul' := }
                Instances For
                  noncomputable def extendFromC {n p : } [Fact (Nat.Prime p)] (C : Finset (Fin n)) :
                  (CF p) × (CF p) →ₗ[F p] (V_sub C)
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem restrictToC_extendFromC {n p : } [Fact (Nat.Prime p)] (C : Finset (Fin n)) (x : (CF p) × (CF p)) :
                    (restrictToC C) ((extendFromC C) x) = x
                    theorem extendFromC_restrictToC {n p : } [Fact (Nat.Prime p)] (C : Finset (Fin n)) (x : (V_sub C)) :
                    (extendFromC C) ((restrictToC C) x) = x
                    noncomputable def V_sub_iso {n p : } [Fact (Nat.Prime p)] (C : Finset (Fin n)) :
                    (V_sub C) ≃ₗ[F p] (CF p) × (CF p)
                    Equations
                    Instances For
                      theorem dim_V_sub {n p : } [Fact (Nat.Prime p)] (C : Finset (Fin n)) :
                      Module.finrank (F p) (V_sub C) = 2 * C.card
                      def r_E {n p : } [Fact (Nat.Prime p)] (E : Finset (Fin n)) :
                      V n p →ₗ[F p] (V_sub E)

                      Restriction map r_E : V -> V_E

                      Equations
                      Instances For
                        @[reducible, inline]
                        abbrev sym_orth {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) :
                        Submodule (F p) (V n p)

                        Orthogonal complement with respect to the symplectic bilinear form.

                        Equations
                        Instances For
                          def IsIsotropic {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) :

                          Isotropic subspace

                          Equations
                          Instances For
                            noncomputable def code_dist {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) :

                            The distance of the stabilizer code defined by S

                            Equations
                            Instances For
                              def correctable {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (E : Finset (Fin n)) :

                              Correctable erasure (commutant form)

                              Equations
                              Instances For
                                theorem dist_implies_correctable {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (E : Finset (Fin n)) (h : E.card < code_dist S) :

                                An erasure set E is correctable whenever its size is strictly less than the code distance.

                                def S_M {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (M : Finset (Fin n)) :
                                Submodule (F p) (V n p)

                                Intersection of S and V_M

                                Equations
                                Instances For
                                  def S_perp_M {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (M : Finset (Fin n)) :
                                  Submodule (F p) (V n p)

                                  Intersection of S^\perp and V_M

                                  Equations
                                  Instances For
                                    noncomputable def g {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (M : Finset (Fin n)) :

                                    Supportable logical operators count g(M)

                                    Equations
                                    Instances For
                                      theorem ker_r_E {n p : } [Fact (Nat.Prime p)] (E : Finset (Fin n)) :

                                      Kernel of r_E is V_{E^c}

                                      def E_c {n : } (E : Finset (Fin n)) :

                                      Complement of E

                                      Equations
                                      Instances For
                                        theorem E_c_eq {n : } (E : Finset (Fin n)) :
                                        theorem dim_map_r_E {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (E : Finset (Fin n)) :
                                        Module.finrank (F p) (Submodule.map (r_E E) S) = Module.finrank (F p) S - Module.finrank (F p) (SV_sub (E_c E))

                                        Rank-nullity for restriction of S to E

                                        theorem sym_form_r_E {n p : } [Fact (Nat.Prime p)] (M : Finset (Fin n)) (v : V n p) (hv : v V_sub M) (s : V n p) :
                                        sym_form v s = sym_form v ((r_E M) s)

                                        Symplectic form respects restriction

                                        def r_E_V {n p : } [Fact (Nat.Prime p)] (E : Finset (Fin n)) :
                                        V n p →ₗ[F p] V n p
                                        Equations
                                        Instances For
                                          theorem sym_form_r_E_left {n p : } [Fact (Nat.Prime p)] (M : Finset (Fin n)) (s v : V n p) (hv : v V_sub M) :
                                          sym_form ((r_E_V M) s) v = sym_form s v
                                          theorem sym_form_nondegenerate_on_V_sub {n p : } [Fact (Nat.Prime p)] (M : Finset (Fin n)) (v : V n p) (hv : v V_sub M) (h : wV_sub M, sym_form v w = 0) :
                                          v = 0

                                          Non-degeneracy on V_sub M

                                          theorem sym_form_left_restrict {n p : } [Fact (Nat.Prime p)] (M : Finset (Fin n)) (s v : V n p) (hv : v V_sub M) :
                                          sym_form ((r_E_V M) s) v = sym_form s v

                                          Restriction map as an endomorphism of V

                                          theorem orth_inter_eq_orth_map {n p : } [Fact (Nat.Prime p)] (M : Finset (Fin n)) (S : Submodule (F p) (V n p)) :

                                          Orthogonal intersection lemma

                                          noncomputable def symB_sub {n p : } [Fact (Nat.Prime p)] (M : Finset (Fin n)) :

                                          Symplectic bilinear form restricted to V_sub M.

                                          Equations
                                          Instances For
                                            @[reducible, inline]
                                            abbrev sym_form_sub {n p : } [Fact (Nat.Prime p)] (M : Finset (Fin n)) :
                                            Equations
                                            Instances For
                                              @[simp]
                                              theorem sym_form_sub_apply {n p : } [Fact (Nat.Prime p)] (M : Finset (Fin n)) (x y : (V_sub M)) :
                                              ((sym_form_sub M) x) y = sym_form x y

                                              Non-degeneracy of restricted form

                                              The intersection S^\perp ∩ V_M corresponds to the orthogonal complement of r_M(S) in V_M

                                              theorem sym_form_sub_isRefl {n p : } [Fact (Nat.Prime p)] (M : Finset (Fin n)) :

                                              The restricted symplectic form is reflexive

                                              theorem dim_orth_inter {n p : } [Fact (Nat.Prime p)] (M : Finset (Fin n)) (S : Submodule (F p) (V n p)) :
                                              Module.finrank (F p) (sym_orth SV_sub M) = 2 * M.card - Module.finrank (F p) (Submodule.map (r_E M) S)

                                              Dimension of orthogonal intersection

                                              theorem g_expansion {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (hS : IsIsotropic S) (M : Finset (Fin n)) :
                                              g S M = 2 * M.card + Module.finrank (F p) (S_M S (E_c M)) - Module.finrank (F p) S - Module.finrank (F p) (S_M S M)
                                              theorem E_c_E_c {n : } (M : Finset (Fin n)) :
                                              E_c (E_c M) = M
                                              theorem dim_S_M_add_dim_S_M_c_le_dim_S {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (M : Finset (Fin n)) :
                                              Module.finrank (F p) (S_M S M) + Module.finrank (F p) (S_M S (E_c M)) Module.finrank (F p) S
                                              theorem g_formula {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (hS : IsIsotropic S) (M : Finset (Fin n)) :
                                              g S M = 2 * M.card + Module.finrank (F p) (S_M S (E_c M)) - (Module.finrank (F p) S + Module.finrank (F p) (S_M S M))
                                              theorem g_add_dims {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (hS : IsIsotropic S) (M : Finset (Fin n)) :
                                              g S M + Module.finrank (F p) (S_M S M) + Module.finrank (F p) S = 2 * M.card + Module.finrank (F p) (S_M S (E_c M))
                                              theorem dim_ineq_aux {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (hS : IsIsotropic S) (M : Finset (Fin n)) :
                                              Module.finrank (F p) S + Module.finrank (F p) (S_M S M) 2 * M.card + Module.finrank (F p) (S_M S (E_c M))
                                              theorem cleaning_dimension_identity {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (hS : IsIsotropic S) (M : Finset (Fin n)) :
                                              g S M + g S (E_c M) = 2 * n - 2 * Module.finrank (F p) S

                                              Cleaning dimension identity

                                              theorem card_add_compl {n : } (M : Finset (Fin n)) :
                                              M.card + (E_c M).card = n
                                              theorem correctable_implies_g_zero {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (M : Finset (Fin n)) (h : correctable S M) :
                                              g S M = 0
                                              theorem g_complement_correctable {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (hS : IsIsotropic S) (M : Finset (Fin n)) (h : correctable S M) :
                                              g S (E_c M) = 2 * n - 2 * Module.finrank (F p) S

                                              If M is correctable, g(M^c) = 2k

                                              theorem g_le_two_card_C {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (B C : Finset (Fin n)) (h_disjoint : Disjoint B C) (hB : correctable S B) :
                                              g S (B C) 2 * C.card
                                              def code_k {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) :

                                              Number of logical qudits k

                                              Equations
                                              Instances For
                                                theorem two_disjoint_correctable_sets_bound_logical_dimension {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (hS : IsIsotropic S) (A B : Finset (Fin n)) (h_disjoint : Disjoint A B) (hA : correctable S A) (hB : correctable S B) :

                                                Lemma 5: Two disjoint correctable sets bound logical dimension

                                                theorem finrank_V {n p : } [Fact (Nat.Prime p)] :
                                                Module.finrank (F p) (V n p) = 2 * n
                                                theorem finrank_sym_orth {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) :
                                                Module.finrank (F p) (sym_orth S) = 2 * n - Module.finrank (F p) S
                                                theorem finrank_le_n_of_isotropic {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (hS : IsIsotropic S) :
                                                Module.finrank (F p) S n
                                                theorem wt_le_n {n p : } [Fact (Nat.Prime p)] (v : V n p) :
                                                wt v n

                                                Any vector in V n p has weight at most n.

                                                theorem code_dist_le_n {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) :

                                                code_dist S ≤ n since all weights are bounded by n.

                                                theorem code_dist_eq_zero_of_code_k_eq_zero {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (hS : IsIsotropic S) (hk : code_k S = 0) :
                                                theorem exists_disjoint_finsets_card {n : } (t : ) (h : 2 * t n) :
                                                ∃ (A : Finset (Fin n)) (B : Finset (Fin n)), Disjoint A B A.card = t B.card = t

                                                Choose disjoint finsets A,B of size t inside Fin n, assuming 2t ≤ n.

                                                theorem quantum_singleton_bound {n p : } [Fact (Nat.Prime p)] (S : Submodule (F p) (V n p)) (hS : IsIsotropic S) :
                                                code_k S + 2 * (code_dist S - 1) n

                                                Quantum Singleton bound: code_k S + 2*(code_dist S - 1) ≤ n.