Week 10 Golay codes. Classification of perfect codes
Version 2023-11-29. To PDF of this week only Open the whole set of notes in PDF
Synopsis. One can explore cyclic codes of a given length over a given finite field in an attempt to find codes with interesting/useful properties. In fact, all types of codes we have considered so far will arise as cyclic codes. In this chapter, we define two new linear equivalence classes of codes called Golay codes. In our approach, these arise as cyclic codes, however, historically they were found in a different way. We give without proof a complete classification of perfect codes over alphabets of prime power size up to parameter equivalence, conjectured by Golay and proved by Tietäväinen and van Lint.
Recall that:
-
• the only way to specify a general non-linear code in
is to list all the codewords, which consist of a total of symbols; -
• a linear code can be specified by a generator matrix, which has
entries; -
• a cyclic code can be specified in an even more compact way — by giving its generator polynomial, which corresponds to a single codeword! We only need to specify
coefficients of the generator polynomial (its degree is and its leading coefficient is
Approach to searching for interesting/perfect/etc codes:
Look for divisors of
We will now describe two codes found by Marcel Golay in 1949. They are known as the binary Golay code
The binary Golay code
In
Exercise: check this! You may use a computer algebra system but it is always instructive to multiply these out by hand.
Definition: binary Golay code
Define a binary Golay code to be the cyclic code in
Remark: The cyclic code generated by
The above definition does not reflect how the code was originally found (see below) but suggests a practical way to construct a
Proof of Theorem 10.1 — part 1. The code is binary (
It is easy to see that the weight of
It is more difficult to show that the weight of
We now prove that a
The proof that
Binary vectors: extending, overlaps, weights and orthogonality
To proceed, we need a mini-toolbox containing tools for working with binary vectors.
A binary vector
By extending each vector in a given binary code, we obtain the extended code:
Definition: extended code
If
The following notion is useful:
Definition: overlap
If
It is easy to see that
and
It follows that
Indeed, by (10.1),
The extended binary Golay code
Definition: the extended binary Golay code
The extended code
The code
Example: generator matrix for
Write down a generator matrix for
Solution. Theorem 9.4 gives a generator matrix for
The rows of
The next two propositions establish two main properties of
-
Proof. It is enough to check that the above generator matrix
for satisfies — that is, its rows are orthogonal to each other — and The latter is clear as The former can be done in two ways.Way 1 (manual): recall (10.2). Manually check that the overlap of
and is even for all It is enough to check the overlap of the top row with the other rows — the rest follows by cyclic shifts of the first bits.Way 2 (working with polynomials): Write the rows of
as for We calculate the inner product, of two rows of Recall from the proof of Theorem 9.4 that the inner product of vectors and is the coefficient of in the polynomial The vector written backwards is seen to be soNote that
is a polynomial where the coefficients of
are all and so appears in the polynomial with coefficient Thus, □
Self-duality of
-
Proof. Each row
of the generator matrix constructed in the proof of Proposition 10.2 has weight which is a multiple of By Proposition 10.2, rows of are mutually orthogonal, so by (10.3), a sum of two rows of also has weight divisible byWe can now apply (10.3) to a sum of
and (both are codevectors of so their inner product is zero by Proposition 10.2) to show that a sum of three rows of has weight divisible by Continuing in the same way, we show that a sum of any number of rows of i.e., any codevector of has weight divisible by □
Remark: rest of proof of Theorem 10.1
We are now ready to finish the proof of Theorem 10.1 about the parameters of
-
Proof of Theorem 10.1 — part 2 (final).. We are left to prove that the binary Golay code
does not contain non-zero codevectors of weight less thanWe will take
to be cyclic with generator polynomial and will interchangeably use vectors and polynomials. Assume If a vector obtained from by applying the cyclic shift times, then note that a term in the polynomial is shifted to in if more generally to where cannot be 1, 2, 5 or 6. If has weight or then the extended vector has weight or not divisible by contradicting Proposition 10.3. cannot be 3. Assume so that Out of the possible cyclic shifts of at most six can have non-zero overlap with these shift to for some Hence there exists a shift of which has zero overlap with Then has weight contradicting the previous case. cannot be 4. Suppose it can, and shift so that with Pick a code polynomial of weight of least possible degreeShifting
to the left times gives Note that and lie in and so have inner product hence and by (10.2) the overlap of and must be even. The overlap is not because otherwise one would have and impossible as The overlap is not as and have term in common. Hence the overlap of and isObserve that
is impossible, as it would give the code polynomial of degree less than and weight (impossible by earlier cases) or (contradicts minimality of so Neither nor contribute to the overlap of and which leaves three cases of how overlap could be achieved.Case
Then which factorises as The code polynomial is divisible by the generator polynomial which is irreducible, so or must be divisible by But this means a codevector of weight a contradiction.Case
Writing we have Shift times to obtain (since we have The polynomials and have the term in common, and the only possibility for the overlap of and to be is that is, Then which factorises as As above, either or must be divisible by so there is a codevector of weight or a contradiction.Case
We have and shift times gives The overlap of and must be and the two polynomials have the term in common, so there must be another common term. This is only possible in two subcases.Subcase
We have which factorises as As above, this means a codevector of weight or contradicting earlier results.Subcase
Here we have the code polynomial which factorises in the same way as in the case above, so that we arrive at the same contradiction.Conclusion. We showed that
has no codevectors of weight and so as claimed. This completes the proof of Theorem 10.1. □
The above theoretical proof that
1 sage : R. < x > =GF (2)[] 2 sage : factor ( x^23 − 1) 3 ( x +1)∗( x^11+x^9+x^7+x^6+x^5+x+1)∗(x^11+x^10+x^6+x^5+x^4+x^2+1) 4 sage : g = factor ( x^23 − 1)[1][0] 5 sage : messagepolynomials = R. monics ( max_degree=23−g. degree ()−1 ) 6 sage : codepolynomials = [ u∗g for u in messagepolynomials ] 7 sage : min ([ len ( c . coefficients ()) for c in codepolynomials ]) 8 7
Is the above code a proof? Many mathematicians would accept it as the source code can be checked, and the calculation reproduced.
Remark: trivia
The code
The ternary Golay code
In
Definition: the ternary Golay code
A ternary Golay code is the the cyclic code in
The crucial, and difficult, step in a theoretical proof of Theorem 10.4 is showing that
An alternative approach is a computer-based calculation:
Historical notes
Golay found his two perfect codes in 1949, before cyclic codes were discovered. He wrote check matrices for
Amazingly, Golay’s 1949 paper where he constructs all the Hamming codes and the two Golay codes, is barely half a page long.
Now we can state the classification result about perfect codes.
Definition: parameter equivalence
We say that two codes are parameter equivalent, if they both are
The following theorem was proved by Tietäväinen and van Lint in 1973, more than twenty years since Golay gave a conjectural list of perfect codes in alphabets of prime power size. We will not give its proof here, but you should learn the statement of the theorem.
Theorem 10.5: classification of perfect codes where
Let
-
• a trivial code:
arbitrary, any prime power; -
• a binary repetition code of odd length:
odd, -
• a Hamming code
any prime power; -
• the Golay code
which is a -code; -
• the Golay code
which is an -code.
Remark: perfect codes over general alphabets
Classification of perfect codes over alphabets of size not equal to a prime power is, in general, an open problem.