"Self-Dual Codes over the Integers Modulo 4"
J. Comb. Theory A 62 (1993) 31-45.
For completeness, we list these codes here.
For each length n we have the trivial codes having generator matrix 2I. These codes are direct sums of n copies of the trivial code
c := [[2]];Any code having c as a direct summand is called trivially decomposable, such codes go unmentioned in the remainder of this listing.
At length 4, we find the first non-trivial self-dual code: d4 whose generator matrix is
d4 := [ [ 1, 1, 1, 1 ], [ 2, 2, 0, 0 ], [ 2, 0, 2, 0 ]];
There are no non-trivial codes of length 5, but at length 6 there is one: d6, whose generator matrix is
d6 := [ [ 1, 1, 1, 0, 1, 0 ], [ 1, 1, 0, 1, 0, 1 ], [ 2, 2, 0, 0, 0, 0 ], [ 2, 0, 2, 2, 0, 0 ]];
At length 7, we have a single non-trivial self-dual code, e7.
e7 := [ [ 1, 1, 1, 0, 1, 0, 0 ], [ 1, 1, 0, 1, 0, 1, 0 ], [ 1, 0, 1, 1, 0, 0, 1 ], [ 0, 2, 2, 2, 0, 0, 0 ]];
At length 8, we find the first non-trivial direct sum d4+d4. Also, length 8 is the first possible length where Type II codes can be found. Closely related to d4+d4 is 2d4, which is a Type II code. Additionally there are codes with labels d8 and e8 each of which comes in a Type I and a Type II version, and a code (of Type II) labelled f, whose associated binary code has no weight 4 vectors.
The following table compares the nomenclatures for these codes as given in the Conway and Sloane paper versus the current work.
| current | Conway & Sloane |
|---|---|
| d4+d4 |
|
| d8I |
|
| e8I |
|
| f |
|
| 2d4 |
|
| d8II |
|
| e8II |
|
Generator matrices for the codes follow:
d4+d4 := [ [ 1, 1, 1, 1, 0, 0, 0, 0 ], [ 2, 2, 0, 0, 0, 0, 0, 0 ], [ 2, 0, 2, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 1, 1, 1 ], [ 0, 0, 0, 0, 2, 2, 0, 0 ], [ 0, 0, 0, 0, 2, 0, 2, 0 ]];
2d4 := [ [ 1, 1, 1, 0, 0, 0, 1, 2 ], [ 0, 0, 0, 1, 1, 1, 2, 1 ], [ 2, 2, 0, 0, 0, 0, 0, 0 ], [ 2, 0, 2, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 2, 2, 0, 0, 0 ], [ 0, 0, 0, 2, 0, 2, 0, 0 ]];
d8I := [ [ 1, 1, 1, 0, 0, 1, 0, 0 ], [ 1, 1, 0, 1, 0, 2, 1, 0 ], [ 1, 1, 0, 0, 1, 2, 2, 1 ], [ 2, 2, 0, 0, 0, 0, 0, 0 ], [ 2, 0, 2, 2, 2, 0, 0, 0 ]];
e8I := [ [ 1, 1, 1, 0, 1, 0, 0, 0 ], [ 1, 1, 0, 1, 2, 1, 0, 0 ], [ 1, 0, 1, 1, 2, 2, 1, 0 ], [ 0, 1, 1, 1, 2, 2, 2, 1 ]];
f := [ [ 1, 1, 1, 1, 1, 1, 1, 1 ], [ 2, 2, 0, 0, 0, 0, 0, 0 ], [ 2, 0, 2, 0, 0, 0, 0, 0 ], [ 2, 0, 0, 2, 0, 0, 0, 0 ], [ 2, 0, 0, 0, 2, 0, 0, 0 ], [ 2, 0, 0, 0, 0, 2, 0, 0 ], [ 2, 0, 0, 0, 0, 0, 2, 0 ]];
d8II := [ [ 1, 1, 1, 0, 0, 1, 0, 2 ], [ 1, 1, 0, 1, 0, 2, 1, 0 ], [ 1, 1, 0, 0, 1, 0, 2, 1 ], [ 2, 2, 0, 0, 0, 0, 0, 0 ], [ 2, 0, 2, 2, 2, 0, 0, 0 ]];
e8II := [ [ 1, 1, 1, 0, 1, 0, 2, 0 ], [ 1, 1, 0, 1, 2, 1, 0, 0 ], [ 1, 0, 1, 1, 0, 2, 1, 0 ], [ 0, 1, 1, 1, 2, 2, 2, 1 ]];
There are no codes of length 9 that aren't trivially decomposable.