Documentation

QEC1.Remarks.Rem_22_DoubleGrossCodeDefinition

Remark 22: The Double Gross Code Definition #

Statement #

The Double Gross code is a [[288, 12, 18]] BB code (Rem_19) with parameters ℓ = 12, m = 12, A = x³ + y⁷ + y², B = y³ + x² + x.

Logical operators: X̄_α = X(αf, 0) where f has weight 18.

Gauging measurement construction:

Main Results #

The Double Gross code parameters #

@[reducible, inline]

ℓ = 12 for the Double Gross code.

Equations
Instances For
    @[reducible, inline]

    m = 12 for the Double Gross code.

    Equations
    Instances For
      @[reducible, inline]

      The group algebra for the Double Gross code: F₂[x,y]/(x¹² - 1, y¹² - 1).

      Equations
      Instances For

        Polynomial definitions #

        Check commutation #

        The Double Gross code as a stabilizer code #

        The Double Gross code as a valid stabilizer code.

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

          The Double Gross code has 288 = 2 × 12 × 12 physical qubits.

          The Double Gross code has 288 = 2 × 12 × 12 checks.

          Code parameter k = 12 #

          For BB codes, the 2ℓm checks are not independent. The nominal parameter k = n - rank(H) where H is the check matrix. For the CSS structure, k = 2 · dim(ker(A) ∩ ker(B)) where "ker(A)" is the kernel of left-convolution by A in the group algebra.

          We compute this by Gaussian elimination over F₂ on the stacked convolution matrix [A; B] of size 288 × 144.

          The Double Gross code encodes k = 12 logical qubits. This is 2 × nullity(stacked matrix [A; B]), where the nullity is 144 - rank([A; B]) = 144 - 138 = 6. The factor 2 comes from the CSS structure (6 X-type + 6 Z-type independent logical operators).

          Logical operator polynomial #

          f = 1 + x + x² + x⁷ + x⁸ + x⁹ + x¹⁰ + x¹¹

          • (1 + x⁶ + x⁸ + x¹⁰)y³
          • (x⁵ + x⁶ + x⁹ + x¹⁰)y⁶
          • (x⁴ + x⁸)y⁹
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            Logical X operators #

            X̄_α is pure X-type: it has no Z-support.

            X̄_α acts only on L qubits: xVec on R qubits is zero.

            Support and weight #

            The polynomial f has weight 18 (18 nonzero coefficients).

            Shift-invariance of support cardinality #

            Kernel conditions for logical operator commutation #

            xVec characterization #

            The gauging graph #

            The vertices of the gauging graph are exactly the 18 monomials in supp(f).

            Matching edge condition #

            Two vertices γ, δ ∈ supp(f) with γ ≠ δ share a Z check iff γ - δ = -B_i + B_j for B_i, B_j ∈ {y³, x², x} (the monomial terms of B), where B_i^T = B_i(x⁻¹, y⁻¹). In the additive group: -B_i + B_j means (in Z₁₂ × Z₁₂) negate B_i and add B_j. The terms of B = y³ + x² + x are (0,3), (2,0), (1,0).

            Whether a difference d equals -B_i + B_j for some distinct terms B_i, B_j of B. The terms of B are (0,3), (2,0), (1,0) in Z₁₂ × Z₁₂.

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

              The matching edge condition: γ and δ are in supp(f) and share a Z check.

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

                Expansion edges #

                The 6 distinct expansion edges (as unordered pairs). The paper lists 7 expansion edges including one double edge (x², x⁶y³). As a SimpleGraph, we have 6 distinct edges. Monomials in Z₁₂ × Z₁₂:

                • (x⁴y⁹, x⁹y⁶) = ((4,9), (9,6))
                • (y³, x¹¹) = ((0,3), (11,0))
                • (x⁷, x¹⁰y⁶) = ((7,0), (10,6))
                • (x⁸y³, x¹⁰y⁶) = ((8,3), (10,6))
                • (1, x⁸) = ((0,0), (8,0))
                • (x², x⁶y³) = ((2,0), (6,3)) with multiplicity 2
                Equations
                Instances For

                  Whether (γ, δ) is one of the 6 distinct expansion edges (unordered).

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

                    The gauging graph adjacency #

                    The full adjacency: matching edges OR expansion edges, with γ ≠ δ.

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

                      The gauging graph G for measuring X̄_α in the Double Gross code. Vertices are DGMonomial = Z₁₂ × Z₁₂; the "active" vertices are supp(f).

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

                        Edge counts #

                        The number of matching edges is 27.

                        The number of distinct expansion edges in the graph is 6.

                        The gauging graph has 33 distinct edges (as a SimpleGraph). Counting multiplicity (one double edge), we get 34.

                        The total edge count with multiplicity is 34. The SimpleGraph has 33 edges, plus one edge (x², x⁶y³) has multiplicity 2.

                        Expansion edges are valid #

                        All 6 distinct expansion edges are edges of the gauging graph.

                        Graph connectivity and cycle rank #

                        The gauging graph restricted to supp(f) must be connected. The cycle rank (first Betti number) for a connected graph is |E| - |V| + 1. With the multigraph edge (multiplicity 2 for one edge), the effective number of edges is |E_mult| = 34, so the cycle rank is 34 - 18 + 1 = 17. The paper states that 13 of these 17 independent cycles suffice for the flux checks, because 4 cycles become redundant due to dependencies among Z checks of the original code when restricted to supp(f).

                        The gauging graph is connected on the 18-vertex support of f. We verify by BFS from the vertex (0, 0) ∈ supp(f).

                        Euler's formula: the cycle rank of the gauging graph (restricted to supp(f)) is |E| - |V| + 1 = 33 - 18 + 1 = 16 for the simple graph. With multiplicity (one double edge), the effective cycle rank is 34 - 18 + 1 = 17.

                        The number of flux checks (13) is bounded by the cycle rank with multiplicity (17). The paper states 13 cycles suffice because 4 of the 17 become redundant due to dependencies among Z checks restricted to supp(f).

                        Overhead calculation #

                        The overhead uses 13 flux checks (not the full cycle rank of 17) because the paper shows that 4 cycles become redundant from Z-check dependencies on the original code restricted to supp(f).

                        Additional Gauss's law checks (A_v): one per vertex of G = 18.

                        The restricted Z-check matrix has rank 17. For a connected 18-vertex subgraph, the boundary map has rank |V| - 1 = 17, which matches.

                        The number of independent flux checks = |E_mult| - restricted_Z_rank = 34 - 17 = 17 for the full cycle space. The paper shows 4 of these are already implied by original code Z checks, leaving 13 independent flux checks needed.

                        Additional qubits (one per edge of G, counting multiplicity): 34.

                        Total overhead: 18 + 13 + 34 = 65 additional checks and qubits. The 13 comes from the paper's claim that 13 of the 17 independent cycles (cycle rank with multiplicity) suffice for the flux checks.

                        Tanner expansion property #

                        Key property (Remark 22): X̄_α has weight 18, is pure X-type, and acts only on L qubits. Each L qubit participates in at most |supp(A)| = 3 X-type checks.

                        Check weight #

                        Each X check of the Double Gross code has weight 6.

                        Summary #