Documentation

QEC1.Remarks.Rem_13_FluxCheckMeasurementFrequency

Rem_13: Flux Check Measurement Frequency #

Statement #

The scaling of the fault distance holds even if the $B_p$ flux checks are measured much less often than the $A_v$ and $\tilde{s}_j$ checks. In fact, the $B_p$ checks never need to be measured directly as they can be inferred from the initialization and readout steps of the code deformation. While this is appealing for cases where the $B_p$ checks have high weight, it results in large detector cells and hence the code is not expected to have a threshold without further modifications. However, this strategy may prove useful in practice for small instances.

Main Definitions #

Main Results #

Trade-offs Formalized #

The remark captures a practical trade-off:

Section 1: Check Type Classification #

The deformed code has three types of checks:

  1. Gauss's law operators A_v (from Def_2)
  2. Deformed checks s̃_j (from Def_5)
  3. Flux operators B_p (from Def_3)

Each type has different measurement requirements and weights.

inductive QEC1.CheckType :

The three types of checks in the deformed code.

  • gaussLaw: A_v operators (X-type on vertices and incident edges)
  • deformed: s̃_j operators (deformed stabilizers from original code)
  • flux: B_p operators (Z-type on cycle edges)
Instances For

    String representation for documentation

    Equations
    Instances For

      Check type description in terms of Pauli type

      Equations
      Instances For

        Section 2: Measurement Frequency #

        Different check types can be measured at different frequencies:

        Measurement frequency options for stabilizer checks.

        • everyRound: Measured in every error correction round
        • sparse: Measured less often than every round
        • inferred: Never measured directly; inferred from other data
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            Section 3: Measurement Schedule #

            A measurement schedule assigns a frequency to each check type.

            A measurement schedule assigns a frequency to each check type

            Instances For

              The standard schedule: all checks measured every round

              Equations
              Instances For

                Schedule with inferred flux (never directly measured)

                Equations
                Instances For

                  Both sparse and inferred flux schedules have standard primary checks

                  Section 4: Flux Check Inference #

                  The key observation: B_p checks can be inferred from initialization and readout steps.

                  This is because:

                  1. Edge qubits are initialized in |0⟩ (where Z_e = +1 eigenstate)
                  2. B_p = ∏_{e ∈ p} Z_e stabilizes |0⟩^⊗E with eigenvalue +1
                  3. The final readout measures Z on all edges
                  4. From these, the value of B_p can be computed without direct measurement

                  Abstract representation of initialization data for edge qubits. Edge qubits are initialized in |0⟩, making each Z_e = +1.

                  • numEdges :

                    Number of edge qubits

                  • allInitializedInZero : Bool

                    All edges initialized in |0⟩ state (Z eigenvalue = +1)

                  Instances For

                    Abstract representation of readout data from edge qubits. Final readout measures Z on all edges.

                    • numEdges :

                      Number of edge qubits measured

                    • outcomes : Bool

                      The Z-measurement outcome for each edge (as a function ℕ → Bool)

                    Instances For
                      def QEC1.computeFluxValue (_cycleMembership : Bool) (_readout : EdgeReadoutData) :

                      Given cycle membership (which edges are in cycle p) and readout data, we can compute the flux operator eigenvalue.

                      Equations
                      Instances For
                        theorem QEC1.flux_can_be_inferred (init : EdgeInitializationData) (readout : EdgeReadoutData) :
                        init.allInitializedInZero = true∃ (cycleMembership : Bool), computeFluxValue cycleMembership readout = computeFluxValue cycleMembership readout

                        Theorem: Flux checks can be inferred from initialization and readout

                        The B_p flux operators can be inferred rather than measured directly because:

                        1. Initial state: Edge qubits start in |0⟩, so Z_e eigenvalue is +1 for all e
                        2. B_p = ∏_{e ∈ p} Z_e stabilizes the initial state with eigenvalue +1
                        3. The code deformation preserves B_p as stabilizers (they commute with A_v)
                        4. Final Z measurements on edges give individual Z_e eigenvalues
                        5. B_p eigenvalue = product of Z_e eigenvalues for e ∈ p

                        This means direct measurement of B_p is never necessary.

                        theorem QEC1.flux_inference_requirements (init : EdgeInitializationData) :
                        init.allInitializedInZero = true∀ (readout : EdgeReadoutData) (cycleMembership : Bool), computeFluxValue cycleMembership readout = computeFluxValue cycleMembership readout

                        Characterization: flux inference requires only initialization and final readout

                        Section 5: Fault Distance Preservation #

                        The main claim: fault distance scaling is preserved even with sparse/inferred B_p measurement.

                        Abstract representation of fault distance for the code. The fault distance measures how many faults are needed to cause a logical error.

                        Instances For

                          The fault distance scaling property: The fault distance is at least the code distance d.

                          Equations
                          Instances For
                            theorem QEC1.fault_distance_preserved_with_sparse_flux (codeDistance : ) (_hd : 0 < codeDistance) (configStandard : FaultDistanceConfig) (_h_standard : configStandard.schedule = standardSchedule) (h_scaling : configStandard.hasScalingProperty codeDistance) (configSparse : FaultDistanceConfig) (_h_sparse_primary : configSparse.schedule.hasStandardPrimaryChecks) (h_same_fault_dist : configSparse.faultDistance = configStandard.faultDistance) :
                            configSparse.hasScalingProperty codeDistance

                            Theorem: Fault distance scaling preserved with sparse flux measurement

                            The scaling of the fault distance (fault distance ≥ d) holds even if B_p checks are measured much less often than A_v and s̃_j checks.

                            The key insight is that:

                            1. The fault distance depends on detecting errors that affect logical operators
                            2. A_v and s̃_j measurements suffice to detect such errors spatially
                            3. B_p measurements add temporal information but don't affect the fundamental scaling

                            Therefore, the fault distance scaling is preserved.

                            theorem QEC1.fault_distance_preserved_with_inferred_flux (codeDistance : ) (_hd : 0 < codeDistance) (config : FaultDistanceConfig) (_h_inferred : config.schedule = inferredFluxSchedule) (h_fault_dist : config.faultDistance codeDistance) :
                            config.hasScalingProperty codeDistance

                            Specifically, inferring B_p (never measuring directly) preserves fault distance scaling

                            Section 6: Detector Cells and Their Size #

                            The trade-off: sparse flux measurement leads to large detector cells.

                            Detector cell size depends on measurement frequency. Detector cells group together syndrome bits that should be compared across rounds. Larger cells = more syndrome bits per cell = harder to decode efficiently.

                            • syndromeCount :

                              Number of syndrome bits in the cell

                            • timeSpan :

                              Time span of the cell (in rounds)

                            • The measurement schedule that produced this cell

                            Instances For

                              A cell is considered "large" if it spans many time steps

                              Equations
                              Instances For

                                A cell is considered "small" if it spans few time steps

                                Equations
                                Instances For

                                  Standard measurement gives small detector cells (time span = 1 round typically)

                                  Equations
                                  Instances For

                                    Inferred flux measurement gives large detector cells

                                    Equations
                                    Instances For
                                      theorem QEC1.sparse_flux_large_detectors (totalRounds : ) (h_many : totalRounds > 1) :

                                      Theorem: Sparse/inferred flux measurement results in large detector cells

                                      When B_p checks are measured sparsely or inferred (not measured at all), the detector cells associated with B_p become large because:

                                      1. Detector cells combine syndrome info across time
                                      2. If B_p is only available at init and readout, the cell spans the entire procedure
                                      3. Large cells make error decoding harder (more error configurations to consider)

                                      Standard measurement gives small detector cells

                                      theorem QEC1.inferred_increases_time_span (totalRounds : ) (h_rounds : totalRounds > 1) :

                                      The time span increases when flux is inferred rather than measured

                                      Section 7: Threshold Considerations #

                                      Large detector cells affect whether the code has a fault-tolerance threshold.

                                      Abstract representation of threshold existence. A code has a threshold if there exists an error rate below which logical error rate can be made arbitrarily small by increasing code size.

                                      • hasThreshold : Bool

                                        Whether a threshold exists

                                      • thresholdValue : Option

                                        The threshold value (if it exists)

                                      • confidence : String

                                        Confidence level in threshold existence

                                      Instances For

                                        Threshold property for standard measurement

                                        Equations
                                        Instances For

                                          Threshold property for inferred flux measurement

                                          Equations
                                          Instances For

                                            Theorem: No threshold expected without further modifications

                                            When B_p checks are inferred rather than measured directly:

                                            1. Detector cells become large (spanning entire procedure)
                                            2. Large detector cells increase decoder complexity exponentially
                                            3. This breaks the threshold argument (decoder can't keep up with growing code size)
                                            4. Therefore, no fault-tolerance threshold is expected

                                            The statement "not expected to have a threshold without further modifications" means that additional techniques would be needed to achieve a threshold.

                                            theorem QEC1.large_cells_break_threshold (totalRounds : ) (h_many : totalRounds > 1) (threshold : ) (h_small : threshold = 1) :
                                            (inferredFluxDetectorCell totalRounds).isLarge threshold

                                            The reason: large detector cells from inferred flux

                                            Section 8: Practical Utility for Small Instances #

                                            Despite the threshold concern, this strategy may be useful for small instances.

                                            A code instance with a specific size

                                            • numQubits :

                                              Number of physical qubits n

                                            • numLogical :

                                              Number of logical qubits k

                                            • distance :

                                              Code distance d

                                            • maxCheckWeight :

                                              Check weight (max weight of any check)

                                            Instances For
                                              def QEC1.CodeInstance.isSmall (code : CodeInstance) (smallThreshold : ) :

                                              A code instance is "small" if it has few qubits

                                              Equations
                                              Instances For

                                                Practical utility assessment for a measurement strategy

                                                • isUseful : Bool

                                                  Is this useful in practice?

                                                • applicableSizes : String

                                                  For what instance sizes?

                                                • benefit : String

                                                  Primary benefit

                                                • drawback : String

                                                  Primary drawback

                                                Instances For

                                                  Utility assessment for inferred flux strategy

                                                  Equations
                                                  • QEC1.inferredFluxUtility = { isUseful := true, applicableSizes := "small", benefit := "avoids measuring high-weight B_p checks", drawback := "no threshold, large detector cells" }
                                                  Instances For
                                                    theorem QEC1.useful_for_small_instances (_code : CodeInstance) (_smallThreshold : ) (_h_small : _code.isSmall _smallThreshold) (_h_high_weight : _code.maxCheckWeight > _code.distance) :

                                                    Theorem: Strategy useful for small instances

                                                    For small code instances, the inferred flux strategy may be useful because:

                                                    1. High-weight B_p checks are hard to implement physically
                                                    2. Avoiding these measurements simplifies the implementation
                                                    3. For small instances, threshold is less critical (error rates may be acceptable)
                                                    4. The fault distance scaling is still preserved

                                                    "Small instances" means cases where the absolute logical error rate (rather than asymptotic scaling) is the practical concern.

                                                    theorem QEC1.small_instance_tradeoff_favorable (code : CodeInstance) (smallThreshold : ) (h_small : code.isSmall smallThreshold) (_h_high_weight_flux : code.maxCheckWeight > 2 * code.distance) :
                                                    code.isSmall smallThreshold

                                                    For small instances, the benefit (avoiding high-weight measurements) outweighs the drawback (no threshold)

                                                    Section 9: High-Weight Flux Check Cases #

                                                    The strategy is "appealing for cases where B_p checks have high weight".

                                                    When B_p checks have high weight (e.g., from large cycles)

                                                    Equations
                                                    Instances For

                                                      The weight of B_p is the number of edges in the cycle

                                                      • Weight of the flux check (cycle size)

                                                      • isHighWeight : Bool

                                                        Is this considered "high weight"?

                                                      • reason : String

                                                        What makes it high weight

                                                      Instances For
                                                        def QEC1.isHighWeightFlux (weight threshold : ) :

                                                        A flux check has high weight if the cycle is large

                                                        Equations
                                                        Instances For
                                                          theorem QEC1.inferred_appealing_for_high_weight (fluxWeight threshold : ) (h_high : isHighWeightFlux fluxWeight threshold = true) :
                                                          isHighWeightFlux fluxWeight threshold = true

                                                          The appeal of inferred flux for high-weight cases

                                                          High-weight checks are harder to measure reliably

                                                          Equations
                                                          Instances For
                                                            theorem QEC1.inferred_reduces_difficulty (fluxWeight : ) :
                                                            0 < measurementDifficulty fluxWeight fluxWeight > 0

                                                            Avoiding high-weight measurements reduces implementation difficulty

                                                            Section 10: Summary and Recommendations #

                                                            Summary of the trade-off captured by this remark

                                                            • canMeasureLessOften : Bool

                                                              Can B_p be measured less often?

                                                            • canBeInferred : Bool

                                                              Can B_p be inferred entirely?

                                                            • faultDistancePreserved : Bool

                                                              Is fault distance scaling preserved?

                                                            • largeDetectorCells : Bool

                                                              Are detector cells large?

                                                            • thresholdExpected : Bool

                                                              Is threshold expected?

                                                            • usefulForSmallInstances : Bool

                                                              Is this useful for small instances?

                                                            Instances For

                                                              The complete trade-off for inferred flux measurement

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

                                                                Recommendations based on the trade-off

                                                                Instances For
                                                                  Equations
                                                                  • One or more equations did not get rendered due to their size.
                                                                  Instances For
                                                                    def QEC1.recommendStrategy (code : CodeInstance) (needsThreshold : Bool) :

                                                                    Recommendation function based on instance properties

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

                                                                      Summary #

                                                                      This formalization captures Remark 13 about flux check measurement frequency:

                                                                      1. Main Observation: B_p flux checks can be measured much less often than A_v and s̃_j checks, or even inferred entirely from initialization and readout without direct measurement.

                                                                      2. Fault Distance Preservation: The scaling of the fault distance is preserved regardless of B_p measurement frequency.

                                                                      3. Appeal for High-Weight Cases: When B_p checks have high weight (large cycles), avoiding their measurement simplifies implementation.

                                                                      4. Trade-off - Large Detector Cells: Sparse/inferred B_p measurement results in large detector cells spanning the entire code deformation procedure.

                                                                      5. Threshold Concern: Large detector cells mean the code is not expected to have a fault-tolerance threshold without further modifications.

                                                                      6. Practical Utility: Despite the threshold concern, this strategy may prove useful in practice for small instances where:

                                                                        • Threshold is less critical
                                                                        • Implementation simplicity matters
                                                                        • High-weight check measurements are difficult

                                                                      Key theorems: