Binary simplex code Created 2026-09-24 Updated 2026-10-14
The binary simplex code is the dual of the binary Hamming code. For redundancy it has parameters .
Its relation to the Hamming code is duality, not equality of the code families.
Let generate , , and set . The binary cyclic code defined by has a parity-check matrix consisting of every nonzero vector of once, after choosing a basis and ordering its columns. It is therefore a Hamming code. Its generator polynomial is the minimal polynomial of an algebraic element , of degree .
The binary linear code known as the Hamming code of length seven is the kernel of a parity-check matrix whose columns are all the nonzero vectors of . Its dimension is four. No one-column or two-column sum vanishes, but some three-column sum does, so its minimum Hamming distance is three. The syndrome of a one-bit error is its column, uniquely identifying the erroneous position.
For , a codeword in a Hamming code is a subset of the nonzero vectors of whose sum is zero. Ordered weight-three supports of a vector are determined by two distinct nonzero vectors, giving choices. For weight four, the third vector must avoid the three nonzero vectors in the linear span of the first two, giving choices. For weight five, the first three must be linearly independent, and the fourth must avoid all seven nonzero vectors in their linear span, giving choices. The final vector is their sum. Dividing by , , and counts unordered supports of a vector and proves the displayed weight enumerator coefficients.
Write the Steane code basis as uniform quantum superpositions over a binary linear code and a disjoint coset , where is the even-weight part of the length-seven Hamming code. For , diagonal Pauli Z gates cannot connect the two cosets. Within coset , the overlap is
If , translation by a word with negates this sum, so it vanishes. Since the dual code is the length-seven Hamming code of minimum Hamming distance three, every nonzero of Hamming weight one or two has vanishing overlap. Taking from proves the displayed identity. The eight two-dimensional error images are orthogonal, so their projective measurement determines the error syndrome without revealing the logical state; applying the identified phase flip again recovers every code state. This proves nondegenerate quantum error-correcting code behaviour for the identity and all single-site phase flips, including their coherent linear span.
For a binary linear code , define the linear functional . This is the parity of the Hamming weight, so the even-weight subcode of a binary linear code is
If , then . Otherwise its image is all of , and rank-nullity theorem gives . The kernel of a linear map is a linear subspace, proving the required dichotomy including closure under addition.
Let be a full-rank generator matrix. Messages correspond bijectively to codewords . If the th column is nonzero, the coordinate is a nonzero linear functional. Choose with . Translation pairs the messages with coordinate zero and those with coordinate one, so exactly codewords contribute one at position . Summing over the columns proves the total weight of a full-support binary linear code formula
A zero column would contribute zero instead, explaining the hypothesis.
For the Hamming code, use a parity-check matrix whose columns are all nonzero vectors of , once each. Then and . The sum of all columns is zero: each coordinate occurs as one exactly times, which is even for . Consequently
Under this column labelling, the support of a vector of a codeword is identified with a set of distinct nonzero columns whose sum is zero. No one-column or two-column support of a vector has this property, confirming .
We can count the low-weight coefficients of a binary Hamming code directly. For weight three, choose ordered distinct nonzero columns in ways. The third must be , which is nonzero and different from both. Every unordered support of a vector has orderings, so .
For weight four, the first two columns are again distinct and nonzero. The third must avoid , giving possibilities. The fourth is ; it is nonzero because , and cannot equal any of the first three because those are distinct. Conversely every ordered zero-sum four-tuple arises in this way. Dividing by gives .
For weight five, the first three columns must be linearly independent. If , the sum condition would force the fourth and fifth to coincide. Thus there are choices for the first three. Put . The fourth column must avoid all seven nonzero vectors of their linear span: would repeat a column; would force the fifth column to be zero; and would force the fifth column to be , respectively. Conversely, if avoids these seven vectors, is nonzero and distinct from . This gives choices for and determines . Dividing by yields
At , the last count is zero, as the argument also shows.
The dual code is the row space of , so its codewords are for . For nonzero , the linear functional takes value one on exactly half the vectors of , by the same translation-pairing argument used above. Removing the zero vector removes only a zero value, so the Hamming weight is still . Since has matrix rank , distinct give distinct codewords. This proves the constant weight of a binary simplex code and its full distribution:
In particular, the ordinary weight enumerator of the binary simplex code is .
Apply the MacWilliams identity to this dual code, whose size is . For , the result is
The coefficient of in the second product is a value of the binary Kravchuk polynomials
These bounds merely enforce and . Since , they agree with the bounds in the PDF. Therefore the requested formula is
For a further check on the low-weight counts, gives
Thus , , and . Substituting these into the boxed formula and using reproduces the three direct combinatorial counts above.
Finally, at the only possible term in the defining sum has , so , because is even. Consequently
The unique length- binary word of weight is the all-ones word, exactly as proved by the parity-check matrix calculation.
Over a finite field , a linear code of length and dimension is a -dimensional subspace . A full-row-rank generator matrix gives , using row-vector messages. A full-row-rank parity-check matrix gives . The dual code is , of dimension . Thus the rows of span , and
Conversely the rank conditions and imply that the row space of equals the kernel of , by inclusion and equality of dimensions.
For a CSS code, specialize to binary linear codes , of dimensions . Define orthonormal encoded states
Different cosets have disjoint computational-basis support. Their span has dimension , so it encodes logical qubits. For binary vectors write and . The stabilizer generators are for a basis of , and for a basis of . They fix each encoded state: the former permute its coset terms and the latter contribute phases . Their commutation relation is , so the classical dual inclusion makes them commute. There are independent checks, giving precisely this encoded space.
For a Pauli error , the Z checks give bit-error syndrome , where checks , and the X checks give phase-error syndrome , where generates and hence checks . Classical decoders therefore correct up to bit flips and phase flips if and . A Y error has both components; it is not omitted from this correction scheme.
For the precise quantum code distance, harmless stabilizer errors must be excluded. A pure-X error preserves the code exactly when , and is a stabilizer when ; a pure-Z error preserves it when , and is a stabilizer when . Consequently, for ,
A mixed Pauli error has weight equal to the size of the union of its X and Z supports. If it is a nontrivial logical operator, at least one component is nontrivial, so its weight is at least ; pure-X or pure-Z operators attain that minimum. Thus arbitrary-qubit errors are correctable: products of two such Pauli errors have weight below and act scalarly on the code, or take it to an orthogonal syndrome sector. This is the Knill--Laflamme condition. Expanding arbitrary errors in the Pauli basis extends correction to their coherent linear span.
An explicit example is the Steane code. Take to be the binary Hamming code with
The distinct nonzero columns show that has no weight-one or weight-two word, while three dependent columns give a weight-three word. Hence its classical distance is three. Direct multiplication gives , proving . Every nonzero word of has weight four, so the logical X and Z distances are both three. Its six stabilizer checks are the X and Z strings given by the three rows of . A logical basis is the uniform superposition over and over , since . The resulting CSS code corrects every single-qubit error.
A binary block code of length is a nonempty subset . Its size is , the number of distinct codewords. The Hamming distance counts coordinates at which two words differ. The code's minimum Hamming distance is when there are at least two words. No pairwise minimum exists for a singleton code; it can be assigned as a convention when needed.
A binary linear code is a vector subspace of . If its dimension is , a generator matrix has a basis of as its rows, giving
To match the coordinate-row convention, take a parity-check matrix of size , with independent columns, and define
The transpose is the usual parity-check matrix with one column per coordinate. By rank-nullity theorem, the displayed kernel has dimension . The two constructions agree when : the generator's row space lies in the parity-check kernel and has the same dimension, hence equals it. Conversely, for a given , choose the columns of as a basis of its dual code ; orthogonality and the dimension formula give exactly as the kernel.
For a nonzero linear code, is a nonzero codeword whenever are distinct codewords, and . Conversely compare any nonzero codeword with zero. Thus the minimum Hamming distance of a linear code is the least nonzero Hamming weight.
Write for the row associated with coordinate . A nonzero binary vector is a codeword exactly when
Its nonzero coordinate positions therefore index a linearly dependent set of rows. Conversely, a dependence among a set of rows has coefficients in , not all zero; putting these coefficients in the corresponding coordinates gives a nonzero codeword of weight no greater than the number of rows in that set. Taking minima in both directions proves the parity-check dependencies determine minimum distance criterion:
Rows here are indexed by positions: equal row vectors at different positions are two distinct members of the indexed family. In the usual matrix convention, the same result refers to columns of . For the zero code, neither a nonzero codeword nor a dependent coordinate set exists, so both minima can consistently be interpreted as .
For the Hamming code, let , set , and let the rows of be all nonzero vectors of , each once. These rows include the standard basis, so has rank and the code has dimension and size . There is no dependence involving one row, because no row is zero, or two rows, because no rows are equal. For , any two distinct nonzero vectors have a distinct nonzero sum , which is another row. These three rows sum to zero. Thus for .
The perfectness of a Hamming code also has a direct decoding proof. Given any received word , its syndrome is . A zero syndrome means . Otherwise it equals exactly one row . The vector then has syndrome zero and is the unique codeword obtainable by changing one coordinate. There is no other codeword at distance at most one: its necessary correction would have to have the same syndrome, and among zero and all single-coordinate errors the syndromes are precisely the distinct vectors of . Therefore the radius-one Hamming balls about codewords partition .
Equivalently, each ball contains words; disjointness and show that none are uncovered. Hence every nondegenerate binary Hamming code is a perfect single-error-correcting code. For , the construction is the singleton code , whose one radius-one ball is also the whole ambient space. This deals with the degenerate boundary without falsely claiming its minimum distance is three.
Use the homogeneous weight enumerator convention
Thus records ones, records zeros, and the ordinary weight enumerator is . For a binary linear code of dimension and its dual code , the MacWilliams identity is
or, equivalently, . The second form applies the first to the dual and uses .
One can verify the variable order directly from the character identity . If is not orthogonal to , translation by a codeword having odd inner product pairs positive and negative terms, giving zero; otherwise all terms are one. After multiplying by and summing over , coordinate contributes when , and when . Their product is exactly the stated substitution.
For a Hamming code with , its dual is the binary simplex code, generated by the rows of the usual parity-check matrix . There are dual words. A nonzero message produces the evaluations as runs over all nonzero vectors of . Exactly of them are one: the nonzero linear functional takes each value equally often on the whole vector space, and removing zero removes a zero value only. This proves the constant weight of a binary simplex code.
Put , so . The dual enumerator is therefore . Applying the MacWilliams identity gives the Hamming code weight enumerator
In one variable this is
For example, gives ; gives . For , the expression is , agreeing with the singleton code. Setting in the homogeneous formula gives , the correct number of codewords.
Let , and write for any odd-weight word . The parity functional on the four-dimensional binary linear code is nonzero, so its kernel has dimension three and its other fibre is the coset . For example belongs to the standard length-seven Hamming code and has odd Hamming weight. Denote the two logical basis states by and , corresponding to these two cosets. The eight computational orthonormal basis vectors in each sum are distinct, so both logical states have norm one; their disjoint supports make them orthogonal.
For a binary vector , define the product of Pauli Z gates
where the dot product is computed modulo two. The key diagonal overlap, with and , is
If , every summand is one. If , choose with . Translation permutes and negates every summand. The sum must then be zero. Thus
Off-diagonal logical overlaps vanish for every :
because a diagonal Pauli operator cannot move a computational basis word from one coset to the disjoint other coset.
The possible errors are and for . Set . Each phase flip is its own adjoint and inverse, so
If , the vector is nonzero and has Hamming weight one or two. By the given dual code identity and the minimum Hamming distance three of the Hamming code, it cannot belong to . Hence all its diagonal logical overlaps vanish. If , the product is the identity and its logical overlaps are . Combining both cases gives
This proves the Knill--Laflamme condition with an identity error-overlap matrix, not merely a possibly degenerate scalar matrix. In particular the eight two-dimensional error subspaces are mutually orthogonal. This is precisely nondegenerate phase-flip correction in the Steane code.
To exhibit recovery rather than only the criterion, let be the orthogonal projector onto the code and . The projective measurement consisting of these eight mutually orthogonal projectors, completed by , determines which error occurred. For an arbitrary encoded pure state affected by , outcome occurs with certainty and leaves unchanged. Applying again recovers . The outcome gives the error syndrome and does not reveal or , so recovery preserves logical quantum superpositions.
An equivalent explicit error syndrome uses three commuting X-type stabilizer generators. Choose a parity-check matrix for with the seven different nonzero binary columns:
Its rows span . For a row , the operator permutes each of and , and therefore has eigenvalue on both logical states. A phase flip at position changes its eigenvalue to , since . Measuring the three commuting stabilizer generators gives the th column of as a binary syndrome; no error gives the zero column. All eight outcomes are different, and applying the identified restores the code state. Measuring these stabilizer generators never distinguishes the two logical states.
Finally, if a noise Kraus operator is a coherent linear combination , the same syndrome measurement separates its mutually orthogonal components . Conditional recovery returns in every nonzero branch. Linearity then also corrects any quantum channel whose Kraus operators lie in this span. The argument therefore corrects arbitrary unknown single-site phase flips nondegenerately, including coherent phase-error amplitudes, rather than only a known error on a basis codeword.
Represent a word in the Hamming space by the polynomial . A cyclic code is a linear code invariant under the cyclic coordinate shift . Under this identification the shift is multiplication by modulo . A shift-invariant vector subspace is closed under multiplication by every polynomial, since such multiplication is a linear combination of shifts. It is therefore an ideal of
Conversely every ideal of is a vector subspace closed under multiplication by , hence a cyclic code. Invariance means equality under the shift, since applying it times is the identity.
Let be the inverse image of the code ideal under the quotient map . It contains and is nonzero. Choose a nonzero element of of smallest degree and scale it to a monic polynomial . For any , polynomial division gives with . Since , minimality forces . Thus and in particular
This is the required generator polynomial of a cyclic code; the divisibility direction in the printed formula is reversed. The quotient-ring modulus is , with denoting the multiplicative identity of the finite field. If , every codeword has a unique representative with . Indeed reduction of modulo gives this form, and two such products cannot differ by a nonzero multiple of because their difference has degree less than . Therefore
For the zero code the convention is and this basis is empty; for the full word space .
The zeros of a cyclic code are the polynomial roots of in a splitting field of . Suppose first that the characteristic of does not divide . The formal derivative of is , which has no common root with ; all roots of are therefore simple. If they are , then is equivalent to for all . A root-evaluation parity-check matrix of a cyclic code, written with checks as rows, is consequently
Its entries may lie in , rather than in the original finite field. To obtain a parity-check matrix over , choose a basis of over and replace each equation by the equations for all of its field coordinates. The resulting matrix has the same kernel , hence rank ; retain any independent rows. More economically, choose one root from each Frobenius conjugate orbit. For , , so checking one representative checks its whole orbit. Expanding that representative's equation in a basis of gives precisely the number of checks equal to its orbit length.
No coprimality hypothesis is stated in the question, so the repeated-root cyclic code case must also be distinguished. Distinct roots alone cannot determine these codes: in , the generators and have the same zero, but generate codes of dimensions one and zero. In general write in . The correct checks are
using Hasse derivatives. Indeed , so vanishing of the first coefficients is equivalent to divisibility by . A repeated-root parity-check matrix over thus has rows indexed by and entries
As before, expand to equations over and retain independent rows. The ordinary root-evaluation matrix is exactly the special case .
For the binary Hamming code, let , , and let generate the multiplicative group of a finite field . This is possible because that group is a cyclic group. Choose a basis of over . The coordinate columns of then run through every nonzero vector of exactly once. They are a parity-check matrix for a Hamming code, possibly after permuting the columns of a given Hamming matrix. Thus
is equivalent to the Hamming code. Multiplication by modulo multiplies its evaluation at by , so is a cyclic code.
The parity-check matrix has rank because its columns contain a basis. It has no zero column or repeated column, so no nonzero word of weight one or two is in its kernel. Two distinct nonzero columns have a nonzero sum, which is a third distinct column; these three columns give a word of weight three. Hence has parameters .
A polynomial over vanishes at exactly when it is divisible by its minimal polynomial of an algebraic element . The finite-field Frobenius automorphism gives all conjugates of as . Their orbit length is : if with , then the order of would divide , which is a smaller positive integer. Therefore the Hamming code as a cyclic code has
The last exponent here is . The printed exponent would give , which is not a root of the degree- irreducible minimal polynomial of an algebraic element for .
A cyclic binary code is a linear subspace of invariant under cyclic shifts. Identify a word with its coefficient polynomial in . Multiplication by is the shift, so the code is precisely an ideal of that quotient ring. Its inverse image in the polynomial ring is a principal ideal containing ; its unique monic generator divides . Conversely each monic divisor generates such an ideal. Thus the bijection is with monic divisors; gives the full code and the zero code.
For odd , some has , so the cyclic multiplicative group of contains a primitive th root . If a nonzero word with the specified roots had weight , write its nonzero positions as . The root equations give
Their matrix has determinant , by the Vandermonde formula and distinctness of the positions. Thus all coefficients would vanish, a contradiction. Hence minimum distance is at least .
For , choose with minimal polynomial . The roots force also the conjugate , giving this cubic as generator. Its degree gives dimension four and its weight gives distance exactly three. Expressing in a basis of gives a parity-check matrix with the seven distinct nonzero vectors of as columns. This is the binary Hamming code. Its sixteen disjoint radius-one balls have words, so one-error correction is perfect. The other primitive cubic produces an equivalent coordinate-permuted code.
Use binary codes, so the polynomial modulus is in . A cyclic code is a linear subspace of invariant under the cyclic shift . Identify a word with . Addition is coefficientwise, and multiplication is polynomial multiplication reduced modulo . In the quotient ring
multiplication by is exactly that cyclic shift. Closure under this map and linear combinations gives closure under multiplication by every polynomial, so a cyclic code is an ideal of . Conversely, an ideal is a linear subspace closed under multiplication by , proving the correspondence.
Take the inverse image of in . This is an ideal containing . The polynomial division algorithm shows directly that it has a unique monic generator : choose a nonzero polynomial of least polynomial degree and divide any other member by it; the remainder is in the ideal and has smaller polynomial degree, so must vanish. If two monic generators existed, mutual divisibility would make them equal. Because belongs to the ideal, . Conversely every monic divisor of defines an ideal of . Thus the generator polynomial of a cyclic code satisfies
For a nonzero code, is its nonzero polynomial representative of least polynomial degree. For the zero code, use , whose residue in is zero; this standard convention covers that endpoint despite its having no nonzero codeword.
Let and , and put . Every codeword has a unique representation with : dividing an arbitrary multiplier by does not change its product with modulo . The words have distinct leading degrees below and are independent. Consequently
The statement remains valid for the zero code, with an empty basis, and the full code, with .
For length 16, characteristic two gives . Its only monic divisors are for . Hence all binary cyclic codes of length a power of two in this case are
There are exactly 17 codes, forming the chain . This is a repeated-root cyclic code situation, so it would be incorrect to count just square-free factors. Their canonical check polynomials of a cyclic code are . An explicit expansion of each generator is .
The canonical check polynomial of a cyclic code is
Indeed means . Since , cancellation in the polynomial ring gives , exactly code membership. No coprimality of and is needed, including for length 16.
There is a normalization qualification in the printed definition. The kernel condition alone does not force the supplied polynomial to equal this canonical . If , write and with . Then holds exactly when , so its kernel is the ideal generated by . Therefore
Equivalently with . Requiring the monic divisor of selects the canonical check polynomial of a cyclic code. For example gives the same kernel as , since is a unit modulo , but is generally a different polynomial. Given any permitted , taking recovers the canonical .
To construct a parity-check matrix, write the canonical and its reciprocal polynomial . Take coefficient vectors, padded to length , of
as the rows of . Here because , so these rows have successive leading degrees and are independent. For a word , row has dot product , the coefficient of in the ordinary product . If , then with . This product has no terms in degrees , so . The kernel of has dimension , the same as , proving . This proves the reciprocal-polynomial parity-check matrix construction and identifies its rows as a basis for the dual of a cyclic code.
Alternatively, a supplied check polynomial of a cyclic code reduced modulo , , gives the polynomial multiplication parity-check matrix
This circulant matrix represents multiplication by modulo , so its kernel is and its matrix rank is . Selecting independent rows yields a rank- parity-check matrix even without initially normalizing the supplied polynomial.
The syndrome labels the coset . Indeed if and only if , equivalently . There are cosets, each with words, and the syndrome classification of code cosets gives a bijection between them and . If is a transmitted codeword plus an error, then : the syndrome determines the error coset. Choosing a minimum-weight coset leader and subtracting it performs minimum-distance decoding. The error itself need not be uniquely identified, but it is unique when its weight is at most , since the corresponding error-correction balls are disjoint.
For the repetition code, the nonzero codeword is the all-ones word, so
Their product is , and the generator polynomial degree gives dimension one. For the single parity-check code, membership is , equivalent to divisibility by . Thus
Its dimension is ; it is the even-weight code.
Finally, factor the binary length-seven modulus:
A standard cyclic realization of the Hamming code of length seven uses
Its dimension is four. The reciprocal-check construction gives
Its columns are exactly the seven distinct nonzero vectors of , so no word of weight one or two is in its kernel. The generator itself has weight three, so the minimum Hamming distance is exactly three; this is the Hamming code. Reversing the cyclic coordinate order gives the equally valid reciprocal choice
The polynomial answer therefore depends on the cyclic coordinate convention, while the resulting codes are equivalent.
Use the binary Hamming code , where the th column of the parity-check matrix is the four-digit binary expansion of , for . Thus the columns are precisely the nonzero vectors of . They include the four coordinate vectors, so and . Its code rate is therefore .
For a received word , compute its syndrome . If , report no error. Otherwise identify the unique column and flip bit . Indeed, if with , then , so this procedure recovers exactly. No column is zero and no two columns coincide; hence no nonzero codeword has Hamming weight one or two. Some three columns sum to zero, for example those indexed by , so the minimum distance is exactly three. Thus every single-bit error is corrected. The assertion requires at most one error; arbitrary multiple errors need not be detected by this procedure.
Take the parity-check matrix
over . Its columns are all the nonzero vectors of . The Hamming code is . Since has rank three, is a binary linear code of length seven and dimension four. No nonzero codeword has weight one or two, since no column is zero and no two columns coincide. Columns give a codeword of weight three, so has parameters .
For a received vector , its syndrome is . A single error in position gives exactly column of , so the syndrome identifies that position uniquely; zero syndrome means no error under the one-error assumption. The radius-one Hamming balls around the codewords are disjoint and have total size , so this is also a perfect code.
There are weight-three codewords: every pair of columns determines the third, and each triple is counted three times. The all-ones vector is a codeword because the column sum is zero, so complementation gives seven weight-four codewords. Together with zero and the all-ones vector these account for all sixteen. The weight enumerator is therefore
A Hamming code decoder succeeds on a seven-bit block exactly when there are zero or one errors. Its radius-one decoding regions are disjoint, so an error of weight at least two cannot decode back to the original codeword. Thus
Numerically , so only about transmissions are expected. Even accounting for seven rather than four bits per letter, expected bits sent are , compared with . The Hamming method is substantially better under the stated error detection and independent retransmission assumptions.
For , let be the binary matrix whose columns are all distinct nonzero vectors of . The binary Hamming code is . Its parity-check matrix has rank since its columns include the standard basis. Hence is linear of length and dimension .
No word of weight one or two lies in , since columns are nonzero and distinct; three columns sum to zero, so the minimum distance of a code is exactly three. The syndrome of a single-bit error is its column of , uniquely identifying the erroneous position. The possible syndromes correspond to no error or exactly one of single-bit errors. Alternatively, every radius-one Hamming ball has words and
Disjoint balls therefore cover the whole word space. This proves linearity, one-error correction and perfection. For , the parameters are , giving the 16 messages needed below.
Identify a binary word with its coefficient polynomial in . A cyclic code is exactly an ideal of : closure under multiplication by is closure under cyclic shift. Its inverse image in the principal ideal domain has a unique monic generator polynomial of a cyclic code dividing . Put
The cubics have no root in , hence are irreducible polynomials. The eight monic divisors yield all binary cyclic codes of length seven. A code generated by has basis and dimension , with the zero code treated separately.
For the dual of a cyclic code, let . Orthogonality of coefficient vectors to all cyclic shifts gives the generator . Here . Thus the complete pairing, with the respective dimensions, is
These are respectively the whole-space/zero, even-weight/repetition, and two Hamming code/binary simplex code pairs. The reciprocal formula follows because the product of a word polynomial and the reversed polynomial of an orthogonal word has zero coefficients in all cyclic positions; the resulting inclusion has the correct complementary dimension, hence is equality.
Let and let be the parity-check matrix whose columns are the distinct nonzero vectors of the finite field vector space . The binary Hamming code is
A perfect code has Hamming balls of radius about its codewords partitioning the whole ambient space, where is its minimum Hamming distance of a linear code.
No column of is zero and no two columns agree, so has no word of Hamming weight one or two. Three suitable columns sum to zero, so . For any received word , its syndrome is either zero or is the unique column of equal to that syndrome. In the first case ; in the second,
so is at Hamming distance one from a codeword. Uniqueness follows from . Thus the radius-one balls partition , and the code is perfect.
For , the dual code is the binary simplex code of length seven. Every nonzero dual word evaluates a nonzero linear functional on the seven nonzero vectors of , and exactly four of those evaluations are one. Hence every nonzero word of has weight
Sum all nonzero vectors of . In each coordinate, exactly vectors have entry one, which is even because . The sum is therefore zero, so
Thus the all-one word belongs to the Hamming code and has Hamming weight .