Additive Codes

Introduction

The concept of a linear code over a finite field can be generalised to the notion of an additive code. Given a finite field F and the space of all n-tuples over F, an additive code is a subset of F(n) which is a K-linear subspace for some subfield K⊆F. Additive codes have become increasingly important recently due to their application to the construction of quantum error-correcting codes, though they are also of interest in their own right. A Magma package for quantum error-correcting codes is built on the machinery for additive codes.

In Magma an additive code has both an alphabet F and a coefficient field K, which is a subfield of F. An error-correcting code is considered to be defined by its wordset, so there may be several different ways of presenting a given code using different coefficient fields. Since a given code may be presented over different coefficient rings, the dimension k of an additive code is defined relative to the alphabet of the code, #C = (#F)k, leading to possibility of fractional dimensions. Consequently, the number of generators of an additive code will not equal its dimension, there being [F : K] times as many generators. So a length n K-additive code over F has between zero and n×[F : K] generators.

For example, consider the two length 3 vectors over F4: (1,0,ω2), (0,ω,0). The linear code generated by these vectors consists of all scalar multiples and sums, resulting in a total of 42 = 16 vectors. But the F2-additive code generated by these two vectors contains only their sums, resulting in a total of 22 = 4 vectors. These vectors are (0,0,0), (1,0,ω2), (0,ω,0), (1,ω,ω2). The alphabet of this code is F4, its coefficient field is F2, it has 2 generators and is of dimension 1.

A length n, dimension k K-additive code over F with kg generators is represented in Magma as an [n,k  :  kg] K-additive code over F. The concepts of weight, distance and their respective distributions and enumerators transfer directly from linear codes. An [n, k  :  kg, d] K-additive code over F is a K-linear subset of F(n) which has fractional dimension k, kg generators, and a minimum weight of d.

Constructions for Additive Codes

Let F = GF(q) and take K to be a subfield of F. A length n additive code C with alphabet F and coefficient field K consists of codewords which form a K-linear subspace of F(n). A straightforward way of defining C is to specify a set of elements of F(n) which generates C. Thus additive codes can be constructed from any linear code defined over GF(q) provided that GF(q) has a suitable subfield K.

The usual vector and submodule operations for M = F(n) are supported for additive codes C belonging to F(n). Familiar operations are provided for producing a new code from one or more existing codes: augmentation, complement, concatenation, juxtaposition, direct sum, direct product, extension, padding, Plotkin sum, puncturing, and shortening. Constructions are provided for two important families of additive codes: additive cyclic codes and additive quasicyclic codes.

Various properties of an additive code can be determined: self-dual, self-orthogonal, perfect, projective, and additive projective.

Minimum Weight and Weight Distribution

An adaptation of the minimum weight algorithm for linear codes over finite fields has been developed for additive codes by M. Grassl and G. White. The algorithm is very efficient. For example, taking a random GF(2)-additive code with alphabet GF(4), length 82, and 39 generators, the minimum weight of 32 was found in less than 7 seconds. The weight enumerator, weight distribution, and dual weight distribution can be computed. The complete weight enumerator and symmetric weight enumerator are also available.

Automorphism Group

The automorphism group of an additive code can be computed for codes over GF(4). This will be extended to other fields in the near future.