How statement and proof provenance work
The first chip identifies the source of the statement or construction; the second identifies the source of its local proof or verification.
- Literature-sourced: the exact statement appears in a cited source; only wording and notation differ.
- AI-adapted: a semantically identical restatement of literature-sourced material, modulo indexing, notation, and boundary cases adopted by the library.
- AI-generated: a genuinely novel statement formulated by AI, with no source for the claim itself.
These labels describe origin, not correctness: citations and verification chips remain separate evidence.
Stabilizer and CSS Codes, Syndromes, and Procedures
1 · Prerequisites
- Absolute and Conditional Convergence; Rearrangement; Products
- Algebraic Closure, Embeddings, and Separability
- Algebraic Extensions, Extension Degree, and Finite Fields
- Binary Operations, Monoids, Groups and Subgroups
- Bounded Linear Operators and Quotient Spaces
- Channels, Kraus, Choi, and Stinespring Representations
- Circuit Syntax, Denotational Semantics, and Measurement
- Classical and Quantum Error-Correcting Codes
- Compactness in Metric Spaces
- Completeness, Completion, and Uniform Continuity
- Complex Norms and Realification
- Complexification, Realification and Real Structures
- Composition Series, the Jordan–Hölder Theorem and Solvable Groups
- Congruences, the Integers Modulo n and the Chinese Remainder Theorem
- Construction of the Natural Numbers
- Construction of the Real Numbers via Cauchy Sequences
- Construction of the Real Numbers via Dedekind Cuts
- Continuity, IVT, EVT, and Uniform Continuity
- Controlled Gates, Phase, and Entanglement
- Cosets, Index and Lagrange's Theorem
- Countability and Uncountability
- Cyclic Groups and Direct Products
- Determinants of Matrices over a Commutative Ring
- Diagonalisation and the Minimal Polynomial
- Divisibility, Euclidean Domains, Principal Ideal Domains and Unique Factorisation
- Divisibility, Greatest Common Divisors and Bézout's Identity
- Dual Spaces, Bilinear and Quadratic Forms, and Sylvester's Law of Inertia
- Eigenvalues, Eigenvectors and the Characteristic Polynomial
- Filters and Ultrafilters
- Finite Averaging and Character-Theory Prerequisites
- Finite Counting, Factorials and Binomial Coefficients
- Finite Dimensional Normed Spaces and Riesz Lemma
- Finite-Dimensional Complex Inner-Product Spaces and Matrix Interfaces
- Foundations of the Real Numbers for Analysis
- Free Modules, Exact Sequences, Projective and Injective Modules
- Fundamental Trigonometric Identities
- Gaussian Elimination, Elementary Matrices and Reduced Row Echelon Form
- Group Actions, Orbits, Stabilisers and Cayley's Theorem
- Group Homomorphisms and the Isomorphism Theorems
- Hilbert Space Geometry and Riesz Representation
- Ideals, Quotient Rings and the Isomorphism Theorems for Rings
- Inner Product Spaces, Gram-Schmidt, Projections and Adjoints
- Knill–Laflamme Recovery and Subsystem Codes
- Limits of Real Functions
- limsup, liminf, and Subsequential Limits
- Linear Algebra Methods in Combinatorics
- Linear Independence, Bases and Dimension
- Linear Transformations, Rank-Nullity and Quotient Spaces
- Matrices, the Matrix of a Linear Map, and Change of Basis
- Measurements, POVMs, and Instruments
- Metric Spaces
- Modules, Submodules, Quotient Modules and the Isomorphism Theorems
- Monotone Functions, Discontinuities, and Continuity Sets
- Monotone Sequences, Bolzano-Weierstrass, and Cauchy Completeness
- Normal Subgroups and Quotient Groups
- Normed and Banach Spaces
- Order, Zorn's Lemma, and the Axiom of Choice
- Pauli and Clifford Groups, Binary Symplectic Tableaux
- Polynomial Rings, the Division Algorithm and Roots
- Power Series and Real-Analytic Functions
- Primes, Euclid's Lemma and the Fundamental Theorem of Arithmetic
- Properties of the Integral and the Working FTC
- Pure and Mixed States, Ensembles, and Schmidt Decomposition
- Qubits, Bloch Sphere, Pauli Algebra, and One-Qubit Gates
- Registers, Tensor Products, and Partial Trace
- Relations, Functions, and Quotients
- Rings, Subrings, Integral Domains and Fields
- Rⁿ as a Normed Space; Vector-Valued Functions
- Roots, Rational Powers, and Classical Inequalities
- Sequences and Limits
- Sequences and Series of Functions; Uniform Convergence
- Series: Convergence and the Nonnegative Tests
- Simple Field Extensions and the Construction of the Complex Numbers
- Sine, Cosine, and the Definition of Pi
- Splitting Fields
- Stabilizer Circuits and Gottesman–Knill Simulation
- Strongly Continuous Semigroups and Hille Yosida
- Suprema and Infima
- Sylow's Theorems, p-Groups and Nilpotent Groups
- Symmetric Groups, Cycle Decomposition and the Sign Homomorphism
- Tensor Products of Modules
- The Complex Exponential and Euler's Formula
- The Derivative and the Mean Value Theorems
- The Determinant of a Linear Operator, Cofactors and Cramer's Rule
- The Exponential Function
- The Fundamental Theorem of Algebra
- The Fundamental Theorem of Finite Abelian Groups
- The Galois Correspondence
- The Riemann Integral: Definition and Integrability
- The Spectral Theorem, Positive Operators and Singular Value Decomposition
- The ZFC Axioms and the Basic Set Constructions
- Topology of ℝ
- Triangularisation, Generalised Eigenspaces and Jordan Canonical Form
- Vector Spaces, Linear Subspaces, Span and Direct Sums
2 · Summary
This page develops stabilizer code spaces from commuting Hermitian phase-aware Pauli checks on physical qubits, defines their syndrome and logical-Pauli quotient, and proves the projector dimension and distance criteria. The CSS construction uses the nested-code convention with coset states indexed by ; no additional condition is assumed. The binary dot product is bilinear over and is not a positive-definite inner product.
The page gives finite syndrome procedures, a symplectic stabilizer encoder, and a relative square-patch surface-code example. Pauli phases are retained until a scalar quotient is explicitly taken. Circuit-level claims use the ordered-wire and chronological-composition conventions from the authored QC09 suppliers; measurement outcomes and classical corrections are modeled by finite projectors and observed instrument branches.
3 · Logical flowchart
4 · Definitions, theorems and proofs
CSS code from nested binary codes
Definition
Let and let be binary linear codes. Put . The CSS coset code associated with this nested pair is the subspace of the ordered -qubit register spanned by
Here addition is coordinatewise in , and is the computational-basis vector indexed by the bit string . The vector depends only on the coset . A basis of extended to a basis of chooses logical labels for the quotient ; the number of labels is . No additional inclusion is part of this nested-code convention.
For a binary code , uses the standard bilinear dot product, as defined in Bilinear dual of a finite-field linear code.
Facts & Assumptions
Given: Binary linear codes with .
Classical linear code over a finite field: a classical binary linear code is a subspace of with its finite vector-space dimension.
Finite registers and their ordered computational bases: the -qubit register has an ordered computational basis indexed by .
The computational basis is orthonormal gives an orthonormal basis of each factor. Equip their ordered tensor product with the inner product of Ordered tensor registers, their inner product, and wire permutations; then The product basis is orthonormal and tensor dimensions multiply makes the bit-string-indexed product basis orthonormal.
If and is a linear subspace of , then is finite-dimensional, , and if and only if : in finite dimension every linearly independent subset of a subspace extends to a basis of that subspace, without a choice principle.
Verification
Since , every has a coset in . If with , then permutes ; reindexing the finite sum gives . Thus the displayed vector is independent of the representative.
By [F4], , so . Extend a basis of to a basis of . If the dimensions are and , respectively, the added basis vectors span a complement with . Each coset has exactly one representative in , so , , is a bijection. Coordinate expansion in the chosen basis identifies with . There are such coordinate lists, since each of the coordinates has two choices; for there is one empty list. Hence .
For each coset, the basis vectors in its sum are distinct, so [F3] gives squared norm . Different cosets have disjoint supports in that basis, so their inner product is zero. The code space therefore has the orthonormal coset vectors indexed by .
Remarks
Cleve’s §37.3 gives a special CSS construction with an additional dual containment hypothesis. That hypothesis is not used here: membership in alone makes the coset vectors well defined.
Dimension of the binary dual code
Statement
For every binary linear code with , . This argument uses no form of the Axiom of Choice.
Facts & Assumptions
Given: A subspace , its bilinear dual, and the standard coordinate basis of .
The dual family of a finite basis is a basis of the dual space, with the same dimension: the dual family of a finite basis of a vector space is a basis of its algebraic dual, with the same dimension.
If and is a linear subspace of , then is finite-dimensional, , and if and only if : a finite-dimensional subspace admits extension of each independent subset to a basis without choice.
Rank-nullity: : for a linear map with finite-dimensional domain, domain dimension is the sum of kernel dimension and image dimension.
Proof
Let be the standard basis of . Its coordinate dual basis is , and for by [F1]. Thus the linear map , , sends a basis to the dual basis from [F2], so it is an isomorphism.
Choose a basis of and extend it to a basis of by [F3]. For every , define on the extended basis by and value on each added basis vector, then extend linearly. This is a linear functional on whose restriction to is . Hence restriction is onto.
The composite is onto by the isomorphism in step 1.1 and surjectivity in step 1.2. Its kernel consists exactly of those for which for all , namely by [F1]. Since by [F2], rank-nullity [F4] gives . Therefore .
Stabilizer code space
Definition
Let and let be an abelian subgroup of the Hermitian elements of the phase-aware Pauli group on the ordered -qubit register. Assume . The stabilizer code space is the common eigenspace
If are independent generators of , the associated stabilizer rank is ; independence means no nonempty product of distinct generators is . The code-space projector and its nonzero dimension are established by Stabilizer projector and code dimension ↗.
Remarks
The subgroup elements here are Hermitian Paulis in the phase-aware convention. The binary label records commutation but does not replace the phase needed to determine whether a generator fixes the code with eigenvalue .
Stabilizer encoder by symplectic elimination
Definition
Inputs. An integer and ordered rows representing independent, pairwise-commuting signed Hermitian Pauli generators on the ordered -qubit register.
Wire and factor indices. Tableau coordinates and circuit wire labels are . The one-based Pauli factor index corresponding to wire is ; factor occupies tensor position . Thus a one-wire gate on circuit wire uses supplier factor index , and a CNOT or SWAP on circuit wires uses supplier indices . The stored coordinates use the same zero-based order.
Tableau updates. For a current row , all phase entries are updated modulo and binary entries modulo . Conjugation by sends to ; by it sends these entries to ; by it sends them to . Conjugation by adds to and leaves the labels unchanged. Conjugation by interchanges with and with and leaves unchanged. For , update and and leave unchanged; all unmentioned binary coordinates are unchanged. Whenever a gate is appended to chronological , replace every current row by . For a row product , use the exact update .
Validity. If any row is not Hermitian, the binary labels are dependent, two rows fail to commute, or the generated subgroup contains , return INVALID. The independent commuting case with is valid.
Elementary gate alphabet. The output is a finite chronological list over . Here have the exact matrices in the cited gate definitions; is explicitly admitted as one primitive gate of this algorithm. No inverse or controlled black-box access is assumed.
Procedure. Keep the current rows phase-aware, an invertible binary row-operation matrix , and phase-aware input-combination rows . Initially , (the th input row), and the chronological gate list is empty. The invariant is that current row is and where sums in the binary labels are in and the product is in increasing input-row order. The input generators commute and square to , so this product is independent of order. Its phase exponent is the signed row-operation phase data. On a gate conjugation update the current tableau row and its phase, leaving and unchanged. On a row multiplication , update the current row by the exact phase-aware product, set over , and set using the exact Pauli product rule (thereby updating ). A row interchange swaps the corresponding rows of the current tableau, , and .
For each pivot position :
- Among rows , take the first row that is not identity on the unused wires, and let its row index be . If , interchange the complete current rows and and interchange the corresponding rows of and , including the phase entry of . This row interchange is not a circuit gate. Take the first unused wire of the pivot row with nonzero Pauli label. If , append the circuit gate to and conjugate every current row by it.
- On pivot wire and each later unused wire, normalize the pivot row's local factor: apply to turn into ; apply followed by to turn into ; leave and unchanged. Append each gate and update every row, including its phase.
- For each later wire where the pivot row has a , append and update every row. The pivot becomes either or .
- If the pivot is , append and update every row, making it . For each remaining row with a factor, multiply that row by the pivot row and update the binary row-operation matrix to clear .
For , return the empty gate list, empty and , and the unchanged logical register. On a valid input with , return , its reversed adjoint list as the encoder, and the signed row-operation data , with the associated defined by the invariant above. The returned checks satisfy for . The logical label basis is the ordered computational basis on the remaining wires, prefixed by .
Remarks
The procedure uses only finite tableau rows, deterministic first-pivot choices, and the declared gate list. Each appended gate can be read as a one-occurrence layer in Finite circuit syntax and ordered wire labels; the chronological gate list then denotes the product specified in Denotational semantics of a finite layered circuit. The algorithm explicitly lists as a primitive gate with its matrix and assumes no inverse-query access.
Square planar surface code
Definition
Fix an integer . Take the square grid with vertices for , unit horizontal and vertical edges, and square faces. Let consist of the left and right vertical boundary edges together with their vertices. The physical qubits are the edges not in ; there are such edges. Order vertices and faces lexicographically by their coordinates, and order physical edges lexicographically by their lower endpoint, with horizontal edges before vertical edges when endpoints tie.
Let be the binary vector space on vertices outside , the binary vector space on physical edges, and the binary vector space on faces. Define by sending each physical edge to the sum of its endpoints that are outside . Define by sending each face to its boundary with any edge in deleted.
The X-check matrix is , with rows indexed by vertices outside and columns by physical edges. The Z-check matrix is , with rows indexed by faces and columns by physical edges. Thus X checks are the rows of and Z checks are the rows of . The maps satisfy . The rough boundaries are the left and right sides; the top and bottom are the complementary dual boundaries.
Facts & Assumptions
Given: The finite grid, the relative chain spaces, and the two boundary maps just defined.
Generator and parity-check matrices over a finite field: generator and parity-check matrices use the declared finite coordinate order; a matrix row specifies a binary support vector.
The Pauli matrices: and are the exact Hermitian one-qubit Pauli matrices.
Verification
For each face, every vertex outside is incident to either zero or two of its boundary edges. If a boundary edge lies in , its endpoints are in and are omitted from . Therefore every nonrough vertex appears an even number of times in of that face, so .
The row vectors of and have binary dot products given by from step 1.1. Hence every X check commutes with every Z check; X checks commute among themselves, as do Z checks, since equal-type Pauli factors commute. This defines a commuting CSS stabilizer family without any physical or topological-order premise.
Remarks
The relative cellulation fixes every boundary convention. In particular, rough edges are removed from the physical register, and only vertices outside the rough boundary index X checks.
Stabilizer syndromes and logical Pauli operators
Definition
Let and let be a stabilizer subgroup generated by an ordered independent Hermitian list . For a phase-aware Pauli error , its syndrome is the bit string defined by
Here is the binary Pauli label and . The scalar center of is , and the normalizer is . The logical Pauli classes form the quotient group
A normalizer element is logically nontrivial exactly when it lies in . Multiplication by a scalar phase does not change a syndrome or logical class.
Facts & Assumptions
Given: The phase-aware Pauli group, its binary label, a stabilizer group , and an ordered Hermitian generating list.
Binary Pauli label and quotient: forgets only the scalar phase.
Pauli commutator is symplectic pairing: the Pauli commutator sign is .
Verification
Applying [F3] to and gives . The exponent is in , so it determines exactly one bit, and this verifies the stated sign-to-bit convention.
If for a scalar phase , then and ; the same commutation sign results. Equivalently, by [F1]. Hence the syndrome depends only on the Pauli coset modulo scalar phase.
If , write with and . The scalar commutes with every generator, and commutes with every generator because is abelian, so and its logical quotient class is the identity. Conversely the denominator of the displayed quotient is exactly the scalar phases times stabilizers; thus a normalizer element outside represents a nonidentity logical Pauli class.
Termination and gate count of symplectic stabilizer elimination
Statement
On every valid input of independent commuting signed Hermitian Pauli generators on wires, the phase-aware symplectic-elimination encoder terminates after pivots, uses at most elementary gates, and stores bits including its output gate list, excluding the read-only input tableau and the implicit wire count.
Facts & Assumptions
Given: A valid tableau with independent commuting rows and the procedure in the stabilizer encoder definition.
Stabilizer encoder by symplectic elimination: each pivot interchanges the selected row into row when needed, normalizes it to , clears all remaining rows on wire , and records the gates and signed row-operation data.
Hadamard pauli action: conjugation by exchanges the binary and coordinates.
Phase gate pauli action: conjugation by updates the binary label and tracks the phase exactly; its inverse gate has the inverse update.
CNOT Pauli action: CNOT conjugation updates the binary coordinates and phase exactly.
Proof
After pivots, the first rows are , and every remaining row has zero and coordinates on those wires. This holds before the first pivot. At pivot , the selected row is interchanged into row when necessary; the interchange also updates the signed row-operation data and is not a circuit gate. All circuit gates act only on unused wires. For any zero-based circuit wire , the one-based factor index in [F2]–[F4] is ; a CNOT with circuit control and target therefore uses supplier indices . The local Clifford gates turn each nonidentity pivot factor into , and [F4] clears every other pivot-row using a control on that wire and target . Commutation is preserved by conjugation, so remaining rows have no factor. Row multiplication by the pivot then clears without changing earlier wires.
The remaining binary row labels are independent on the unused wires: a dependence there would be a dependence among the original labels because all earlier coordinates are already zero. Since when , at least one remaining row is nonidentity on an unused wire. Thus every valid pivot finds a row and a wire, and the loop executes exactly iterations. This proves termination, including .
During one pivot, at most one SWAP is used. On each of at most unused wires, normalization uses at most two one-qubit gates. Clearing the pivot's other factors uses at most CNOTs, and correcting its sign uses at most one . The total is at most gates per pivot, hence at most overall.
The current phase-aware tableau and the phase-aware input-combination rows together store label bits and phase bits. The signed row-operation output stores bits for and bits for . The output has at most gates; each gate type takes constant space and each wire index takes at most bits. Their total is . For , the output and signed row-operation data are empty, as specified.
Stabilizer projector and code dimension
Statement
Let and let be an abelian group of Hermitian -qubit Pauli operators with , generated by independent checks. Then
is the orthogonal projector onto the stabilizer code space and has rank . In particular, the code space is nonzero, including when .
Facts & Assumptions
Given: and a stabilizer code space with independent generators on the ordered -qubit register.
Stabilizer code space: is the common eigenspace of every element of .
Stabilizer average is the fixed-space projector: the finite average is self-adjoint and idempotent with image .
Stabilizer projector rank and code dimension: for the same stabilizer subgroup of rank , its fixed-space projector has trace and image dimension .
An endomorphism is an orthogonal projection exactly when it is idempotent and self-adjoint: a self-adjoint idempotent on a finite-dimensional inner-product space is the orthogonal projection onto its image.
Stabilizer labels form an isotropic space of the same rank: the span of the binary labels of independent stabilizer checks has dimension , so the rank convention agrees with the generator count.
Proof
The subgroup in the Statement meets the definition in [F1]. By [F2], is self-adjoint and idempotent with image equal to the common eigenspace.
The rank- hypothesis is the same rank convention used in [F3]: independent Hermitian generators give a binary label space of dimension by [F5]. Therefore [F3] gives .
By [F4] and step 1.1, is the orthogonal projector onto . Since , this space is nonzero; the endpoint has rank one and gives the full -dimensional register.
CSS encoding dimension and commutation
Statement
Let , , and . The coset vectors from CSS code from nested binary codes define an isometric encoding of logical qubits. For every and , and commute, and each fixes every encoded coset vector. Their common eigenspace is exactly this encoding. The conclusion requires only ; it does not require .
Moreover, for every , the Hadamard transform is
The phase is independent of the representatives and .
Facts & Assumptions
Given: A nested pair , the ordered computational basis, and the Pauli operators .
CSS code from nested binary codes: each coset vector is , with labels in .
Bilinear dual of a finite-field linear code: is defined by the standard bilinear dot product on binary coordinate vectors.
Dimension of the binary dual code: for every binary linear code .
The computational basis is orthonormal: distinct computational basis vectors are orthogonal unit vectors.
The Pauli matrices: and for .
Pauli commutator is symplectic pairing: Pauli operators commute exactly when their binary labels have symplectic pairing zero.
Exact one-qubit gates and rotations: the Hadamard matrix is .
Stabilizer code space: the stabilizer code space is the common eigenspace of all checks.
Stabilizer projector and code dimension: a stabilizer generated by independent commuting Hermitian checks has common eigenspace of dimension , provided is not in the generated group.
Proof
There are distinct basis vectors in each coset sum. By [F4], its squared norm is . Distinct cosets have disjoint supports, so their vectors are orthogonal. By [F1] there are such vectors, giving an orthonormal basis indexed by a -bit logical register.
By [F5], for , sends to . Translation permutes , so fixes the whole coset sum. For , each and therefore ; the diagonal operator fixes every term. Thus both check families fix every encoded basis state and hence their linear span.
The binary labels of and are and . Their symplectic pairing is . Since and , this dot product is zero by [F2].
On a computational basis vector , multiplying the one-bit Hadamard formulas from [F7] gives . Substituting the coset definition [F1] yields . For , the inner sum is . Otherwise choose with ; translation pairs terms with opposite signs, so the sum is zero.
Choose independent bases of and . Their separate - and -type labels are independent: a zero combined label has both binary halves zero. By [F3] the combined number is . This includes .
The checks are commuting Hermitian Paulis by steps 1.3 and [F5]. They fix the nonzero encoding from step 1.2, so their generated group cannot contain . Step 2.1 gives independent checks; [F9] therefore gives their common eigenspace dimension . By step 1.1 the encoding has dimension , and step 1.2 says it lies in that eigenspace. Equal finite dimensions force equality: the CSS encoding is exactly the stabilizer code space [F8].
The transformed vector is supported exactly on , with constant magnitude on that set. Since , the phase is constant on each coset of in . Grouping terms by those cosets gives . The coefficient is because by [F3]. This is the dual coset basis Fourier transform; the pairing is independent of representatives since and .
Stabilizer encoder correctness
Statement
For every valid input of independent commuting signed Hermitian checks on wires, let the symplectic-elimination encoder return the forward gate list , its adjoint list , and signed row-operation data . Thus and, for each , the exact input product has recorded phase and satisfies . Define the logical Hilbert space and the encoding isometry by The vectors form an orthonormal basis of the stabilizer code space, which has dimension .
Facts & Assumptions
Given: A valid independent commuting signed Pauli check list on ordered qubits, its phase-aware tableau, and the encoder output.
Stabilizer encoder by symplectic elimination: the finite procedure records the chronological gate list and signed row-operation data , with and input-combination rows whose conjugates are .
Termination and gate count of symplectic stabilizer elimination: the pivot loop terminates after pivots on every valid input.
Hadamard pauli action: conjugates to and to with the exact phase update.
Phase gate pauli action: and its adjoint have the displayed exact phase-aware Pauli actions.
CNOT Pauli action: CNOT conjugation has the stated control-target binary update and tracks phase.
Stabilizer projector and code dimension: the input common eigenspace has dimension .
Finite circuit syntax and ordered wire labels: each gate occurrence specifies its ordered wire tuple, and the circuit records finite layers with their chronological order.
Denotational semantics of a finite layered circuit: a chronological layer list denotes on the ordered register.
The computational basis is orthonormal: the ordered computational basis of each finite qubit register is orthonormal.
Proof
The procedure terminates after pivots on every valid input by [F2]. By [F7]–[F8], each appended local gate acts on its ordered wires and the chronological list denotes its composed unitary. Each tableau coordinate and circuit wire corresponds to supplier factor , as fixed in [F1]; in particular, one-wire updates use factor and a CNOT on circuit wires uses supplier control and target indices . At each pivot, the local , , and transformations send the pivot row's nonidentity one-wire Pauli factors to signed factors. The step sends to by the inverse phase-gate action [F4], and then [F3] sends to . For each remaining pivot-row , the control-, target- CNOT changes the pivot label to by [F5]. If the resulting row is negative, changes to . Conjugation preserves commutation, while the exact phase-aware gate actions track every resulting sign.
Interchanging the selected pivot row into position and each subsequent row multiplication are invertible elementary operations on the generator list; the former swaps rows of and , and the latter updates them by the same binary row addition and exact Pauli product. Thus remains invertible and retains its recorded phase . Row multiplication by the pivot clears the remaining row's coordinate because that row has no coordinate: it commutes with the now- pivot. Consequently the transformed input-product rows are exactly , as asserted by [F1].
A vector is fixed by every for exactly when all its computational-basis coordinates with a among the first bits vanish. Thus the common eigenspace of the canonical checks is . By the row-basis equivalence in step 2.1 and the denotation [F8], this is exactly .
The ordered computational basis is orthonormal by [F9], and embeds the logical computational basis as an orthonormal family. The finite product unitary from [F8] therefore defines the isometry in the Statement and sends these vectors to orthonormal vectors in . Step 3.1 shows they span that space, and [F6] confirms its dimension is . Hence they form the stated stabilizer code basis.
Remarks
The ordered wire tuple and chronological product in [F7]–[F8] are the only circuit-semantic interfaces used; the finite list is viewed as singleton layers in that syntax.
Dimension of the logical Pauli quotient
Statement
Let and let be an -qubit stabilizer group generated by independent commuting Hermitian Pauli checks with . Then the logical Pauli quotient is a binary vector space of dimension . Consequently, it is nontrivial exactly when the stabilizer code encodes at least one qubit.
Facts & Assumptions
Given: , a stabilizer subgroup , its binary symplectic label space, and the normalizer/logical quotient convention.
Binary Pauli label and quotient: quotienting phase-aware Paulis by the scalar center identifies their binary labels with .
Stabilizer labels form an isotropic space of the same rank: the label image of is an isotropic subspace of dimension .
Pauli commutator is symplectic pairing: a Pauli commutes with every element of exactly when its label belongs to .
Stabilizer syndromes and logical Pauli operators: the logical quotient is .
Stabilizer projector and code dimension: the code dimension is , so the encoded-qubit count is .
Binary symplectic form: is nondegenerate on and .
If and is a linear subspace of , then is finite-dimensional, , and if and only if : every linearly independent subset of a finite-dimensional subspace extends to a basis, with no choice principle.
Rank-nullity: : the dimension of a finite-dimensional domain is the sum of the kernel dimension and image dimension.
The dual family of a finite basis is a basis of the dual space, with the same dimension: the algebraic dual of a finite-dimensional space has the same dimension.
Proof
By [F1], phase classes of Paulis are the vectors of . By [F2] the stabilizer labels form an -dimensional subspace . The commutator criterion [F3] identifies the normalizer labels exactly with . The scalar phases label zero, so the subgroup has image . Therefore is identified with .
The nondegenerate pairing [F6] gives an injective map , . Restricting functionals from to is onto: extend a basis of to one of by [F7], then extend each functional by assigning zero to the added basis vectors. Since by [F9], injectivity and rank-nullity [F8] make onto. Thus the composite is onto; its codomain has dimension by [F9], and its kernel is . By [F8], .
Since , the quotient dimension is . By [F5], is the number of encoded qubits; hence this dimension is , which is zero exactly when .
Stabilizer distance
Definition
Let and let be a stabilizer code on qubits whose code space has dimension . The stabilizer distance is
This is a set difference: it excludes scalar-phase multiples of stabilizers. If , define , since there is no nontrivial logical Pauli class.
Facts & Assumptions
Given: A finite stabilizer group on qubits, its logical Pauli quotient, and the quotient weight inherited from Pauli support.
Dimension of the logical Pauli quotient: when the code encodes qubits, has binary dimension .
Support and weight of an operator on a finite register: every Pauli has a well-defined integer weight between and .
Verification
If , [F1] gives a quotient of positive dimension, so it contains a nonidentity class. Any representative is a Pauli in the finite group , and [F2] assigns it an integer weight in . Thus the set in the minimum is nonempty and finite, so its minimum exists.
If , [F1] gives a zero-dimensional binary quotient, hence the quotient is trivial and . Therefore the set difference defining the finite-distance branch is empty, which is why the definition assigns .
Remarks
The weight is the number of physical qubits on which the Pauli is nonidentity. Scalar phases do not change it. The product set is not the definition of logical nontriviality; the relevant set is .
CSS syndrome correction
Statement
Let , be a nested CSS pair, and . For a binary code , define the local correction radius when and ; the classical distance keeps the convention . Define
where the minimum of an empty set is . Put . The separate syndrome decoders for the and components correct every Pauli error supported on at most qubits when . Under the same inequality, every finite error channel whose Kraus operators lie in the span of weight-at-most- Pauli operators satisfies the Knill–Laflamme condition and admits an exact recovery. The quantum distance of this CSS stabilizer is .
Facts & Assumptions
Given: , a nested pair , its CSS coset encoding and check operators, and the ordered circuit/measurement interfaces specified below.
CSS encoding dimension and commutation: the coset states form an isometric encoding equal to the common eigenspace; checks from and checks from commute and fix each encoded state. It also gives the dual-coset Hadamard transform supported on .
Bilinear dual of a finite-field linear code: consists of vectors whose dot product with every vector of is zero.
Classical distance gives error detection, unique decoding, and erasure recovery: equal parity-check syndromes force errors to differ by a codeword; two errors of weight at most with are equal.
CNOT and Control-Target Order: a CNOT with data bit as control sends an ancilla target bit to .
Exact one-qubit gates and rotations: exchanges the one-qubit and actions on the computational basis.
Quantum code as an isometric encoding and its code projector: an isometric encoding has code subspace and orthogonal projector .
An explicit syndrome recovery corrects a Knill–Laflamme error family: if for every pair of Kraus errors of a finite channel, a finite exact recovery channel exists.
Stabilizer distance: if the code encodes a qubit, its stabilizer distance is the least weight in ; for a zero-qubit code the distance convention is .
Pauli commutator is symplectic pairing: two Paulis commute exactly when their binary symplectic pairing is zero.
Stabilizer syndromes and logical Pauli operators: the normalizer is the Pauli centralizer of the checks, and logical classes quotient by scalar-phase stabilizers.
Phase aware n qubit pauli group: every Pauli is for a scalar phase and binary vectors .
The Pauli matrices: are the stated one-qubit matrices, with the stated Hermitian convention.
Ordered tensor registers, their inner product, and wire permutations: ordered tensor products identify local Pauli products with operators on the full register.
Support and weight of an operator on a finite register: an operator supported on a set of qubits acts locally there and as identity elsewhere; Pauli weight is the number of nonidentity sites.
Hamming weight and distance of a finite-field linear code: binary vector weight is the number of nonzero coordinates; the classical distance of the zero code is the finite sentinel .
Finite circuit syntax and ordered wire labels: circuit wires and local gate slots are ordered, and a circuit is a finite chronological list of layers with its first layer applied first.
Denotational semantics of a finite layered circuit: a circuit with chronological layers denotes .
Finite measurement branches and classical control: a finite controller may use the observed instrument outcome to select a specified finite unitary suffix; hidden Kraus indices are not observed outcomes.
Finite projective measurements: a finite projective measurement is a finite family of orthogonal projections summing to identity, with outcome weight .
Projective measurement outcome weights are probabilities: these projective outcome weights are nonnegative and sum to one.
Conditional state for a projective measurement: for an outcome of positive weight, the conditional state is .
The computational basis is orthonormal: distinct computational basis vectors are orthogonal unit vectors.
Generator and parity-check matrices over a finite field: a parity-check matrix for a code has ; its rows are independent, so when it is an invertible matrix.
If and is a linear subspace of , then is finite-dimensional, , and if and only if : a finite-dimensional subspace with the same dimension as its ambient space equals that space.
Proof
Choose a basis of . For an error , append ancillas and, for each and each coordinate with , apply CNOT from data wire to ancilla . On a computational-basis input , repeated use of [F5] gives , where the th parity is . Ordered wire placement and chronological gate composition are fixed by [F17]–[F18].
For a code basis vector , each belongs to , so . For the combined Pauli error , its action on is . The parity circuit therefore writes into the ancillas. The factor changes only the data amplitude, so the first syndrome extraction is unchanged by the component; it factors the state as a data density operator tensored with , where . The circuit maps are unitary by [F18], so . The kernel of is : symmetry gives , and [F3] gives equality of dimensions. By [F14] and [F23], are pairwise orthogonal projections summing to identity, hence form a projective measurement by [F20]. Its weights are probabilities by [F21]; because and for , [F20] gives weight at and elsewhere. [F22] leaves the data factor unchanged. The observed syndrome is , and the classical controller receives it by [F19].
Choose a basis of . Apply to every data wire, perform the parity circuit using the as parity rows, measure the ancillas, and then apply again unconditionally. The combined error is conjugated by these Hadamards to , since [F6] exchanges and on each wire. The Fourier identity in [F1] shows the transformed encoded state is supported on , so the parity vector is zero before the error. After the error, each supported basis word is shifted to , giving ancilla parity ; the diagonal factor changes only its data amplitude and leaves this parity unchanged. Thus the syndrome is independent of the logical coset and the state factors as a data density operator tensored with . The parity map has kernel by [F2]. Its circuit is unitary, so . For the -bit ancilla register, are the computational-basis projectors, so [F20]–[F21] give the unique outcome with probability one. Since fixes the product state, , and [F22] leaves the data factor unchanged. The unconditional final Hadamards return the data to the original basis with the same error, up to its original scalar phase. The finite controller records the observed syndrome by [F19].
If errors of weight at most have the same first syndrome, their difference lies in , since the first parity-check kernel is by [F24]. If , this immediately gives . If , then and [F4] gives . Likewise, equal second syndromes put in by [F2] and the second parity-map kernel. If , then directly; otherwise and [F4] gives equality. Thus each observed syndrome with a weight-at-most- error has at most one such error. For any syndrome with no such error, assign the zero vector as a default; this defines each total finite decoder, including the zero-code cases.
A Pauli error has the form by [F12], and [F15] shows that the supports of and lie among the same at-most- physical sites. By [F10], the Z-check syndrome depends only on and the X-check syndrome only on , so the two decoders determine both components. The finite controller of [F19] applies the selected correction; applying after the error returns every encoded vector to itself up to the scalar . Since both syndromes are independent of the logical basis label by steps 3.1 and 2.1, this correction preserves arbitrary superpositions.
Let , the group generated by the CSS checks in [F1]. They commute because for and ; their common code space is nonzero by [F1], so . By [F10] and [F12], commutes with all checks exactly when , and with all checks exactly when . The inclusion follows from [F2]; [F3] gives both spaces dimension , so [F25] gives . Hence the normalizer condition is exactly and . The labels of are exactly pairs with and , so logical triviality is exactly and . A nontrivial logical Pauli therefore has either or . Its weight is at least , and each nonempty difference set supplies a pure logical Pauli attaining its own minimum. If , inclusion and equality of their dimensions give by [F25]; their duals are equal, both difference sets are empty, and . The sufficient condition in the Statement implies because each pure logical weight is at least the minimum nonzero weight of its containing code. When , the least nontrivial logical Pauli weight is the stabilizer distance by [F9]; when , both sets are empty and the distance convention is . The physical support of is by [F15], and its binary-vector weights are given by [F16].
Let be the code projector. If a Pauli of weight less than anticommutes with a check , then [F1] gives , so and hence . If it commutes with all checks, step 6.1 and the definition of force it to be a scalar-phase stabilizer, so .
For Pauli errors of weight at most , the product has weight at most , so step 7.1 gives . On one qubit, direct substitution of [F13] gives the matrix-unit identities , , , and . For bit strings , the global matrix unit is the tensor product of these one-qubit matrix units; expanding that product expresses it as a linear combination of tensor Pauli operators. Every operator on the ordered computational basis has the matrix-unit expansion , so the tensor Paulis span the full operator space. By [F14]–[F15], every operator supported on at most sites is a linear combination of Paulis of weight at most . Bilinearity extends the scalar-compression condition to every pair of such Kraus operators.
The finite scalar-compression matrix from step 8.1 satisfies the hypothesis of [F8]. Hence the channel has an exact finite recovery.
Remarks
The parity circuits are read as finite one-gate layers in the ordered-wire semantics of [F17]–[F18]. The ancilla readout uses projectors on the parity register; the factorized output makes the syndrome deterministic, and [F22] shows the data factor is unchanged. The controller uses only the measured syndrome as its finite branch label, as specified by [F19].
Square planar surface-code distance and path count
Statement
For the relative square patch of Square planar surface code, the code encodes one logical qubit and has stabilizer distance . Every nontrivial Z logical class contains a rough-to-rough path of length at least , and a straight row attains . Every nontrivial X logical class contains a top-to-bottom dual path of length at least . For each , the number of self-avoiding rough-to-rough paths of length is at most .
Facts & Assumptions
Given: The relative boundary matrices of the square patch, its CSS stabilizer, and the logical Pauli quotient convention.
Square planar surface code: the relative grid has physical edges with left and right rough boundary edges removed; the maps satisfy , X checks are rows of , and Z checks are face boundaries with rough edges deleted.
CSS encoding dimension and commutation: if , the CSS code encodes qubits, with X checks from and Z checks from .
Stabilizer syndromes and logical Pauli operators: a Pauli is in the normalizer exactly when it commutes with every stabilizer generator; logical Paulis are the normalizer modulo scalar phases and stabilizers.
Stabilizer distance: distance is the minimum Pauli weight in when the code encodes a qubit.
Rank-nullity: : for a finite matrix, the dimension of its domain is the sum of its kernel dimension and rank.
Pauli commutator is symplectic pairing: two Pauli operators commute exactly when their binary symplectic pairing is zero.
Generator and parity-check matrices over a finite field: a matrix row specifies a binary support vector in the declared coordinate order.
If and is a linear subspace of , then is finite-dimensional, , and if and only if : finite-dimensional subspaces admit basis extension.
Proof
The grid has horizontal and vertical edges. Removing the rough vertical edges leaves physical edges. The grid has vertices, of which the two rough sides contain distinct vertices; hence has coordinates. There are faces.
The columns of are independent. If a face combination has zero boundary, its coefficient on each top horizontal physical edge is the coefficient of the unique face immediately below that edge, so all top-row face coefficients vanish. On the next horizontal row, each boundary coefficient is the sum of the face coefficients immediately above and below; the already-zero top row forces the next row to vanish. Repeating downward gives . Hence .
A self-avoiding left-to-right path starts with one of the horizontal edges from a left rough vertex into the patch. At each subsequent vertex the square grid has at most four incident edges, and the edge just used cannot be immediately traversed backwards, leaving at most three choices. Thus for length there are at most such paths.
The rows of are independent. Indeed, a linear combination of rows with coefficients that vanishes on every physical edge has at the endpoints of each such edge, where on . Every vertex outside is connected to by a horizontal path of physical edges, so these equations force every .
For a finite binary matrix with independent rows, its map into is onto. Otherwise its image is a proper subspace; by [F8], extend a basis of that image to a basis of and choose an added basis vector . Define a linear functional to be on and on every other vector of this basis. It is nonzero and vanishes on the image. In standard coordinates it is dot product with a nonzero coefficient vector, which gives a nontrivial linear combination of the rows of equal to zero, a contradiction. Thus the map rank is . Apply this argument to , using step 2.1, and to , whose rows are independent because they are the transposes of the independent columns of from step 1.2. Hence and ; also by the independent columns in step 1.2.
Put and . The chain identity from Square planar surface code gives . The independent rows in step 2.1 give , and [F5] with the map rank from step 3.1 gives . The CSS dimension theorem [F2] therefore gives .
A Z-type Pauli with edge support commutes with every X check exactly when , so its support is a relative cycle. The Z-type stabilizers are exactly , hence Z logical classes are . The chain identity gives . Extend a basis of to a basis of using [F8]; the added basis vectors project to a basis of the quotient, since they span it and no nonzero combination of them lies in . Therefore . By [F5], step 1.1 and step 3.1 give and , so the quotient dimension is .
For a relative cycle , let be the parity of its selected horizontal edges between columns and , for . Summing the relative vertex-boundary equations over columns cancels every interior edge twice and leaves only the two cut sets, so . Each face boundary has either zero or two horizontal edges in a given column strip, so vanishes on . The straight horizontal row has for every , and is therefore not a relative boundary. Since the quotient in step 4.2 is one-dimensional, every nonzero Z logical class has all ; it must contain at least one horizontal edge in each of the disjoint strips. Thus its weight is at least , and attains .
In the edge subgraph of a relative cycle, every vertex outside has even degree, so all odd-degree vertices lie in . The handshake identity shows there are an even number of them. Add one dummy vertex joined to each odd boundary vertex; every degree in the augmented finite graph is now even. Starting with any unused edge, follow unused edges: at a vertex other than the start, the number of used incident edges is odd, so its even total degree leaves an unused edge. Finiteness therefore closes the trail at its start. Removing this closed trail preserves even degrees; repeating decomposes all edges into closed trails. Deleting dummy edges leaves cycles and paths with endpoints in . Across any vertical cut, a cycle crosses evenly and a path crosses oddly exactly when its endpoints lie on opposite sides. Since , at least one path joins the left and right rough sides. Removing repeated-vertex loops leaves a self-avoiding such path contained in the support. It crosses each of the disjoint vertical cuts, so its length is at least .
For X-type supports, use the dual graph with one vertex per face and top and bottom exterior vertices, and one dual edge crossing each physical primal edge. The normalizer condition makes each face vertex even-degree, and X checks are the dual boundaries around vertices outside . Their quotient has dimension by step 4.1. A straight dual path from top to bottom is in the normalizer because it enters and leaves each face, and it crosses the straight Z logical row once. Since that Z cycle commutes with every X check, this odd intersection shows the dual path is not an X check; it represents the nonzero class.
For an X support , let be the parity of selected horizontal primal edges in row , for . Each X stabilizer has either zero or two such edges in each row, so every vanishes on the X stabilizer space. The straight dual path from step 6.2 has for all . Since the X logical quotient is one-dimensional, every nontrivial class has in each of the disjoint rows. Its weight is therefore at least . In the dual support graph every face vertex has even degree, so the finite even-degree decomposition from the path argument in step 6.1, now with top and bottom exterior vertices as boundary vertices, splits it into cycles and paths ending at those exterior vertices. A cycle and a path with both endpoints at the same exterior vertex cross each horizontal cut evenly; since every , at least one path joins top to bottom. Every such path has length at least , and the straight dual path attains this bound.
Step 5.1 and step 6.1 show that every nontrivial Z logical support contains a self-avoiding left-to-right path, so the path count bounds the number of candidate logical paths of each length. Step 5.1 and step 7.1 give minimum nontrivial Z and X logical weights and , respectively. For a general normalizer Pauli , the CSS commutation equations require and separately to normalize the checks. If both components are scalar-phase stabilizers then so is their product, so a nontrivial general class has at least one nontrivial component. Its physical support contains the support of each component, since an overlap gives a nonidentity factor rather than cancellation. Thus its weight is at least , and the straight Z row attains . Since by step 4.1, [F4] gives stabilizer distance .
Remarks
The count is a combinatorial upper bound on candidate paths, not a decoding failure probability. The proof uses the exact relative cellulation and no diagram.
Stabilizer distance detection and correction
Statement
Let and let be a stabilizer code on qubits of distance . Every Pauli error of weight less than either acts as a scalar on the code space (when ) or is detected by some stabilizer check. A finite error channel whose Kraus operators lie in the span of Pauli operators of weight at most , for , is correctable whenever . In particular, all unknown Pauli errors of weight at most are correctable.
Facts & Assumptions
Given: , an -qubit stabilizer code with projector , distance , and a finite family of Pauli or bounded-support error operators.
Stabilizer distance: if the code dimension is with , is the minimum weight of a normalizer Pauli outside . If , the logical quotient is trivial, so and .
Stabilizer syndromes and logical Pauli operators: a Pauli outside the normalizer anticommutes with at least one stabilizer generator.
Stabilizer code space: the code space is the common eigenspace of every stabilizer element.
Stabilizer projector and code dimension: is the orthogonal projector onto the common eigenspace; for every stabilizer , .
An explicit syndrome recovery corrects a Knill–Laflamme error family: if for a finite channel's Kraus operators, a finite exact recovery exists.
The Pauli matrices: the matrices are the exact one-qubit Pauli basis matrices.
Ordered tensor registers, their inner product, and wire permutations: ordered product bases identify tensor products of one-qubit operators with operators on the physical register.
Support and weight of an operator on a finite register: support is the set of qubits on which an operator can act nontrivially, and Pauli weight is its support size.
Proof
Let be a Pauli of weight less than . The code space is the common fixed space by [F3], and [F4] gives for each . If anticommutes with some , then and hence . If instead commutes with every , then . For , its weight is below the minimum in [F1], forcing ; for , the same conclusion follows from . Writing gives . Thus every such Pauli has scalar code-space compression, and every nonzero one not in the scalar-phase stabilizer is detected.
Enumerate the tensor Paulis of weight at most with factors in as ; scalar phases do not affect correction. For any pair, the support of lies in the union of their supports, so its weight is at most . Step 1.1 gives for a scalar . Let be the inclusion of the nonzero code space, so by [F4]. Each is unitary by the matrices in [F6] and their tensor action [F7], so are Kraus operators of the channel : each summand is a unitary conjugation and . Applying [F5] to gives a recovery . Its off-diagonal formula gives , since . Thus this single recovery corrects every Pauli in the family.
On one qubit every matrix has the expansion , as direct substitution of [F6] verifies. In the ordered one-qubit basis, the matrix units satisfy , , , and . For bit strings , [F7] identifies the global matrix unit with the tensor product of the corresponding one-qubit matrix units, so each global matrix unit is a linear combination of tensor Pauli operators. Every endomorphism has its matrix-unit expansion in this ordered computational basis; hence tensor Pauli operators span the full operator space. An operator supported on a fixed set of at most qubits is a linear combination of the tensor Paulis that are identity off that set, so each term has weight at most . For Kraus operators in the stated span, by step 2.1. The code is nonzero by [F4], so [F5] applies to this actual finite channel and gives exact recovery.
5 · Examples, counterexamples and false statements
Steane seven-qubit CSS code
Example
Let the columns of the binary parity-check matrix be the seven nonzero vectors :
Put and . A generator matrix for is , where the row-basis matrix is
The encoded basis is
The six stabilizer checks are the three operators with supports given by the rows of , followed by the three operators with the same supports. The logical operators may be taken as and . For site , write for column of . With the stated generator order, the three single-site syndromes are
Facts & Assumptions
Given: The displayed binary matrices, the standard dot product, and the Pauli matrices on the ordered seven-qubit register.
Generator and parity-check matrices over a finite field: a parity-check matrix defines the code , and its independent rows span the bilinear dual of that code.
CSS encoding dimension and commutation: nested binary codes give orthonormal coset states, with commuting and checks.
Stabilizer syndromes and logical Pauli operators: a syndrome bit records whether an error anticommutes with its ordered Hermitian generator.
Stabilizer projector and code dimension: independent stabilizer checks on qubits have code dimension .
CSS syndrome correction: the separate CSS syndromes identify and correct the bounded-weight and components under the stated distance inequality.
Dimension of the binary dual code: for a binary code in length , .
Verification
The columns of are the seven distinct nonzero elements of , so they span and . The first four columns of form the identity matrix, so has full row rank . Direct coordinate dot products give , so the row space of lies in . Rank-nullity gives ; therefore and .
The rows of are independent because . Their pairwise dot products are zero: each row has weight four and every two distinct rows overlap in two coordinates. Hence , so and . The quotient dimension is . Every vector in is orthogonal to every row of , so ; both dimensions are by step 1.1 and [F6], so . Also and , so ; both dimensions are , hence .
No weight-one vector lies in because every column of is nonzero. No weight-two vector lies in because its syndrome is the sum of two distinct columns, which is nonzero. The vector is in because . Thus .
Every nonzero word of is a nonzero linear functional evaluated on the seven nonzero vectors of . Such a functional is on exactly four of the eight vectors, and is on the zero vector, so every nonzero word of has weight four. Therefore , and represent nontrivial logical classes, and their commutator is .
The row spaces of used for the and checks commute because . Their six labels are independent: the three -type labels are independent among themselves, the three -type labels are independent among themselves, and the two label halves are separate. Hence and [F4] gives code dimension . These checks stabilize the two displayed coset states by [F2].
The columns are nonzero and pairwise distinct. By steps 2.1 and 2.2, , so [F5] applies with . The syndrome formulas in the Example follow by counting the overlaps between and each ordered check. The three syndrome blocks distinguish the Pauli type, and within each type the nonzero distinct column identifies the site. Thus all single-site Pauli errors have distinct syndromes and are corrected by [F5].
Sources
- Richard Cleve, Quantum Information Processing course notes, §§37.1–37.3
- John Preskill, Quantum Computation, Chapter 7: Quantum Error Correction
- Richard Cleve, Quantum Information Processing course notes, §37.1.1
- Ronald de Wolf, Quantum Computing: Lecture Notes, §20.1
- Ronald de Wolf, Quantum Computing: Lecture Notes, §20.3
- Scott Aaronson and Daniel Gottesman, Improved Simulation of Stabilizer Circuits
- Eric Dennis, Alexei Kitaev, Andrew Landahl, and John Preskill, Topological quantum memory
- Richard Cleve, Quantum Information Processing course notes, §37.3