Documentation

QEC1.Remarks.Rem_8_FreedomInDeformedChecks

Remark 8: Freedom in Deformed Checks #

Statement #

The deformed code is uniquely determined (as a codespace), but there is freedom in choosing the generating set:

Different choices of γ give equivalent codes: if γ and γ' both satisfy ∂γ = ∂γ' = S_Z(s)|_V, then s̃(γ') = s̃(γ) · B_c for some product of flux operators B_c. In particular, the difference γ + γ' lies in ker(∂) (the cycle space).

Main Results #

Path Difference Lies in Cycle Space #

If two edge-paths both satisfy the boundary condition for the same check, their difference lies in ker(∂).

The path difference is in the kernel of the boundary map (LinearMap.ker version).

Deformed Checks Differ by a Pure-Z Edge Operator #

The pure-Z edge operator for an edge vector δ: acts as identity on vertices, Z on edges according to δ. This is exactly deformedOpExt G 1 δ.

Equations
Instances For
    @[simp]
    theorem FreedomInDeformedChecks.pureZEdgeOp_xVec_vertex {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] (δ : G.edgeSetZMod 2) (v : V) :
    (pureZEdgeOp G δ).xVec (Sum.inl v) = 0
    @[simp]
    theorem FreedomInDeformedChecks.pureZEdgeOp_xVec_edge {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] (δ : G.edgeSetZMod 2) (e : G.edgeSet) :
    (pureZEdgeOp G δ).xVec (Sum.inr e) = 0
    @[simp]
    theorem FreedomInDeformedChecks.pureZEdgeOp_zVec_vertex {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] (δ : G.edgeSetZMod 2) (v : V) :
    (pureZEdgeOp G δ).zVec (Sum.inl v) = 0
    @[simp]
    theorem FreedomInDeformedChecks.pureZEdgeOp_zVec_edge {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] (δ : G.edgeSetZMod 2) (e : G.edgeSet) :
    (pureZEdgeOp G δ).zVec (Sum.inr e) = δ e

    A pure-Z edge operator is pure Z-type: no X-support.

    A pure-Z edge operator is self-inverse.

    The deformed check with path γ' equals the deformed check with path γ multiplied by the pure-Z edge operator for the path difference γ + γ'.

    Equivalently: s̃(γ') = s̃(γ) · B where B = pureZEdgeOp(γ' + γ).

    The Difference Operator Commutes with All Checks #

    The pure-Z edge operator for a cycle (boundary-zero edge vector) commutes with all Gauss's law operators.

    theorem FreedomInDeformedChecks.pureZEdgeOp_comm_flux {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] {C : Type u_2} [Fintype C] [DecidableEq C] (cycles : CSet G.edgeSet) [(c : C) → DecidablePred fun (x : G.edgeSet) => x cycles c] (δ : G.edgeSetZMod 2) (p : C) :

    The pure-Z edge operator commutes with all flux operators (both are pure Z-type).

    theorem FreedomInDeformedChecks.pureZEdgeOp_comm_deformed {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] {J : Type u_3} [Fintype J] [DecidableEq J] (checks : JPauliOp V) (δ : G.edgeSetZMod 2) (data : DeformedCode.DeformedCodeData G checks) (j : J) :

    The pure-Z edge operator commutes with deformed checks (both have no X-support on edges, and the pure-Z op has no Z-support on vertices).

    Different Paths Yield the Same Stabilizer Group #

    Helper: a deformed check with path γ' is in the stabilizer group generated by the deformed code using path γ, provided γ + γ' ∈ ker(∂) and the flux operators for the cycle are in the stabilizer group. More precisely, s̃_j(γ'_j) equals s̃_j(γ_j) times a pure-Z edge operator, and both factors are in the stabilizer group.

    theorem FreedomInDeformedChecks.different_paths_same_code {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] {J : Type u_3} [Fintype J] [DecidableEq J] (checks : JPauliOp V) (data data' : DeformedCode.DeformedCodeData G checks) (j : J) :

    Main theorem: Different choices of edge-paths produce the same deformed code (up to stabilizer equivalence). Specifically, if data and data' are two DeformedCodeData with potentially different edge-paths, then for each check index j, the deformed check from data' differs from that of data by a pure-Z edge operator whose edge support lies in ker(∂) (the cycle space). This means the two deformed checks are related by multiplication with an element that is a product of flux operators.

    We prove the concrete algebraic fact: for each j, s̃_j(γ'_j) = s̃_j(γ_j) · pureZEdgeOp(γ_j + γ'_j) where ∂(γ_j + γ'_j) = 0.

    theorem FreedomInDeformedChecks.different_paths_diff_in_cycle_space {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] {J : Type u_3} [Fintype J] [DecidableEq J] (checks : JPauliOp V) (data data' : DeformedCode.DeformedCodeData G checks) (j : J) :

    The path difference for any check lies in the cycle space (ker ∂).

    Gauss's Law Checks Are Fixed #

    theorem FreedomInDeformedChecks.gaussLaw_checks_fixed {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] {C : Type u_2} [Fintype C] [DecidableEq C] (cycles : CSet G.edgeSet) [(c : C) → DecidablePred fun (x : G.edgeSet) => x cycles c] {J : Type u_3} [Fintype J] [DecidableEq J] (checks : JPauliOp V) (data data' : DeformedCode.DeformedCodeData G checks) (v : V) :

    The Gauss's law checks do not depend on the choice of DeformedCodeData.

    theorem FreedomInDeformedChecks.flux_checks_fixed {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] {C : Type u_2} [Fintype C] [DecidableEq C] (cycles : CSet G.edgeSet) [(c : C) → DecidablePred fun (x : G.edgeSet) => x cycles c] {J : Type u_3} [Fintype J] [DecidableEq J] (checks : JPauliOp V) (data data' : DeformedCode.DeformedCodeData G checks) (p : C) :

    The flux checks do not depend on the choice of DeformedCodeData.

    The Difference Operator Commutes with All Deformed Code Checks #

    theorem FreedomInDeformedChecks.pureZEdgeOp_comm_allChecks {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] {C : Type u_2} [Fintype C] [DecidableEq C] (cycles : CSet G.edgeSet) [(c : C) → DecidablePred fun (x : G.edgeSet) => x cycles c] {J : Type u_3} [Fintype J] [DecidableEq J] (checks : JPauliOp V) (δ : G.edgeSetZMod 2) ( : (GraphMaps.boundaryMap G) δ = 0) (data : DeformedCode.DeformedCodeData G checks) (_hcyc : ∀ (c : C) (v : V), Even {e : G.edgeSet | e cycles c v e}.card) (a : DeformedCode.CheckIndex V C J) :
    (pureZEdgeOp G δ).PauliCommute (DeformedCode.allChecks G cycles checks data a)

    The pure-Z edge operator for a path difference commutes with every check in the deformed code, when the path difference is in ker(∂).

    Corollaries #

    Two deformed checks for the same original check always commute.

    @[simp]

    The pure-Z edge operator for a path difference is self-inverse.

    Recovering one deformed check from another: s̃(γ) = s̃(γ') · pureZEdgeOp(γ' + γ).