Documentation

QEC1.Definitions.Def_7_SpaceAndTimeFaults

Definition 7: Space and Time Faults #

Statement #

In the context of fault-tolerant quantum error correction:

  1. A space-fault (or space error) is a Pauli error operator that occurs on some qubit at a specific time during the procedure.

  2. A time-fault (or measurement error) is an error where the result of a measurement is reported incorrectly (i.e., +1 is reported as -1 or vice versa).

  3. A spacetime fault is a collection of space-faults and time-faults occurring at various locations and times during the procedure.

Convention: State mis-initialization faults are treated as time-faults that are equivalent to a perfect initialization followed by a space-fault.

Main Results #

Corollaries #

Space Faults #

structure SpaceFault (Q : Type u_4) (T : Type u_5) :
Type (max u_4 u_5)

A space-fault (space error) is a single-qubit Pauli error at a specific qubit and time. The error is described by which qubit is affected, when it occurs, and what Pauli error is applied (X, Y, or Z, encoded as a nonzero element of ZMod 2 x ZMod 2 for the x and z components).

  • qubit : Q

    The qubit where the error occurs.

  • time : T

    The time at which the error occurs.

  • xComponent : ZMod 2

    The X-component of the Pauli error (1 if X or Y, 0 otherwise).

  • zComponent : ZMod 2

    The Z-component of the Pauli error (1 if Z or Y, 0 otherwise).

  • nontrivial : self.xComponent 0 self.zComponent 0

    The error is nontrivial: at least one component is nonzero.

Instances For

    Time Faults #

    structure TimeFault (M : Type u_4) :
    Type u_4

    A time-fault (measurement error) is a single measurement whose outcome is reported incorrectly. In ZMod 2 encoding (0 -> +1, 1 -> -1), this corresponds to flipping the measurement outcome bit. The fault is identified by which measurement is affected.

    Convention: State mis-initialization faults are also modeled as time-faults. For example, initializing |0> but getting |1> is equivalent to a perfect initialization followed by an X error. The initialization measurement (projecting onto |0>) is treated as a measurement that reported incorrectly.

    • measurement : M

      The measurement whose outcome is flipped.

    Instances For

      Spacetime Faults #

      structure SpacetimeFault (Q : Type u_4) (T : Type u_5) (M : Type u_6) :
      Type (max (max u_4 u_5) u_6)

      A spacetime fault is a collection of space-faults and time-faults occurring at various locations and times during the procedure. We represent it as a pair of finsets: one of space-faults and one of time-faults.

      The weight of a spacetime fault is the total number of individual faults (each single-qubit Pauli error counts as 1, each measurement error counts as 1).

      • spaceFaults : Finset (SpaceFault Q T)

        The collection of space-faults (Pauli errors on qubits at specific times).

      • timeFaults : Finset (TimeFault M)

        The collection of time-faults (measurement errors).

      Instances For
        theorem SpacetimeFault.ext {Q : Type u_4} {T : Type u_5} {M : Type u_6} {x y : SpacetimeFault Q T M} (spaceFaults : x.spaceFaults = y.spaceFaults) (timeFaults : x.timeFaults = y.timeFaults) :
        x = y
        theorem SpacetimeFault.ext_iff {Q : Type u_4} {T : Type u_5} {M : Type u_6} {x y : SpacetimeFault Q T M} :
        def SpacetimeFault.weight {Q : Type u_1} {T : Type u_2} {M : Type u_3} (F : SpacetimeFault Q T M) :

        The weight of a spacetime fault: total number of individual faults.

        Equations
        Instances For
          def SpacetimeFault.empty {Q : Type u_1} {T : Type u_2} {M : Type u_3} :

          The empty spacetime fault: no errors at all.

          Equations
          Instances For
            def SpacetimeFault.ofSpaceFault {Q : Type u_1} {T : Type u_2} {M : Type u_3} (f : SpaceFault Q T) :

            A spacetime fault consisting of a single space-fault.

            Equations
            Instances For
              def SpacetimeFault.ofTimeFault {Q : Type u_1} {T : Type u_2} {M : Type u_3} (f : TimeFault M) :

              A spacetime fault consisting of a single time-fault.

              Equations
              Instances For
                def SpacetimeFault.compose {Q : Type u_1} {T : Type u_2} {M : Type u_3} [DecidableEq (SpaceFault Q T)] [DecidableEq (TimeFault M)] (F₁ F₂ : SpacetimeFault Q T M) :

                Composition of spacetime faults via symmetric difference. Applying the same error twice cancels it; flipping an outcome twice restores it.

                Equations
                Instances For
                  def SpacetimeFault.isPureSpace {Q : Type u_1} {T : Type u_2} {M : Type u_3} (F : SpacetimeFault Q T M) :

                  A spacetime fault is pure-space if it has no time-faults.

                  Equations
                  Instances For
                    def SpacetimeFault.isPureTime {Q : Type u_1} {T : Type u_2} {M : Type u_3} (F : SpacetimeFault Q T M) :

                    A spacetime fault is pure-time if it has no space-faults.

                    Equations
                    Instances For
                      def SpacetimeFault.spaceWeight {Q : Type u_1} {T : Type u_2} {M : Type u_3} (F : SpacetimeFault Q T M) :

                      The number of space-faults in the spacetime fault.

                      Equations
                      Instances For
                        def SpacetimeFault.timeWeight {Q : Type u_1} {T : Type u_2} {M : Type u_3} (F : SpacetimeFault Q T M) :

                        The number of time-faults in the spacetime fault.

                        Equations
                        Instances For

                          Basic Properties #

                          @[simp]

                          Composition Properties #

                          theorem SpacetimeFault.compose_comm {Q : Type u_1} {T : Type u_2} {M : Type u_3} [DecidableEq Q] [DecidableEq T] [DecidableEq M] [DecidableEq (SpaceFault Q T)] [DecidableEq (TimeFault M)] (F₁ F₂ : SpacetimeFault Q T M) :
                          F₁.compose F₂ = F₂.compose F₁
                          theorem SpacetimeFault.compose_assoc {Q : Type u_1} {T : Type u_2} {M : Type u_3} [DecidableEq Q] [DecidableEq T] [DecidableEq M] [DecidableEq (SpaceFault Q T)] [DecidableEq (TimeFault M)] (F₁ F₂ F₃ : SpacetimeFault Q T M) :
                          (F₁.compose F₂).compose F₃ = F₁.compose (F₂.compose F₃)

                          Space-only and time-only projections #

                          def SpacetimeFault.spaceComponent {Q : Type u_1} {T : Type u_2} {M : Type u_3} (F : SpacetimeFault Q T M) :

                          The space component of a spacetime fault (keeping only space-faults).

                          Equations
                          Instances For
                            def SpacetimeFault.timeComponent {Q : Type u_1} {T : Type u_2} {M : Type u_3} (F : SpacetimeFault Q T M) :

                            The time component of a spacetime fault (keeping only time-faults).

                            Equations
                            Instances For

                              Any spacetime fault decomposes into its space and time components.

                              Pauli operator associated to space-faults at a given time #

                              def SpacetimeFault.spaceFaultsAt {Q : Type u_1} {T : Type u_2} {M : Type u_3} [DecidableEq T] (F : SpacetimeFault Q T M) (t : T) :

                              The space-faults of a spacetime fault restricted to a specific time.

                              Equations
                              Instances For
                                def SpacetimeFault.pauliErrorAt {Q : Type u_1} {T : Type u_2} {M : Type u_3} [DecidableEq Q] [DecidableEq T] [Fintype Q] (F : SpacetimeFault Q T M) (t : T) :

                                The composite Pauli error on qubit system Q from all space-faults at time t.

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

                                  Convention: Initialization faults as time-faults #

                                  The convention that initialization faults are treated as time-faults is captured by modeling each initialization as a measurement. An initialization fault (e.g., preparing |1> instead of |0>) is then a time-fault on that measurement, equivalent to perfect initialization followed by a Pauli X error (space-fault).

                                  def SpacetimeFault.initializationFault {Q : Type u_1} {T : Type u_2} {M : Type u_3} (initMeasurement : M) :

                                  An initialization fault viewed as a time-fault on the initialization measurement.

                                  Equations
                                  Instances For
                                    def SpacetimeFault.initializationAsSpaceFault {Q : Type u_1} {T : Type u_2} {M : Type u_3} (q : Q) (t : T) :

                                    The equivalent space-fault: perfect initialization followed by Pauli X error.

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

                                      Weight bounds #

                                      Fault classification predicates #

                                      A spacetime fault is trivial (identity) if it has no faults at all.

                                      Equations
                                      Instances For
                                        def SpacetimeFault.affectedQubits {Q : Type u_1} {T : Type u_2} {M : Type u_3} [DecidableEq Q] [DecidableEq (SpaceFault Q T)] (F : SpacetimeFault Q T M) :

                                        The set of qubits affected by space-faults in a spacetime fault.

                                        Equations
                                        Instances For
                                          def SpacetimeFault.activeTimes {Q : Type u_1} {T : Type u_2} {M : Type u_3} [DecidableEq T] [DecidableEq (SpaceFault Q T)] (F : SpacetimeFault Q T M) :

                                          The set of times at which space-faults occur.

                                          Equations
                                          Instances For
                                            def SpacetimeFault.affectedMeasurements {Q : Type u_1} {T : Type u_2} {M : Type u_3} [DecidableEq M] [DecidableEq (TimeFault M)] (F : SpacetimeFault Q T M) :

                                            The set of measurements affected by time-faults.

                                            Equations
                                            Instances For

                                              Measurement outcome with faults #

                                              A time-fault flips the measurement outcome. In ZMod 2 encoding (0 -> +1, 1 -> -1), this means adding 1 to the ideal outcome.

                                              def observedOutcome {M : Type u_3} [DecidableEq M] [DecidableEq (TimeFault M)] (idealOutcome : MZMod 2) (faults : Finset (TimeFault M)) (m : M) :

                                              The observed measurement outcome given an ideal outcome and a set of time-faults. If measurement m appears in the time-faults, the outcome is flipped.

                                              Equations
                                              Instances For
                                                theorem observedOutcome_no_fault {M : Type u_3} [DecidableEq M] [DecidableEq (TimeFault M)] (idealOutcome : MZMod 2) (faults : Finset (TimeFault M)) (m : M) (h : { measurement := m }faults) :
                                                observedOutcome idealOutcome faults m = idealOutcome m
                                                theorem observedOutcome_with_fault {M : Type u_3} [DecidableEq M] [DecidableEq (TimeFault M)] (idealOutcome : MZMod 2) (faults : Finset (TimeFault M)) (m : M) (h : { measurement := m } faults) :
                                                observedOutcome idealOutcome faults m = idealOutcome m + 1
                                                theorem observedOutcome_flip {M : Type u_3} [DecidableEq M] [DecidableEq (TimeFault M)] (idealOutcome : MZMod 2) (faults : Finset (TimeFault M)) (m : M) (h : { measurement := m } faults) :
                                                observedOutcome idealOutcome faults m idealOutcome m