Def_13: Bivariate Bicycle Code #
Statement #
A Bivariate Bicycle (BB) code is a CSS code defined as follows:
Setup: Let ℓ, m be positive integers. Define:
- I_r: the r × r identity matrix
- C_r: the cyclic permutation matrix of r items, satisfying ⟨i|C_r = ⟨(i+1) mod r|
- x = C_ℓ ⊗ I_m (cyclic shift in the first coordinate)
- y = I_ℓ ⊗ C_m (cyclic shift in the second coordinate)
These matrices satisfy x^ℓ = y^m = I_{ℓm} and xᵀx = yᵀy = I_{ℓm}.
Qubits: The code uses n = 2ℓm physical qubits divided into ℓm left (L) and ℓm right (R) qubits.
Parity check matrices: Given polynomials A, B ∈ F₂[x,y], the parity check matrices are: H_X = [A | B], H_Z = [Bᵀ | Aᵀ] where Aᵀ = A(x⁻¹, y⁻¹).
Labeling: X checks, Z checks, L qubits, R qubits are each in 1-1 correspondence with elements of M = {x^a y^b : a, b ∈ Z}.
Main Definitions #
M: Monomial set ZMod ℓ × ZMod mGroupAlg: Group algebra F₂[M] for polynomials in x, ycyclicShiftX: Generator x as group algebra elementcyclicShiftY: Generator y as group algebra elementtransposeAlg: Transpose operation A ↦ A(x⁻¹, y⁻¹)LabelType: Type for labeling {X, Z, L, R}BivariateBicycleCode: The full BB code structure with H_X and H_ZparityCheckX: H_X = [A | B]parityCheckZ: H_Z = [Bᵀ | Aᵀ]
Corollaries #
cyclicShiftX_order: x^ℓ = 1 in the group algebracyclicShiftY_order: y^m = 1 in the group algebratransposeAlg_involutive: (Aᵀ)ᵀ = ApermX_permY_comm: x and y commute as permutationspermX_transpose_mul: xᵀx = I
Section 1: The Monomial Set M #
Elements of M = {x^a y^b} are represented as pairs (a, b) ∈ ZMod ℓ × ZMod m. This is an additive abelian group where addition represents multiplication of monomials.
The monomial set M = {x^a y^b : a ∈ ZMod ℓ, b ∈ ZMod m}.
Equations
- QEC1.BivariateBicycle.M ℓ m = (ZMod ℓ × ZMod m)
Instances For
Section 2: Group Algebra F₂[M] #
Polynomials in x, y over F₂ are elements of the group algebra (ZMod 2)[M]. An element is a finitely supported function M → ZMod 2.
The group algebra F₂[x, y] / (x^ℓ - 1, y^m - 1), represented as AddMonoidAlgebra.
Equations
Instances For
Section 3: Generators x and y #
x corresponds to the monomial (1, 0) in M, representing C_ℓ ⊗ I_m. y corresponds to the monomial (0, 1) in M, representing I_ℓ ⊗ C_m.
The generator x = C_ℓ ⊗ I_m as an element of the group algebra.
Equations
Instances For
The generator y = I_ℓ ⊗ C_m as an element of the group algebra.
Equations
Instances For
A monomial x^a y^b as an element of the group algebra.
Equations
- QEC1.BivariateBicycle.monomial ℓ m a b = Finsupp.single (a, b) 1
Instances For
Section 4: Transpose Operation #
For a BB code, the transpose operation is A^T = A(x⁻¹, y⁻¹). In the additive group M, this corresponds to negating both coordinates: (a, b) ↦ (-a, -b).
The transpose of a group algebra element: A^T = A(x⁻¹, y⁻¹). This maps each monomial (a,b) to (-a,-b), preserving coefficients.
Equations
Instances For
Section 5: Matrix Representation #
The group algebra acts on F₂^{ℓm} by permutation. The matrix representation sends a polynomial p to the matrix whose (α, β) entry is the coefficient of α - β in p (i.e., a circulant-like structure on the product group).
Matrix representation of a group algebra element: the (α, β)-entry is p(α - β).
Equations
- QEC1.BivariateBicycle.toMatrix ℓ m p = Matrix.of fun (α β : QEC1.BivariateBicycle.M ℓ m) => p (α - β)
Instances For
Section 6: Label Types #
Checks and qubits are labeled by (α, T) where α ∈ M and T ∈ {X, Z, L, R}.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
A labeled element: a monomial paired with a label type.
Equations
Instances For
Section 7: Bivariate Bicycle Code Structure #
The number of physical qubits: n = 2ℓm.
Equations
Instances For
The number of left qubits: ℓm.
Equations
Instances For
The number of right qubits: ℓm.
Equations
Instances For
n = numLeftQubits + numRightQubits
The number of X checks: ℓm.
Equations
Instances For
The number of Z checks: ℓm.
Equations
Instances For
Section 8: Parity Check Matrices #
H_X = [A | B] : ℓm × 2ℓm matrix (rows indexed by M, columns by M ⊕ M) H_Z = [B^T | A^T] : ℓm × 2ℓm matrix
Matrix representation of polynomial A.
Equations
- code.matA = QEC1.BivariateBicycle.toMatrix ℓ m code.polyA
Instances For
Matrix representation of polynomial B.
Equations
- code.matB = QEC1.BivariateBicycle.toMatrix ℓ m code.polyB
Instances For
Matrix representation of A^T = A(x⁻¹, y⁻¹).
Equations
- code.matAT = QEC1.BivariateBicycle.toMatrix ℓ m (QEC1.BivariateBicycle.transposeAlg ℓ m code.polyA)
Instances For
Matrix representation of B^T = B(x⁻¹, y⁻¹).
Equations
- code.matBT = QEC1.BivariateBicycle.toMatrix ℓ m (QEC1.BivariateBicycle.transposeAlg ℓ m code.polyB)
Instances For
matAT is the matrix transpose of matA.
matBT is the matrix transpose of matB.
The X parity check matrix H_X = [A | B]. Rows indexed by M (checks), columns by M ⊕ M (left ⊕ right qubits).
Equations
- code.parityCheckX = code.matA.fromCols code.matB
Instances For
The Z parity check matrix H_Z = [B^T | A^T]. Rows indexed by M (checks), columns by M ⊕ M (left ⊕ right qubits).
Equations
- code.parityCheckZ = code.matBT.fromCols code.matAT
Instances For
Section 9: CSS Orthogonality #
For a valid CSS code, H_X · H_Z^T = 0. This follows from AB^T + BA^T = 0 in F₂.
CSS orthogonality condition: A * B^T + B * A^T = 0 over F₂. This ensures commutativity of X and Z stabilizers.
Instances For
Section 10: Pauli Notation #
X(p, q) denotes an X-type Pauli acting on left qubits with pattern p and right qubits with pattern q. Similarly Z(p, q) for Z-type.
Support of a Pauli X(p,q) as a binary vector over left ⊕ right qubits.
Instances For
Support of a Pauli Z(p,q) as a binary vector over left ⊕ right qubits.
Instances For
Section 11: Order Properties of x and y #
Section 12: The Cyclic Permutation Matrix #
C_r is the permutation matrix for the cyclic shift i ↦ i + 1 on ZMod r. We define it using Equiv.Perm and relate it to the group algebra representation.
The cyclic permutation on ZMod r: i ↦ i + 1.
Equations
Instances For
x as a permutation on M = ZMod ℓ × ZMod m: (a, b) ↦ (a + 1, b).
Equations
- One or more equations did not get rendered due to their size.
Instances For
y as a permutation on M = ZMod ℓ × ZMod m: (a, b) ↦ (a, b + 1).
Equations
- One or more equations did not get rendered due to their size.
Instances For
x and y commute as permutations.
The permutation matrix of x is orthogonal: xᵀx = I.
The permutation matrix of y is orthogonal: yᵀy = I.