Dual codes and weight enumerators
Consider a
We write
Observe that the natural mapping
In particular,
- Remark
-
If
, we say that is self-dual. Note that if is self dual we must have so that is even.For example, the following is a self-dual
code.= GF(2) k = VectorSpace(k,8) V = V.subspace([V([1,0,0,0,1,1,1,0]), C 0,1,0,0,1,1,0,1]), V([0,0,1,0,1,0,1,1]), V([0,0,0,1,0,1,1,1])]) V([ # generator matrix = MatrixSpace(k,4,8).matrix(C.basis()) G * G.T G => 0 0 0 0] [0 0 0 0] [0 0 0 0] [0 0 0 0] [
We see for this example that
and thus since .
Weight enumerators
Consider the polynomial with natural-number coefficients
We evidently have
- Example
-
Consider the self-dual
-code introduced above; namely:
= GF(2)
k = VectorSpace(k,8)
V
= V.subspace([V([1,0,0,0,1,1,1,0]),
C 0,1,0,0,1,1,0,1]),
V([0,0,1,0,1,0,1,1]),
V([0,0,0,1,0,1,1,1])]) V([
We compute its weight-enumerator:
<T> = PolynomialRing(ZZ)
R.
## compute the weight enumerator, as an element of R
def WE(C):
return sum([ T^weight(c) for c in C ])
WE(C)=>
^8 + 14*T^4 + 1 T
Write
The proof involves some character theory. We need a few extra tools.
Characters of -vector spaces.
Let
For any finite degree field extension
- Proposition
-
If
is a finite Galois extension, and if is the galois group, then for we have - Proposition
-
If
, then is given by the formula
The importance to us of the trace mapping is this: we know how to
describe complex characters of
Fix
For a vector
Observe that since
- Remark
-
Arguing as in an earlier homework exercise, it is easy to see that
.
For a finite abelian group
We have the following result from character theory:
- Proposition
-
For
, we have - Proof
-
We know that
is a character of ; i.e. an element of .Now,
where denotes the trivial homomorphism .Now the result follows from the observation that
if and only if and only if . - Theorem (McWilliams’ Identity)
-
If
is an -code, then - Proof
- see (Ball 2020, Theorem 4.13 page 56)