Def_12: Time Step Convention #
Statement #
We use a half-integer time step convention for the fault-tolerant gauging measurement procedure:
Integer time steps $t = 0, 1, 2, \ldots$: Associated with qubit states and Pauli space-errors. A Pauli error 'at time $t$' affects the state between measurement rounds at times $t - \frac{1}{2}$ and $t + \frac{1}{2}$.
Half-integer time steps $t + \frac{1}{2}$: Associated with measurements and measurement errors. A measurement 'at time $t + \frac{1}{2}$' occurs between qubit states at times $t$ and $t + 1$.
Key time points:
- $t_0$: Start of the procedure
- $t_i$: Time of the initial gauging code deformation (edge qubit initialization and first $A_v$ measurements at $t_i - \frac{1}{2}$ and $t_i + \frac{1}{2}$)
- $t_o$: Time of the final ungauging code deformation (last $A_v$ measurements and edge qubit readout at $t_o - \frac{1}{2}$ and $t_o + \frac{1}{2}$)
Main Definitions #
HalfIntegerTime: Represents both integer and half-integer time stepsIntegerTimeStep: Integer times associated with qubit statesHalfIntegerTimeStep: Half-integer times associated with measurementsTimeStepConvention: The convention relating integer/half-integer times
Key Properties #
integerTime_isQubitStateTime: Integer times are for qubit stateshalfIntegerTime_isMeasurementTime: Half-integer times are for measurementsmeasurement_between_states: Measurement at t+1/2 is between states at t and t+1error_between_measurements: Error at t is between measurements at t-1/2 and t+1/2
Half-Integer Time Representation #
We represent time as either an integer (for qubit states) or a half-integer (for measurements). A half-integer n + 1/2 is represented by storing the integer n.
We use ℤ to allow negative times for generality (though in practice we mostly use t ≥ 0).
A half-integer time representation.
integer nrepresents the integer time step nhalfInteger nrepresents the half-integer time step n + 1/2
- integer : ℤ → HalfIntegerTime
- halfInteger : ℤ → HalfIntegerTime
Instances For
Equations
- instDecidableEqHalfIntegerTime.decEq (HalfIntegerTime.integer a) (HalfIntegerTime.integer b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- instDecidableEqHalfIntegerTime.decEq (HalfIntegerTime.integer a) (HalfIntegerTime.halfInteger a_1) = isFalse ⋯
- instDecidableEqHalfIntegerTime.decEq (HalfIntegerTime.halfInteger a) (HalfIntegerTime.integer a_1) = isFalse ⋯
- instDecidableEqHalfIntegerTime.decEq (HalfIntegerTime.halfInteger a) (HalfIntegerTime.halfInteger b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- instReprHalfIntegerTime = { reprPrec := instReprHalfIntegerTime.repr }
Convert to a rational number for comparison
Equations
- (HalfIntegerTime.integer a).toRat = ↑a
- (HalfIntegerTime.halfInteger a).toRat = ↑a + 1 / 2
Instances For
Check if this is an integer time
Equations
Instances For
Check if this is a half-integer time
Equations
Instances For
Get the integer part (floor)
Equations
- (HalfIntegerTime.integer a).floor = a
- (HalfIntegerTime.halfInteger a).floor = a
Instances For
Get the integer part rounded up (ceiling)
Equations
- (HalfIntegerTime.integer a).ceil = a
- (HalfIntegerTime.halfInteger a).ceil = a + 1
Instances For
Linear ordering on half-integer times
Equations
- HalfIntegerTime.instLE = { le := fun (t₁ t₂ : HalfIntegerTime) => t₁.toRat ≤ t₂.toRat }
Equations
- HalfIntegerTime.instLT = { lt := fun (t₁ t₂ : HalfIntegerTime) => t₁.toRat < t₂.toRat }
Equations
- t₁.instDecidableRelLe t₂ = inferInstanceAs (Decidable (t₁.toRat ≤ t₂.toRat))
Equations
- t₁.instDecidableRelLt t₂ = inferInstanceAs (Decidable (t₁.toRat < t₂.toRat))
Integer time n comes before half-integer time n + 1/2
Half-integer time n + 1/2 comes before integer time n + 1
Successor: move to the next time step
Equations
Instances For
Predecessor: move to the previous time step
Equations
Instances For
succ and pred are inverses
Integer Time Steps (Qubit States) #
Integer time steps t = 0, 1, 2, ... are associated with qubit states and Pauli space-errors. A Pauli error 'at time t' affects the state between measurement rounds at times t - 1/2 and t + 1/2.
An integer time step, associated with qubit states and space-errors
Equations
Instances For
Convert a natural number time step to an integer time step
Equations
- t.toIntegerTime = ↑t
Instances For
Convert an integer time step to a HalfIntegerTime
Equations
Instances For
Half-Integer Time Steps (Measurements) #
Half-integer time steps t + 1/2 are associated with measurements and measurement errors. A measurement 'at time t + 1/2' occurs between qubit states at times t and t + 1.
A half-integer time step (measurements), represented by storing the integer part. Value n represents the time n + 1/2
Equations
Instances For
Convert a measurement time step to a HalfIntegerTime
Equations
Instances For
The measurement time immediately after integer time t is t + 1/2
Equations
- t.nextMeasurementTime = t
Instances For
The measurement time immediately before integer time t is t - 1/2
Equations
- t.prevMeasurementTime = t - 1
Instances For
The integer time immediately after measurement time t + 1/2 is t + 1
Equations
- t.nextIntegerTime = t + 1
Instances For
The integer time immediately before measurement time t + 1/2 is t
Equations
- t.prevIntegerTime = t
Instances For
Key Properties: Time Ordering #
A measurement at time t + 1/2 occurs between qubit states at times t and t + 1
A Pauli error at integer time t affects state between measurements at t - 1/2 and t + 1/2
Key Time Points in Gauging Procedure #
The gauging measurement procedure has three key time points:
- t₀: Start of the procedure
- tᵢ: Time of the initial gauging code deformation
- tₒ: Time of the final ungauging code deformation
Configuration of key time points in the gauging procedure
- t_start : IntegerTimeStep
t₀: Start of the procedure
- t_initial : IntegerTimeStep
tᵢ: Time of the initial gauging code deformation
- t_final : IntegerTimeStep
tₒ: Time of the final ungauging code deformation
The procedure proceeds in order: t₀ ≤ tᵢ ≤ tₒ
Instances For
Duration of the gauging measurement procedure
Instances For
Duration of the gauged phase (from tᵢ to tₒ)
Instances For
First A_v measurement time: tᵢ - 1/2
Equations
- config.firstGaugeMeasurement = config.t_initial - 1
Instances For
Second A_v measurement time: tᵢ + 1/2
Equations
- config.secondGaugeMeasurement = config.t_initial
Instances For
Last A_v measurement time: tₒ - 1/2
Equations
- config.lastGaugeMeasurementBefore = config.t_final - 1
Instances For
Final A_v measurement time: tₒ + 1/2
Equations
- config.finalGaugeMeasurement = config.t_final
Instances For
The first A_v measurement at tᵢ - 1/2 comes before the integer time tᵢ
The second A_v measurement at tᵢ + 1/2 comes after the integer time tᵢ
Time Step Convention Summary #
The convention establishes a clear relationship between:
- Integer times (qubit states, Pauli errors)
- Half-integer times (measurements, measurement errors)
This interleaving ensures that:
- Each measurement occurs between two consecutive state times
- Each Pauli error affects the state between two consecutive measurements
The standard half-integer convention
Equations
Instances For
Association of Fault Types with Time Types #
Space faults (Pauli errors) occur at integer times
Equations
Instances For
Time faults (measurement errors) occur at half-integer times
Equations
Instances For
A space fault at time t is between measurements at t - 1/2 and t + 1/2
A measurement fault at time t + 1/2 is between states at t and t + 1
Ranges of Time Steps #
Useful predicates and functions for working with ranges of integer and half-integer times.
The integer time steps in a range [t₁, t₂]
Equations
- integerTimesInRange t₁ t₂ = {t : IntegerTimeStep | t₁ ≤ t ∧ t ≤ t₂}
Instances For
The measurement time steps in a range [t₁ + 1/2, t₂ - 1/2]
Equations
- measurementTimesInRange t₁ t₂ = {t : MeasurementTimeStep | t₁ ≤ t ∧ t < t₂}
Instances For
All half-integer times between integer times t₁ and t₂
Equations
- allTimesInRange t₁ t₂ = {t : HalfIntegerTime | HalfIntegerTime.integer t₁ ≤ t ∧ t ≤ HalfIntegerTime.integer t₂}
Instances For
Simp Lemmas for Time Conversions #
Summary #
This formalization captures the half-integer time step convention for the fault-tolerant gauging measurement procedure:
Integer time steps (t = 0, 1, 2, ...):
- Associated with qubit states and Pauli space-errors
- A Pauli error 'at time t' affects the state between measurements at t - 1/2 and t + 1/2
Half-integer time steps (t + 1/2):
- Associated with measurements and measurement errors
- A measurement 'at time t + 1/2' occurs between qubit states at times t and t + 1
Key time points:
- t₀: Start of the procedure
- tᵢ: Time of initial gauging (edge initialization, first A_v measurements at tᵢ ± 1/2)
- tₒ: Time of final ungauging (last A_v measurements, edge readout at tₒ ± 1/2)
Key properties proven:
measurement_between_states: Measurement at t + 1/2 is between states at t and t + 1error_between_measurements: Error at t is between measurements at t - 1/2 and t + 1/2spaceFault_between_measurements: Space faults occur between measurement roundstimeFault_between_states: Time faults occur between state times- Ordering and conversion lemmas for half-integer time arithmetic