Documentation

QEC1.Remarks.Rem_10_FlexibilityOfGraphG

Remark 10: Flexibility of Graph G #

Statement #

The gauging measurement procedure (Definition 5) allows arbitrary choice of the connected graph G with vertex set equal to the support of L. The properties of the deformed code depend strongly on this choice.

Additional flexibility:

  1. Dummy vertices: G can have additional vertices beyond the support of L, achieved by gauging L' = L · ∏_{dummy} X_v.
  2. Graph properties: The choice of G determines |E| (edge qubit count), deformed check weights (path lengths), and distance (expansion).

Main Results #

Dummy vertices #

The graph G can have additional "dummy" vertices beyond the support of L. We formalize this by considering a type V ⊕ D that extends V with dummy vertices, and defining L' = L · ∏{d ∈ D} X_d = ∏{q ∈ V ⊕ D} X_q.

The key insight: since dummy qubits are in |+⟩ (eigenstate of X with eigenvalue +1), measuring X on a dummy vertex always gives +1 (outcome 0 in ZMod 2). Therefore the measurement sign of L' equals that of L.

The original logical operator L on V: L = ∏_{v ∈ V} X_v.

Equations
Instances For

    The extended logical operator L' on the extended vertex type V ⊕ D. L' = ∏{q ∈ V ⊕ D} X_q = L · ∏{d ∈ D} X_d.

    Equations
    Instances For
      def FlexibilityOfGraphG.dummyXProduct {V : Type u_1} {D : Type u_2} :
      PauliOp (V D)

      The dummy X product: ∏_{d ∈ D} X_d acting on V ⊕ D.

      Equations
      Instances For

        L lifted to V ⊕ D: acts as X on all V-qubits and I on D-qubits.

        Equations
        Instances For

          Key factorization: L' = L_lift · ∏_{d ∈ D} X_d on V ⊕ D. The extended logical is the product of the lifted original logical and the dummy X product.

          L' is pure X-type: it has no Z-support.

          @[simp]

          L' restricted to original vertices matches L: xVec on Sum.inl v is 1.

          @[simp]

          L' on dummy vertices: xVec on Sum.inr d is 1.

          @[simp]

          L' has no Z-action on any qubit.

          @[simp]

          The lifted logical matches the original on V-qubits.

          @[simp]

          The lifted logical is identity on D-qubits.

          @[simp]

          The dummy X product is identity on V-qubits.

          @[simp]

          The dummy X product acts as X on D-qubits.

          theorem FlexibilityOfGraphG.measurement_sign_with_dummies {V : Type u_1} [Fintype V] [DecidableEq V] {D : Type u_2} [Fintype D] [DecidableEq D] (originalOutcomes : VZMod 2) (dummyOutcomes : DZMod 2) (h_dummy_plus : ∀ (d : D), dummyOutcomes d = 0) :
          q : V D, Sum.elim originalOutcomes dummyOutcomes q = v : V, originalOutcomes v

          Measurement sign with dummies: the measurement sign of L' equals that of L when dummy vertices give +1 outcomes (outcome 0 in ZMod 2). This is the formal content of "dummy vertices don't affect the logical measurement."

          When D is empty, L' restricted to V has the same weight as L.

          The Z-support of the dummy X product is empty on all qubits. This means dummyXProduct commutes with everything on the Z side, and adding dummy X operators never changes Z-support parity.

          The lifted logical has empty Z-support (pure X-type).

          The dummy X product is self-inverse.

          The lifted logical is self-inverse.

          The lifted logical and dummy X product commute (both pure X-type).

          Graph properties affect deformed code overhead #

          The choice of graph G determines the parameters of the deformed code:

          theorem FlexibilityOfGraphG.deformed_code_edge_overhead {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 : DeformedCode.DeformedCodeData G checks) (hcyc : ∀ (c : C) (v : V), Even {e : G.edgeSet | e cycles c v e}.card) (hcomm : ∀ (i j : J), (checks i).PauliCommute (checks j)) :

          The deformed code's qubit count is |V| + |E|, so the edge qubit overhead (the additional qubits beyond the original |V|) is exactly |E(G)|. Different graphs G give different overhead via their edge count.

          theorem FlexibilityOfGraphG.deformed_code_check_overhead {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 : DeformedCode.DeformedCodeData G checks) (hcyc : ∀ (c : C) (v : V), Even {e : G.edgeSet | e cycles c v e}.card) (hcomm : ∀ (i j : J), (checks i).PauliCommute (checks j)) :

          The deformed code's check count is |V| + |C| + |J|: |V| Gauss checks, |C| flux checks, and |J| deformed original checks. The overhead in checks beyond the original |J| is |V| + |C|.

          Two graphs with different edge counts produce deformed codes with different qubit counts. The qubit overhead difference equals the edge count difference.

          Expansion and code distance #

          The Cheeger constant of G affects the distance of the deformed code. By Rem_4, for any valid subset S ⊆ V with |S| ≤ |V|/2: h(G) · |S| ≤ |∂S| This means an expander graph ensures that small vertex subsets have large edge boundaries, which prevents low-weight logical operators in the deformed code from surviving the deformation.

          For an expander graph, every valid subset has proportionally large boundary. This is the mechanism by which expansion of G controls the distance of the deformed code: logical operators supported on small subsets necessarily have large edge boundary.

          For a connected graph on ≥ 2 vertices, the edge set is nonempty (at least one edge exists). This means gauging always introduces at least one auxiliary qubit.

          Deformed check weight depends on edge-path length #

          The weight of the deformed check s̃_j on the extended system V ⊕ E depends on:

          The Z-support of s̃_j on edges is exactly the support of γ_j, so the deformed check weight includes a contribution from the number of edges in γ_j. Shorter paths in G lead to lower-weight deformed checks.

          The edge Z-support of a deformed check equals the support of the edge-path γ. More edges in γ means more Z-support on edge qubits, hence higher weight. This connects the graph structure (path lengths) to check weights.

          The edge X-support of a deformed check is empty: deformed checks have no X-action on edge qubits.

          theorem FlexibilityOfGraphG.deformedCheck_edge_action_count {V : Type u_1} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] [Fintype G.edgeSet] (s : PauliOp V) (γ : G.edgeSetZMod 2) :
          {e : G.edgeSet | (DeformedCode.deformedCheck G s γ).zVec (Sum.inr e) 0}.card = {e : G.edgeSet | γ e 0}.card

          The number of edge qubits where the deformed check acts non-trivially (via Z) equals the number of edges in γ with γ(e) ≠ 0. This is the "edge contribution" to the deformed check weight.

          A zero edge-path adds no edge weight: the deformed check acts only on vertices.