Definition 4: Deformed Code #
Statement #
The deformed code is the stabilizer code defined on the extended qubit system V ⊕ E(G), whose generating checks are:
- Gauss's law operators {A_v : v ∈ V} — X-type checks from Definition 2
- Flux operators {B_p : p ∈ C} — Z-type checks from Definition 2
- Deformed checks {s̃_j} — each original stabilizer check s_j is deformed
Main Results #
deformedCheck: individual deformed checkDeformedCodeData: edge-paths with boundary conditions for all checksgaussLawChecks,fluxChecks,deformedOriginalChecks: the three families of checksCheckIndex: the index type V ⊕ C ⊕ JallChecks: the full check mapallChecks_commute: all checks pairwise commuteallChecks_self_inverse: all checks are self-inversedeformedCodeChecks: anchor definition
Corollaries #
- Pure X/Z type classification
- Product of Gauss's law checks equals the logical
- Weight of flux checks
Deformed Check #
Given an original check s and an edge-path γ satisfying the boundary condition, the deformed check is the deformed operator extension of s by γ.
Equations
Instances For
If s has no Z-support on V, the deformed check with γ = 0 acts as s on vertex qubits and as identity on edge qubits.
The deformed check commutes with Gauss's law when boundary condition holds.
The deformed check is self-inverse.
Deformed Code Data #
The deformed code data: for each original check j, an edge-path γ_j and a proof that the boundary condition ∂γ_j = S_Z(s_j)|_V holds.
- boundary_condition (j : J) : DeformedOperator.BoundaryCondition G (checks j) (self.edgePath j)
Instances For
The Three Families of Checks #
Gauss's law checks on the extended system: A_v for each vertex v ∈ V.
Equations
Instances For
Flux checks on the extended system: B_p for each cycle p ∈ C.
Equations
- DeformedCode.fluxChecks G cycles p = GaussFlux.fluxOp G cycles p
Instances For
Deformed original checks: s̃_j for each j ∈ J, using the edge-paths from data.
Equations
- DeformedCode.deformedOriginalChecks G checks data j = DeformedCode.deformedCheck G (checks j) (data.edgePath j)
Instances For
Check Index Type #
The type of all checks in the deformed code: V ⊕ C ⊕ J.
- gaussLaw {V : Type u_4} {C : Type u_5} {J : Type u_6} : V → CheckIndex V C J
- flux {V : Type u_4} {C : Type u_5} {J : Type u_6} : C → CheckIndex V C J
- deformed {V : Type u_4} {C : Type u_5} {J : Type u_6} : J → CheckIndex V C J
Instances For
Equations
- DeformedCode.instDecidableEqCheckIndex.decEq (DeformedCode.CheckIndex.gaussLaw a) (DeformedCode.CheckIndex.gaussLaw b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- DeformedCode.instDecidableEqCheckIndex.decEq (DeformedCode.CheckIndex.gaussLaw a) (DeformedCode.CheckIndex.flux a_1) = isFalse ⋯
- DeformedCode.instDecidableEqCheckIndex.decEq (DeformedCode.CheckIndex.gaussLaw a) (DeformedCode.CheckIndex.deformed a_1) = isFalse ⋯
- DeformedCode.instDecidableEqCheckIndex.decEq (DeformedCode.CheckIndex.flux a) (DeformedCode.CheckIndex.gaussLaw a_1) = isFalse ⋯
- DeformedCode.instDecidableEqCheckIndex.decEq (DeformedCode.CheckIndex.flux a) (DeformedCode.CheckIndex.flux b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- DeformedCode.instDecidableEqCheckIndex.decEq (DeformedCode.CheckIndex.flux a) (DeformedCode.CheckIndex.deformed a_1) = isFalse ⋯
- DeformedCode.instDecidableEqCheckIndex.decEq (DeformedCode.CheckIndex.deformed a) (DeformedCode.CheckIndex.gaussLaw a_1) = isFalse ⋯
- DeformedCode.instDecidableEqCheckIndex.decEq (DeformedCode.CheckIndex.deformed a) (DeformedCode.CheckIndex.flux a_1) = isFalse ⋯
- DeformedCode.instDecidableEqCheckIndex.decEq (DeformedCode.CheckIndex.deformed a) (DeformedCode.CheckIndex.deformed 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.
All Checks Map #
The full set of checks for the deformed code.
Equations
- DeformedCode.allChecks G cycles checks data (DeformedCode.CheckIndex.gaussLaw v) = DeformedCode.gaussLawChecks G v
- DeformedCode.allChecks G cycles checks data (DeformedCode.CheckIndex.flux p) = DeformedCode.fluxChecks G cycles p
- DeformedCode.allChecks G cycles checks data (DeformedCode.CheckIndex.deformed j) = DeformedCode.deformedOriginalChecks G checks data j
Instances For
Pairwise Commutation: Gauss-Gauss #
Gauss's law checks commute with each other.
Pairwise Commutation: Flux-Flux #
Flux checks commute with each other.
Pairwise Commutation: Gauss-Flux #
Gauss's law and flux checks commute.
Pairwise Commutation: Gauss-Deformed #
Gauss's law checks commute with deformed original checks.
Pairwise Commutation: Deformed-Flux #
Deformed and flux checks commute. This holds because flux operators are pure Z-type and deformed checks have no X-support on edges.
Pairwise Commutation: Deformed-Deformed #
Deformed checks commute if the original checks commute. On edges both are pure Z-type (Z commutes with Z); on vertices the commutation is inherited from the original checks.
All Checks Commute #
All checks in the deformed code pairwise commute.
Self-Inverse Properties #
Gauss's law checks are self-inverse: A_v * A_v = 1.
Flux checks are self-inverse: B_p * B_p = 1.
Deformed original checks are self-inverse: s̃_j * s̃_j = 1.
All checks in the deformed code are self-inverse.
Type Classification #
Gauss's law checks are pure X-type: no Z-support.
Flux checks are pure Z-type: no X-support.
Deformed checks have no X-support on edge qubits.
Product of Gauss's Law Checks Equals Logical #
The product of all Gauss's law checks equals the logical operator L.
Constructors for DeformedCodeData #
Constructor: given edge-paths and boundary proofs, build DeformedCodeData.
Equations
- DeformedCode.mkDeformedCodeData G checks edgePaths hbc = { edgePath := edgePaths, boundary_condition := hbc }
Instances For
Constructor for when all original checks have no Z-support on V: set all edge-paths to zero.
Equations
- DeformedCode.mkDeformedCodeData_noZSupport G checks hnoZ = { edgePath := fun (x : J) => 0, boundary_condition := ⋯ }
Instances For
Weight of Flux Checks #
The weight of flux check B_p equals the number of edges in the cycle p.
Anchor Definition: deformedCodeChecks #
The generating checks for the deformed code on the extended qubit system V ⊕ E(G). This is the main definition from Definition 4 of the paper.
Equations
- DeformedCode.deformedCodeChecks G cycles checks data = DeformedCode.allChecks G cycles checks data