Documentation

QEC1.Remarks.Rem_2_NotationPauliOperators

Notation: Pauli Operators #

Statement #

For qubits labeled by vertices v of a graph or indices i, we denote by X_v (or X_i) the Pauli-X operator acting on qubit v (or i), and similarly Z_v (or Z_i) for Pauli-Z. A product of Pauli operators is written as โˆ_{v โˆˆ S} X_v for a set S of qubit labels. The identity operator is denoted ๐Ÿ™. For a Pauli operator P, we denote by S_X(P) the X-type support (sites where P acts via X or Y) and S_Z(P) the Z-type support (sites where P acts via Y or Z).

Main Results #

Corollaries #

Definition of Pauli operators #

structure PauliOp (V : Type u_2) :
Type u_2

Pauli operators on qubits labeled by type V, represented as pairs of binary vectors (xVec, zVec) โˆˆ (ZMod 2)^V ร— (ZMod 2)^V. The pair (x, z) represents the Pauli operator โŠ—_v X_v^{x_v} Z_v^{z_v}.

  • (0, 0) at site v means identity I
  • (1, 0) at site v means X
  • (0, 1) at site v means Z
  • (1, 1) at site v means Y (up to phase)
  • xVec : V โ†’ ZMod 2
  • zVec : V โ†’ ZMod 2
Instances For
    theorem PauliOp.ext {V : Type u_2} {x y : PauliOp V} (xVec : x.xVec = y.xVec) (zVec : x.zVec = y.zVec) :
    x = y
    theorem PauliOp.ext_iff {V : Type u_2} {x y : PauliOp V} :

    Identity operator #

    def PauliOp.id (V : Type u_2) :

    The identity Pauli operator (acts as identity on all qubits).

    Equations
    Instances For

      Single-site Pauli operators #

      def PauliOp.pauliX {V : Type u_1} [DecidableEq V] (v : V) :

      Pauli-X operator acting on qubit v.

      Equations
      Instances For
        def PauliOp.pauliZ {V : Type u_1} [DecidableEq V] (v : V) :

        Pauli-Z operator acting on qubit v.

        Equations
        Instances For
          def PauliOp.pauliY {V : Type u_1} [DecidableEq V] (v : V) :

          Pauli-Y operator acting on qubit v (= X_v Z_v up to phase).

          Equations
          Instances For

            Multiplication (pointwise XOR of binary vectors) #

            def PauliOp.mul {V : Type u_1} (P Q : PauliOp V) :

            Product of two Pauli operators (pointwise addition of binary vectors in ZMod 2). This captures the Pauli group multiplication up to phase.

            Equations
            Instances For
              instance PauliOp.instMul {V : Type u_1} :
              Equations
              instance PauliOp.instOne {V : Type u_1} :
              Equations
              @[simp]
              theorem PauliOp.one_xVec {V : Type u_1} :
              xVec 1 = 0
              @[simp]
              theorem PauliOp.one_zVec {V : Type u_1} :
              zVec 1 = 0
              @[simp]
              theorem PauliOp.mul_xVec {V : Type u_1} (P Q : PauliOp V) :
              (P * Q).xVec = P.xVec + Q.xVec
              @[simp]
              theorem PauliOp.mul_zVec {V : Type u_1} (P Q : PauliOp V) :
              (P * Q).zVec = P.zVec + Q.zVec
              theorem PauliOp.mul_comm {V : Type u_1} (P Q : PauliOp V) :
              P * Q = Q * P
              theorem PauliOp.mul_assoc {V : Type u_1} (P Q R : PauliOp V) :
              P * Q * R = P * (Q * R)
              theorem PauliOp.one_mul {V : Type u_1} (P : PauliOp V) :
              1 * P = P
              theorem PauliOp.mul_one {V : Type u_1} (P : PauliOp V) :
              P * 1 = P
              theorem PauliOp.mul_self {V : Type u_1} (P : PauliOp V) :
              P * P = 1
              Equations
              • One or more equations did not get rendered due to their size.
              @[simp]
              theorem PauliOp.inv_eq_self {V : Type u_1} (P : PauliOp V) :

              Products of Pauli operators over finite sets #

              def PauliOp.prodX {V : Type u_1} [DecidableEq V] (S : Finset V) :

              Product of Pauli-X operators over a finset S of qubit labels: โˆ_{v โˆˆ S} X_v

              Equations
              Instances For
                def PauliOp.prodZ {V : Type u_1} [DecidableEq V] (S : Finset V) :

                Product of Pauli-Z operators over a finset S of qubit labels: โˆ_{v โˆˆ S} Z_v

                Equations
                Instances For
                  @[simp]
                  @[simp]

                  X-type and Z-type support #

                  def PauliOp.supportX {V : Type u_1} [DecidableEq V] [Fintype V] (P : PauliOp V) :

                  X-type support: the set of sites where P acts via X or Y (i.e., where xVec is nonzero).

                  Equations
                  Instances For
                    def PauliOp.supportZ {V : Type u_1} [DecidableEq V] [Fintype V] (P : PauliOp V) :

                    Z-type support: the set of sites where P acts via Y or Z (i.e., where zVec is nonzero).

                    Equations
                    Instances For
                      def PauliOp.support {V : Type u_1} [DecidableEq V] [Fintype V] (P : PauliOp V) :

                      Full support: sites where P acts non-trivially (via X, Y, or Z).

                      Equations
                      Instances For
                        def PauliOp.weight {V : Type u_1} [DecidableEq V] [Fintype V] (P : PauliOp V) :

                        Weight of a Pauli operator: number of qubits on which it acts non-trivially.

                        Equations
                        Instances For

                          Support membership characterizations #

                          @[simp]
                          theorem PauliOp.mem_supportX {V : Type u_1} [DecidableEq V] [Fintype V] (P : PauliOp V) (v : V) :
                          @[simp]
                          theorem PauliOp.mem_supportZ {V : Type u_1} [DecidableEq V] [Fintype V] (P : PauliOp V) (v : V) :
                          @[simp]
                          theorem PauliOp.mem_support {V : Type u_1} [DecidableEq V] [Fintype V] (P : PauliOp V) (v : V) :

                          In ZMod 2, nonzero means equal to 1 #

                          @[simp]
                          theorem PauliOp.mem_supportX_iff {V : Type u_1} [DecidableEq V] [Fintype V] (P : PauliOp V) (v : V) :
                          @[simp]
                          theorem PauliOp.mem_supportZ_iff {V : Type u_1} [DecidableEq V] [Fintype V] (P : PauliOp V) (v : V) :

                          Identity support #

                          @[simp]
                          @[simp]
                          @[simp]
                          @[simp]
                          theorem PauliOp.weight_one {V : Type u_1} [DecidableEq V] [Fintype V] :
                          weight 1 = 0

                          Single-site operator supports #

                          @[simp]
                          theorem PauliOp.supportX_pauliX {V : Type u_1} [DecidableEq V] [Fintype V] (v : V) :
                          @[simp]
                          theorem PauliOp.supportZ_pauliX {V : Type u_1} [DecidableEq V] [Fintype V] (v : V) :
                          @[simp]
                          theorem PauliOp.supportX_pauliZ {V : Type u_1} [DecidableEq V] [Fintype V] (v : V) :
                          @[simp]
                          theorem PauliOp.supportZ_pauliZ {V : Type u_1} [DecidableEq V] [Fintype V] (v : V) :
                          @[simp]
                          theorem PauliOp.supportX_pauliY {V : Type u_1} [DecidableEq V] [Fintype V] (v : V) :
                          @[simp]
                          theorem PauliOp.supportZ_pauliY {V : Type u_1} [DecidableEq V] [Fintype V] (v : V) :

                          Product support characterizations #

                          theorem PauliOp.supportX_prodX {V : Type u_1} [DecidableEq V] [Fintype V] (S : Finset V) :
                          theorem PauliOp.supportZ_prodZ {V : Type u_1} [DecidableEq V] [Fintype V] (S : Finset V) :

                          Support union bound #

                          Pauli-X single-site and product relationship #