Back to resources

Article and note

A Series Learning through the MacWilliams IdentityPart 3 of 12

An Introduction to Tensor Products through the MacWilliams Identity

Among the five proof systems for the MacWilliams identity, this note focuses on a tensor-product proof in linear algebra belonging to the Fourier, character-theoretic, and Poisson approach, and introduces tensor products, tensor product linear maps, Kronecker products, code vectors, and complete weight enumerators.
Published:
Updated:
Reading time:
23 min (about 4,875 words)
Tagscoding theoryMacWilliams identitytensor productKronecker productcomplete weight enumeratorfinite fieldsFourier matrixexpository note
Download PDF

Introduction

In coding theory, one of the basic theorems is the MacWilliams identity. For a linear code CFqEC \leq \mathbb{F}_{q}^{E} over a finite field Fq\mathbb{F}_{q} with coordinate set EE, the weight enumerator of its dual code

C={uFqE:uc=0 for all cC}C^{\perp} = \{ u \in \mathbb{F}_{q}^{E} : u \cdot c = 0 \text{ for all } c \in C \}

can be computed from the weight enumerator of CC as follows:

WC(X,Y)=1CWC(X+(q1)Y,XY).W_{C^{\perp}}(X,Y) = \frac{1}{\card{C}} W_{C}\bigl(X + (q - 1)Y, X - Y \bigr).

This is the MacWilliams identity.

In this series, I use proofs of the MacWilliams identity as a guide to an introduction to neighbouring areas and concepts. Accordingly, this series is aimed at readers who already know at least the following basic material:

We assume that the reader already knows, at least at a basic level, the following notions:

  • what a (finite) field is,

  • what a linear code over a finite field is,

  • what the Hamming weight is,

  • what the dual code is.

(There is no problem if you do not know a proof of the MacWilliams identity.)

In this series, I look at proof methods for the MacWilliams identity under the following five broad families.

  1. Fourier, character, and Poisson methods.

  2. Möbius inversion, lattice theory, and shortening/puncturing methods.

  3. Orthogonal polynomials and association schemes.

  4. Matroids and Tutte polynomials.

  5. Moments and double-counting methods.

The proof in this note belongs to the first family: the Fourier, character-theoretic, and Poisson approach. However, character theory itself is not the main subject of this note. The aim of this note is to use a proof of the MacWilliams identity as a guide to an introduction to tensor products.

In a standard proof of the MacWilliams identity, one extends a transformation appearing in each coordinate to the whole space of words of length nn. The most natural language for this operation, “extending a one-coordinate transformation to all coordinates at once”, is the language of tensor products. Using tensor products, a word of length nn,

(c1,,cn)Fqn,(c_{1}, \dots, c_{n}) \in \mathbb{F}_{q}^{n},

can be treated as the product of one-coordinate basis vectors

ec1ecn.e_{c_{1}} \tensor \cdots \tensor e_{c_{n}}.

Then a one-coordinate linear map HH acts on the space of length nn as

Hn=HHn copies.H^{\tensor n} = \underbrace{H \tensor \cdots \tensor H}_{n\text{ copies}}.

From this viewpoint, the MacWilliams identity can be read as follows.

Vectorise the code CC as the sum of the basis vectors corresponding to its words. When a one-coordinate Hadamard-type transformation is made to act on all coordinates by tensor product, that vector is sent to C\card{C} times the code vector of the dual code CC^{\perp}. Afterwards, reading each basis vector as a monomial produces the variable transformation in the weight enumerator.

The route in this note is as follows.

tensor product → tensor product linear map → tensor representation of words → code vector → complete weight enumerator → MacWilliams identity

Tensor products are a basic tool in multilinear algebra. For a standard reference on multilinear algebra, see Greub [Gre78]; for a more advanced textbook on linear algebra, see for instance Roman [Rom08]. Rather than developing the whole general theory, this note treats, concretely, tensor products of finite-dimensional vector spaces with chosen bases, restricting attention to the part needed for the proof of the MacWilliams identity.

From one-coordinate information to multi-coordinate information

Let us first see why tensor products arise naturally.

Consider a finite alphabet A\mathcal{A}. Later we shall take A=Fq\mathcal{A} = \mathbb{F}_{q}, but for now think of it simply as a finite set. The value in one coordinate is an element of A\mathcal{A}. A word of length nn is an element of

An={(a1,,an):aiA}.\mathcal{A}^{n} = \{ (a_{1},\dots,a_{n}) : a_{i} \in \mathcal{A} \}.

To handle one-coordinate information, prepare a basis vector eae_{a} for each alphabet symbol aAa \in \mathcal{A}. In other words, consider the complex vector space UCAU \coloneqq \mathbb{C}^{\mathcal{A}} as a vector space with basis {eaU:aA}\{ e_{a} \in U : a \in \mathcal{A} \}. Here CA\mathbb{C}^{\mathcal{A}} may be viewed as the space of complex-valued functions on the alphabet A\mathcal{A}, but in this note we view it as “the vector space with a basis indexed by the elements of A\mathcal{A}”.

For a word of length nn, a=(a1,,an)Ana = (a_{1}, \dots, a_{n}) \in \mathcal{A}^{n}, we would like to write the corresponding basis vector as ea=ea1eane_{a} = e_{a_{1}} \tensor \dots \tensor e_{a_{n}}. The space needed for this is

Un=UUn copies.U^{\tensor n} = \underbrace{U \tensor \cdots \tensor U}_{n\text{ copies}}.

Then we obtain the following correspondence.

word of length nn, (a1,,an)An(a_{1}, \dots, a_{n}) \in \mathcal{A}^{n} ↔ tensor product of nn basis vectors ea1eanUne_{a_{1}}\tensor \dots \tensor e_{a_{n}} \in U^{\tensor n}.

Moreover, if a one-coordinate linear transformation H ⁣:UUH \colon U \to U is given, then the transformation which applies it to all coordinates at once is

Hn ⁣:UnUn.H^{\tensor n} \colon U^{\tensor n}\to U^{\tensor n}.

On pure tensors it acts by

Hn(u1un)=H(u1)H(un).H^{\tensor n} (u_{1}\tensor \cdots \tensor u_{n}) = H(u_{1})\tensor \cdots \tensor H(u_{n}).

Tensor products provide the language for this operation of extending one-coordinate objects to nn coordinates. In the tensor-product proof of the MacWilliams identity, we take the nn-fold tensor product of a one-coordinate Hadamard-type transformation and apply it to a vector representing the whole code.

Definition of the tensor product: construction from bases

Tensor products are often defined abstractly, but in this note we start from a concrete definition using chosen bases of finite-dimensional vector spaces.

Definition 3.1.

Let UU and VV be finite-dimensional vector spaces over C\mathbb{C}. Let e1,,ere_{1},\dots,e_{r} be a basis of UU, and let f1,,fsf_{1}, \dots, f_{s} be a basis of VV. The tensor product UVU\tensor V of UU and VV is the complex vector space whose basis consists of the symbols

eifj(1ir,1js).e_{i} \tensor f_{j} \qquad (1 \leq i \leq r,\, 1 \leq j \leq s).

It follows immediately from the definition that

dimC(UV)=dimCUdimCV.\dim_{\mathbb{C}}(U\tensor V) = \dim_{\mathbb{C}}U \cdot \dim_{\mathbb{C}}V.

Thus, taking the tensor product of an rr-dimensional space and an ss-dimensional space produces an rsrs-dimensional space.

For arbitrary vectors

u=i=1rαieiU,v=j=1sβjfjV,u=\sum_{i=1}^{r}\alpha_{i}e_{i}\in U, \qquad v=\sum_{j=1}^{s}\beta_{j}f_{j}\in V,

define uvUVu\tensor v\in U\tensor V by

uv=i=1rj=1sαiβj(eifj).u \tensor v = \sum_{i=1}^{r} \sum_{j=1}^{s} \alpha_{i}\beta_{j} (e_{i}\tensor f_{j}).

An element of this form is called a pure tensor.

From the definition, we have the following bilinearity:

(u+u)v=uv+uv,u(v+v)=uv+uv,(λu)v=u(λv)=λ(uv).\begin{aligned} (u + u^{\prime}) \tensor v &= u \tensor v + u^{\prime} \tensor v,\\ u \tensor (v + v^{\prime}) &= u \tensor v + u \tensor v^{\prime},\\ (\lambda u) \tensor v &= u \tensor (\lambda v) = \lambda (u\tensor v). \end{aligned}

Here λC\lambda\in\mathbb{C}. In other words, the tensor product is linear in each variable.

However, not every element of UVU \tensor V can be written as a single pure tensor uvu \tensor v. A general element can be written as a finite sum of pure tensors. For example,

e1f1+e2f2e_{1} \tensor f_{1} + e_{2} \tensor f_{2}

usually cannot be decomposed as one pure tensor. This point is important when getting used to tensor products.

Example 3.2.

Let e0,e1e_{0}, e_{1} be a basis of U=C2U = \mathbb{C}^{2}, and let f0,f1,f2f_{0}, f_{1}, f_{2} be a basis of V=C3V = \mathbb{C}^{3}. Then UVU \tensor V has the following six basis vectors:

e0f0,e0f1,e0f2,e1f0,e1f1,e1f2.e_{0} \tensor f_{0},\, e_{0} \tensor f_{1},\, e_{0} \tensor f_{2}, \, e_{1} \tensor f_{0},\, e_{1} \tensor f_{1},\, e_{1}\tensor f_{2}.

Therefore dim(UV)=6\dim(U \tensor V) = 6.

The definition above appears to depend on the chosen bases. Indeed, the concrete construction used bases. However, if the bases are changed, the resulting tensor product is the same up to a natural isomorphism. The following universal property is the basis-free characterisation.

Definition 3.3.

Let UU, VV, and WW be complex vector spaces. A map B ⁣:U×VWB \colon U \times V \to W is called bilinear if, when uu is fixed, the map vB(u,v)v \mapsto B(u,v) is linear, and when vv is fixed, the map uB(u,v)u \mapsto B(u,v) is linear.

Theorem 3.4 (Universal property of the tensor product).

Let UU and VV be finite-dimensional vector spaces constructed as above after choosing bases. Then, for any complex vector space WW and any bilinear map B ⁣:U×VWB \colon U \times V \to W, there exists a unique linear map B~ ⁣:UVW\widetilde{B} \colon U \tensor V \to W such that

B~(uv)=B(u,v)(uU,vV).\widetilde{B}(u\tensor v)=B(u,v) \qquad (u \in U,\, v \in V).
Proof

Let e1,,ere_{1}, \dots, e_{r} be a basis of UU, and let f1,,fsf_{1}, \dots, f_{s} be a basis of VV. Since UVU \tensor V has basis eifje_{i} \tensor f_{j}, it is enough, in order to define a linear map B~\widetilde{B}, to decide its values on the basis. Define

B~(eifj)=B(ei,fj)\widetilde{B}(e_{i} \tensor f_{j}) = B(e_{i}, f_{j})

and extend linearly.

If u=iαieiu = \sum_{i} \alpha_{i} e_{i} and v=jβjfjv = \sum_{j} \beta_{j} f_{j}, then

B~(uv)=B~(i,jαiβj(eifj))=i,jαiβjB(ei,fj)=B(iαiei,jβjfj)=B(u,v).\begin{aligned} \widetilde{B}(u \tensor v) &= \widetilde{B}\left( \sum_{i,j} \alpha_{i} \beta_{j}(e_{i} \tensor f_{j}) \right)\\ &= \sum_{i, j} \alpha_{i} \beta_{j} B(e_{i}, f_{j}) \\ &= B\left(\sum_{i} \alpha_{i} e_{i}, \sum_{j} \beta_{j} f_{j} \right)\\ &= B(u,v). \end{aligned}

In the last equality we used the bilinearity of BB.

Uniqueness follows from the fact that the elements eifje_{i} \tensor f_{j} form a basis of UVU \tensor V and are themselves pure tensors. In other words, B~(eifj)\widetilde{B}(e_{i} \tensor f_{j}) must be B(ei,fj)B(e_{i}, f_{j}).

End of proof

This theorem is the basic principle behind viewing the tensor product as

a device which lets us treat bilinear operations as linear operations.

In the proof of the MacWilliams identity in this note, we treat the coordinatewise product

i=1nZci\prod_{i = 1}^{n} Z_{c_{i}}

as a linear map on a tensor product. This feeling that products can be linearised is an important role of tensor products.

Tensor products of many vector spaces

To handle words of length nn, we need not only the tensor product of two spaces, but the tensor product of nn spaces.

When the same vector space UU is prepared nn times, we write its tensor product as

Un=UUn copies.U^{\tensor n} = \underbrace{U\tensor\cdots\tensor U}_{n\text{ copies}}.

Suppose that UU has basis {eaU:aA}\{ e_{a} \in U : a \in \mathcal{A} \}. Then UnU^{\tensor n} has basis

ea1ean((a1,,an)An).e_{a_{1}}\tensor \cdots \tensor e_{a_{n}} \qquad ((a_{1},\dots,a_{n})\in \mathcal{A}^{n}).

Therefore

dimUn=An.\dim U^{\tensor n} = \card{\mathcal{A}}^{n}.

This basis is in one-to-one correspondence with words of length nn. For a=(a1,,an)Ana = (a_{1}, \dots, a_{n}) \in \mathcal{A}^{n}, we therefore abbreviate

eaea1ean.e_{a} \coloneqq e_{a_{1}} \tensor \dots \tensor e_{a_{n}}.

Then {eaUn:aAn}\{ e_{a} \in U^{\tensor n} : a \in \mathcal{A}^{n} \} is a basis of UnU^{\tensor n}.

From now on, even when the coordinate set EE is an arbitrary finite set, we shall write, to keep the notation light,

UE=iEU.U^{\tensor E} = \bigotimes_{i \in E} U.

Strictly speaking, to write a tensor product one chooses an order of the coordinates, but the calculations in this note do not depend on the ordering. The reader may safely read everything with E={1,,n}E = \{ 1, \dots, n \} in mind.

Tensor product linear maps and Kronecker products

What is important about tensor products is that not only vectors, but also linear maps, can be tensored.

Definition 5.1.

Let A ⁣:UUA \colon U \to U^{\prime} and B ⁣:VVB \colon V \to V^{\prime} be linear maps. Define the linear map

AB ⁣:UVUVA \tensor B \colon U \tensor V\to U^{\prime}\tensor V^{\prime}

on pure tensors by

(AB)(uv)=A(u)B(v).(A\tensor B)(u\tensor v) = A(u)\tensor B(v).

This is called the tensor product linear map of AA and BB.

This definition determines a unique linear map because the right-hand side is bilinear in (u,v)(u,v), so Theorem 3.4 applies.

For the tensor product of nn copies of the same linear map H ⁣:UUH \colon U \to U, we write

Hn=HHn copies.H^{\tensor n} = \underbrace{H \tensor \dots \tensor H}_{n\text{ copies}}.

On pure tensors,

Hn(u1un)=H(u1)H(un).H^{\tensor n}(u_{1} \tensor \dots \tensor u_{n}) = H(u_{1}) \tensor \dots \tensor H(u_{n}).

In matrix form, a tensor product linear map becomes a Kronecker product. For example, if

A=(a11a12a21a22),B=(b11b12b21b22),A= \begin{pmatrix} a_{11} & a_{12}\\ a_{21} & a_{22} \end{pmatrix}, \qquad B= \begin{pmatrix} b_{11} & b_{12}\\ b_{21} & b_{22} \end{pmatrix},

then

AB=(a11Ba12Ba21Ba22B).A \tensor B = \begin{pmatrix} a_{11}B & a_{12}B\\ a_{21}B & a_{22}B \end{pmatrix}.

That is,

AB=(a11b11a11b12a12b11a12b12a11b21a11b22a12b21a12b22a21b11a21b12a22b11a22b12a21b21a21b22a22b21a22b22).A \tensor B = \begin{pmatrix} a_{11}b_{11} & a_{11}b_{12} & a_{12}b_{11} & a_{12}b_{12}\\ a_{11}b_{21} & a_{11}b_{22} & a_{12}b_{21} & a_{12}b_{22}\\ a_{21}b_{11} & a_{21}b_{12} & a_{22}b_{11} & a_{22}b_{12}\\ a_{21}b_{21} & a_{21}b_{22} & a_{22}b_{21} & a_{22}b_{22} \end{pmatrix}.

Depending on the reference, this matrix is called the Kronecker product of ABA \otimes B.

For matrix computations with Kronecker products themselves, Horn–Johnson [HJ91, Chapter 4] is a standard reference. For a readable overview including applications, see also Van Loan [Van00]. What we need in this note is the single point that, when a tensor product linear map is written in bases, it becomes a Kronecker product.

Example 5.2 (The Hadamard matrix in the binary case).

As a one-coordinate transformation for F2={0,1}\mathbb{F}_{2} = \{ 0, 1 \}, consider

H2=(1111).H_{2} = \begin{pmatrix} 1 & 1\\ 1 & -1 \end{pmatrix}.

If the rows and columns are indexed by 00 and 11, this can be written as

(H2)a,b=(1)ab(a,bF2).(H_{2})_{a,b} = (-1)^{ab} \qquad (a, b \in \mathbb{F}_{2}).

The transformation on words of length two is H2H2H_{2} \tensor H_{2}. Order the words, both for rows and for columns, as 0000, 0101, 1010, 1111, and regard the rows as indexed by uu and the columns by cc.

H2H2=(1111111111111111).H_{2}\tensor H_{2} = \begin{pmatrix} 1 & 1 & 1 & 1\\ 1 & -1 & 1 & -1\\ 1 & 1 & -1 & -1\\ 1 & -1 & -1 & 1 \end{pmatrix}.

The (u,c)(u,c) entry of this matrix is

(1)uc.(-1)^{u \cdot c}.

Thus, taking the tensor square of a one-coordinate matrix produces the matrix corresponding to the inner product of length 22.

This example is the model for the proof in this note. For a general Fq\mathbb{F}_{q}, too, we build a one-coordinate Hadamard-type matrix and take its tensor product to obtain a transformation acting on the whole space of length nn.

The one-coordinate Hadamard-type transformation over a finite field

We now return to the finite field Fq\mathbb{F}_{q}. Write q=pmq = p^{m}. The finite field Fq\mathbb{F}_{q} can be viewed as an mm-dimensional vector space over its prime field Fp\mathbb{F}_{p}.

Choose a basis β1,,βm\beta_{1}, \dots, \beta_{m} of Fq\mathbb{F}_{q} over Fp\mathbb{F}_{p}. Then every xFqx \in \mathbb{F}_{q} can be written uniquely as

x=x1β1++xmβm(xiFp).x = x_{1}\beta_{1} + \dots + x_{m} \beta_{m} \qquad (x_{i} \in \mathbb{F}_{p}).

Put ζexp(2π1/p)\zeta \coloneqq \exp(2\pi\sqrt{-1}/p), and define

θ(x)ζx1\theta(x) \coloneqq \zeta^{x_1}

using the first coordinate x1x_{1} of xx. Here x1Fpx_{1} \in \mathbb{F}_{p} is regarded as the representative 0,1,,p10, 1, \dots, p-1 when it is placed in the exponent.

The function θ ⁣:FqC×\theta \colon \mathbb{F}_{q} \to \mathbb{C}^{\times} has the following two properties:

θ(x+y)=θ(x)θ(y),θ(β1)=ζ1.\theta(x + y) = \theta(x)\theta(y), \qquad \theta(\beta_{1}) = \zeta \neq 1.

In other words, θ\theta is a non-constant function which turns addition into multiplication1. These two properties are all that we need in this note.

The property of characters needed for the tensor-product proof of the MacWilliams identity is the following.

Lemma 6.1.

For bFqb \in \mathbb{F}_{q},

aFqθ(ab)={q,b=0,0,b0\sum_{a \in \mathbb{F}_{q}} \theta(ab) = \begin{cases} q, & b=0,\\ 0, & b\neq 0 \end{cases}

holds.

Proof

If b=0b = 0, then θ(ab)=θ(0)=1\theta(ab) = \theta(0) = 1 for all aa, so the sum is qq.

Suppose that b0b\neq 0. Then the map aaba\mapsto ab is a bijection of Fq\mathbb{F}_{q}, and therefore

aFqθ(ab)=tFqθ(t).\sum_{a\in\mathbb{F}_{q}}\theta(ab) = \sum_{t\in\mathbb{F}_{q}}\theta(t).

Put the right-hand side equal to SS.

As tt runs through all of Fq\mathbb{F}_{q}, so does t+β1t+\beta_1. Hence

S=tFqθ(t+β1)=tFqθ(t)θ(β1)=θ(β1)S.S = \sum_{t\in\mathbb{F}_{q}}\theta(t+\beta_1) = \sum_{t\in\mathbb{F}_{q}}\theta(t)\theta(\beta_1) = \theta(\beta_1)S.

Since θ(β1)=ζ1\theta(\beta_{1}) = \zeta \neq 1, it follows that S=0S=0.

End of proof

Let the one-coordinate complex vector space be U=CFqU = \mathbb{C}^{\mathbb{F}_{q}}, with basis {eaU:aFq}\{ e_{a} \in U :a\in\mathbb{F}_{q} \}. Define the one-coordinate Hadamard-type transformation H ⁣:UU\mathcal{H} \colon U \to U on the basis by

H(eb)aFqθ(ab)ea(bFq).\mathcal{H}(e_{b}) \coloneqq \sum_{a\in\mathbb{F}_{q}}\theta(ab)e_{a} \qquad (b\in\mathbb{F}_{q}).

In matrix form, this is the q×qq \times q matrix

Ha,b=θ(ab),\mathcal{H}_{a,b}=\theta(ab),

with rows and columns indexed by elements of Fq\mathbb{F}_{q}.

This matrix is the Fourier matrix over the finite field. In this note, however, our focus is not Fourier analysis itself, but the process of extending this one-coordinate matrix to all coordinates by taking tensor products.

Proposition 6.2.

The columns of H\mathcal{H} are mutually orthogonal, and

HH=qI\mathcal{H}^{\ast} \mathcal{H} = qI

holds.

Proof

The inner product of column bb and column bb^{\prime} is

aFqθ(ab)θ(ab)=aFqθ(a(bb)).\sum_{a\in\mathbb{F}_{q}} \overline{\theta(ab)}\theta(ab^{\prime}) = \sum_{a\in\mathbb{F}_{q}}\theta(a(b^{\prime}-b)).

Here we used θ(x)=θ(x)\overline{\theta(x)}=\theta(-x). By Lemma 6.1, this is

{q,b=b,0,bb.\begin{cases} q, & b=b^{\prime},\\ 0, & b\neq b^{\prime}. \end{cases}

Hence HH=qI\mathcal{H}^{\ast} \mathcal{H} = qI.

End of proof

This proposition shows that H\mathcal{H} is the finite-field analogue of a Hadamard matrix. After normalisation, q1/2Hq^{-1/2}\mathcal{H} is a unitary matrix. For the MacWilliams identity itself, however, what is important is not this unitarity, but the property, seen below, that the map sends code vectors to dual-code vectors.

Words and codes inside tensor products

From now on, let EE be a finite coordinate set, and put n=En = \card{E}. For simplicity, when necessary, think of E={1,,n}E = \{ 1, \dots, n \}.

Starting from the one-coordinate space U=CFqU = \mathbb{C}^{\mathbb{F}_{q}}, form the multi-coordinate space

UE=iEU.U^{\tensor E} = \bigotimes_{i \in E} U.

For a word v=(vi)iEFqEv = (v_{i})_{i\in E} \in \mathbb{F}_{q}^{E}, write

eviEevi.e_{v} \coloneqq \bigotimes_{i \in E} e_{v_{i}}.

Then

{evUE:vFqE}\{ e_{v} \in U^{\tensor E} : v \in \mathbb{F}_{q}^{E}\}

is a basis of UEU^{\tensor E}.

Definition 7.1.

For a code CFqEC \leq \mathbb{F}_{q}^{E}, define

γCcCecUE.\gamma_{C} \coloneqq \sum_{c\in C}e_c \in U^{\tensor E}.

We call this the code vector of CC.

The code vector γC\gamma_{C} is obtained by summing the basis vectors corresponding to all codewords. It may be regarded as the indicator function of the code CC, written as a sum of basis vectors. For example, if C={00,11}F22C = \{ 00, 11 \} \leq \mathbb{F}_{2}^{2}, then

γC=e00+e11=e0e0+e1e1.\gamma_{C} = e_{00} + e_{11} = e_{0} \tensor e_{0} + e_{1} \tensor e_{1}.

Write the extension of the one-coordinate transformation H\mathcal{H} to all coordinates as

HE=iEH ⁣:UEUE.\mathcal{H}^{\tensor E} = \bigotimes_{i \in E} \mathcal{H} \colon U^{\tensor E} \to U^{\tensor E}.

Computing its action on a basis vector ece_{c} gives

HE(ec)=iEH(eci)=iE(uiFqθ(uici)eui)=uFqE(iEθ(uici))eu=uFqEθ(iEuici)eu=uFqEθ(uc)eu.\begin{aligned} \mathcal{H}^{\tensor E}(e_{c}) &= \bigotimes_{i \in E}\mathcal{H}(e_{c_{i}})\\ &= \bigotimes_{i \in E} \left( \sum_{u_{i} \in \mathbb{F}_{q}}\theta(u_{i} c_{i}) e_{u_{i}} \right)\\ &= \sum_{u \in \mathbb{F}_{q}^{E}} \left( \prod_{i \in E} \theta(u_{i} c_{i}) \right) e_{u}\\ &= \sum_{u\in\mathbb{F}_{q}^{E}} \theta\left(\sum_{i\in E}u_i c_i\right)e_u\\ &= \sum_{u\in\mathbb{F}_{q}^{E}} \theta(u \cdot c) e_{u}. \end{aligned}

Here uc=iEuiciu \cdot c = \sum_{i \in E} u_{i} c_{i}.

This formula is the centre of the tensor-product proof. In one coordinate, a coefficient θ(ab)\theta(ab) appeared. After taking the tensor product, the coordinatewise coefficients are multiplied, and by the additive-character property we obtain

iEθ(uici)=θ(iEuici).\prod_{i\in E}\theta(u_i c_i) = \theta\left(\sum_{i\in E}u_i c_i\right).

Thus the tensor product multiplies the coordinatewise coefficients, and the property of θ\theta then gathers that product into the coefficient θ(uc)\theta(u\cdot c) involving the length-nn inner product ucu \cdot c.

The tensor product transformation sends a code to its dual code

Apply the calculation from the previous section to the code vector γC\gamma_{C}. Then

HEγC=cCHEec=cCuFqEθ(uc)eu=uFqE(cCθ(uc))eu.\begin{aligned} \mathcal{H}^{\tensor E}\gamma_{C} &= \sum_{c\in C}\mathcal{H}^{\tensor E} e_{c} \\ &= \sum_{c\in C} \sum_{u \in \mathbb{F}_{q}^{E}}\theta(u \cdot c) e_{u} \\ &= \sum_{u \in \mathbb{F}_{q}^{E}} \left( \sum_{c \in C}\theta(u \cdot c) \right)e_u. \end{aligned}

Thus the coefficient which appears is

cCθ(uc).\sum_{c \in C} \theta(u \cdot c).

This sum detects whether uu belongs to CC^{\perp}.

Lemma 8.1.

For every uFqEu \in \mathbb{F}_{q}^{E},

cCθ(uc)={C,uC,0,uC\sum_{c \in C} \theta(u \cdot c) = \begin{cases} \card{C}, & u \in C^{\perp},\\ 0, & u \notin C^{\perp} \end{cases}

holds.

Proof

If uCu \in C^{\perp}, then uc=0u \cdot c=0 for every cCc\in C. Hence every term is θ(0)=1\theta(0) = 1, and the sum is C\card{C}.

Now suppose that uCu\notin C^{\perp}. Then there exists some c0Cc_{0} \in C such that d=uc00d = u \cdot c_{0} \neq 0. Since d0d \neq 0, the map aada \mapsto ad is a bijection of Fq\mathbb{F}_{q}. Hence there exists aFqa \in \mathbb{F}_{q} such that ad=β1ad = \beta_{1}. Therefore

θ(ad)=θ(β1)=ζ1.\theta(ad) = \theta(\beta_{1}) = \zeta \neq 1.

Put ScCθ(uc)\displaystyle S \coloneqq \sum_{c\in C}\theta(u\cdot c). Since CC is a linear code, ac0Cac_{0} \in C, and as cc runs through all of CC, the element c+ac0c+ac_0 also runs through all of CC exactly once. Hence

S=cCθ(u(c+ac0))=cCθ(uc)θ(a(uc0))=θ(ad)S.S = \sum_{c\in C}\theta(u\cdot(c+ac_0)) = \sum_{c\in C}\theta(u\cdot c)\theta(a(u\cdot c_0)) = \theta(ad)S.

Since θ(ad)1\theta(ad) \neq 1, we have S=0S = 0.

End of proof

Theorem 8.2.

For the code vector,

HEγC=CγC\mathcal{H}^{\tensor E}\gamma_{C} = \card{C}\,\gamma_{C^{\perp}}

holds.

Proof

As computed above,

HEγC=uFqE(cCθ(uc))eu.\mathcal{H}^{\tensor E}\gamma_C = \sum_{u\in\mathbb{F}_{q}^{E}} \left( \sum_{c\in C}\theta(u\cdot c) \right)e_u.

By Lemma 8.1, the inner sum is C\card{C} when uCu\in C^{\perp}, and is 00 otherwise. Therefore

HEγC=CuCeu=CγC.\mathcal{H}^{\tensor E}\gamma_C = \card{C} \sum_{u\in C^{\perp}}e_u = \card{C}\,\gamma_{C^{\perp}}.
End of proof

This theorem is the linear-algebraic core of the proof in this note. Before viewing the MacWilliams identity as a polynomial identity, we have the following simple equality inside the tensor product space:

HEγC=CγC.\mathcal{H}^{\tensor E}\gamma_C = \card{C}\,\gamma_{C^{\perp}}.

In other words, when the one-coordinate Hadamard-type transformation acts on all coordinates by tensor product, the vector representing the code CC is sent to the vector representing the dual code CC^{\perp}.

Complete weight enumerators: reading tensors as monomials

So far, we have treated a code as a vector in a tensor product space. Next, we read this vector as a polynomial. The complete weight enumerator is what naturally appears here.

In the ordinary Hamming weight enumerator, for each coordinate one only distinguishes

0X,non-zero elementY.0 \mapsto X, \qquad \text{non-zero element} \mapsto Y.

In the complete weight enumerator, by contrast, we prepare a separate variable for each element of the finite field.

Definition 9.1.

For each aFqa\in\mathbb{F}_{q}, prepare a variable ZaZ_a. The complete weight enumerator of a code CFqEC\leq\mathbb{F}_{q}^{E} is

cweC((Za)aFq)=cCiEZci.\cwe_C((Z_a)_{a\in\mathbb{F}_{q}}) = \sum_{c\in C}\prod_{i\in E}Z_{c_i}.

For complete weight enumerators and the MacWilliams identity, MacWilliams–Sloane [MS77, Chapters 5 and 19] is the classical standard reference.

The ordinary Hamming weight enumerator is a specialisation of the complete weight enumerator. Indeed, if we put

Z0=X,Za=Y(a0),Z_0=X, \qquad Z_a=Y\quad(a\neq 0),

then

iEZci=Xnwt(c)Ywt(c).\prod_{i\in E}Z_{c_i} = X^{n-\wt(c)}Y^{\wt(c)}.

Therefore

WC(X,Y)=cweC((Za))Z0=X, Za=Y (a0).W_C(X,Y) = \cwe_C((Z_a))\bigg|_{Z_0=X,\ Z_a=Y\ (a\neq 0)}.

In the language of tensor products, the complete weight enumerator is very natural. Define the linear map from the one-coordinate space UU to the polynomial ring

R=C[Za:aFq]R=\mathbb{C}[Z_a:a\in\mathbb{F}_{q}]

by

m1 ⁣:URm_1\colon U\to R

and

m1(ea)=Za.m_1(e_a)=Z_a.

Then, by the universal property of the tensor product, we can define the EE-coordinate version mE ⁣:UERm_{E} \colon U^{\tensor E}\to R by

mE(iEeci)=iEZci.m_{E} \left( \bigotimes_{i \in E} e_{c_{i}} \right) = \prod_{i \in E} Z_{c_i}.

That is,

mE(ec)=iEZci.m_{E}(e_{c}) = \prod_{i \in E}Z_{c_i}.

2 This linear map is the map which reads tensors as monomials.

With this notation,

cweC((Za))=mE(γC).\cwe_C((Z_a)) = m_E(\gamma_C).

Thus, when the code vector γC\gamma_C is read by the map mEm_E which sends basis vectors to monomials, the complete weight enumerator appears.

The MacWilliams identity for complete weight enumerators

We translate Theorem 8.2 into the language of complete weight enumerators.

First define the one-coordinate change of variables. For bFqb\in\mathbb{F}_{q}, put

ZbHaFqθ(ab)Za.Z_b^{\mathcal{H}} \coloneqq \sum_{a\in\mathbb{F}_{q}}\theta(ab)Z_a.

This is what we obtain by reading H(eb)\mathcal{H}(e_b) through m1m_1. Indeed,

m1(H(eb))=m1(aFqθ(ab)ea)=aFqθ(ab)Za=ZbH.m_1(\mathcal{H}(e_b)) = m_1\left(\sum_{a\in\mathbb{F}_{q}}\theta(ab)e_a\right) = \sum_{a\in\mathbb{F}_{q}}\theta(ab)Z_a = Z_b^{\mathcal{H}}.

Since

HEec=iE(uiFqθ(uici)eui),\mathcal{H}^{\tensor E} e_{c} = \bigotimes_{i \in E} \left(\sum_{u_{i} \in \mathbb{F}_{q}} \theta(u_{i} c_{i}) e_{u_{i}} \right),

expanding this and reading it through mEm_{E} gives

mE(HEec)=uFqE(iEθ(uici))iEZui=iE(uiFqθ(uici)Zui)=iEZciH.\begin{aligned} m_{E}(\mathcal H^{\tensor E}e_{c}) &= \sum_{u \in \mathbb{F}_{q}^{E}} \left(\prod_{i \in E}\theta(u_{i}c_{i})\right) \prod_{i \in E}Z_{u_{i}}\\ &= \prod_{i \in E} \left(\sum_{u_{i} \in \mathbb{F}_{q}} \theta(u_{i}c_{i})Z_{u_{i}}\right)\\ &= \prod_{i\in E}Z_{c_{i}}^{\mathcal{H}}. \end{aligned}

Theorem 10.1 (MacWilliams identity for complete weight enumerators).

Let CFqEC\leq\mathbb{F}_{q}^{E} be a linear code. Then

cweC((Za)aFq)=1CcweC((ZbH)bFq)\cwe_{C^{\perp}}((Z_a)_{a\in\mathbb{F}_{q}}) = \frac{1}{\card{C}} \cwe_C((Z_b^{\mathcal{H}})_{b\in\mathbb{F}_{q}})

holds, where

ZbH=aFqθ(ab)Za.Z_b^{\mathcal{H}} = \sum_{a\in\mathbb{F}_{q}}\theta(ab)Z_a.
Proof

By Theorem 8.2,

HEγC=CγC.\mathcal{H}^{\tensor E}\gamma_C = \card{C}\gamma_{C^{\perp}}.

Applying mEm_E to both sides gives

mE(HEγC)=CmE(γC)=CcweC((Za)).m_E(\mathcal{H}^{\tensor E}\gamma_C) = \card{C}\,m_E(\gamma_{C^{\perp}}) = \card{C}\,\cwe_{C^{\perp}}((Z_a)).

On the other hand,

mE(HEγC)=cCmE(HEec)=cCiEZciH=cweC((ZbH)bFq).\begin{aligned} m_E(\mathcal{H}^{\tensor E}\gamma_C) &= \sum_{c\in C}m_E(\mathcal{H}^{\tensor E}e_c)\\ &= \sum_{c\in C}\prod_{i\in E}Z_{c_i}^{\mathcal{H}}\\ &= \cwe_C((Z_b^{\mathcal{H}})_{b\in\mathbb{F}_{q}}). \end{aligned}

Hence

CcweC((Za))=cweC((ZbH)bFq),\card{C}\,\cwe_{C^{\perp}}((Z_a)) = \cwe_C((Z_b^{\mathcal{H}})_{b\in\mathbb{F}_{q}}),

and it remains only to divide both sides by C\card{C}.

End of proof

This is a slightly stronger form than the MacWilliams identity for the Hamming weight enumerator. The change of variables for the complete weight enumerator is obtained from the tensor product linear map HE\mathcal{H}^{\tensor E}.

Specialisation to the Hamming weight enumerator

We specialise the complete-weight-enumerator identity to the Hamming weight enumerator. Put

Z0=X,Za=Y(a0).Z_0=X, \qquad Z_a=Y\quad(a\neq 0).

First compute the case b=0b=0.

Z0H=aFqθ(a0)Za=aFqZa=X+(q1)Y.\begin{aligned} Z_0^{\mathcal{H}} &= \sum_{a\in\mathbb{F}_{q}}\theta(a\cdot 0)Z_a\\ &= \sum_{a\in\mathbb{F}_{q}}Z_a\\ &= X+(q-1)Y. \end{aligned}

Next suppose that b0b\neq 0. Then

ZbH=aFqθ(ab)Za=X+YaFq×θ(ab).\begin{aligned} Z_b^{\mathcal{H}} &= \sum_{a\in\mathbb{F}_{q}}\theta(ab)Z_a\\ &= X + Y\sum_{a\in\mathbb{F}_{q}^{\times}}\theta(ab). \end{aligned}

By Lemma 6.1,

aFqθ(ab)=0.\sum_{a\in\mathbb{F}_{q}}\theta(ab)=0.

Therefore

aFq×θ(ab)=θ(0)=1.\sum_{a\in\mathbb{F}_{q}^{\times}}\theta(ab) = -\theta(0) = -1.

Thus

ZbH=XY(b0).Z_b^{\mathcal{H}}=X-Y \qquad (b\neq 0).

Therefore, when we apply this specialisation to the complete-weight-enumerator MacWilliams identity

cweC((Za))=1CcweC((ZbH)),\cwe_{C^{\perp}}((Z_a)) = \frac{1}{\card{C}}\cwe_C((Z_b^{\mathcal{H}})),

the left-hand side becomes

WC(X,Y),W_{C^{\perp}}(X,Y),

and the right-hand side becomes

1CWC(X+(q1)Y,XY).\frac{1}{\card{C}} W_C\bigl(X+(q-1)Y,X-Y\bigr).

We have obtained the usual MacWilliams identity for the Hamming weight enumerator:

WC(X,Y)=1CWC(X+(q1)Y,XY).W_{C^{\perp}}(X,Y) = \frac{1}{\card{C}} W_C\bigl(X+(q-1)Y,X-Y\bigr).

A small example: the binary repetition code of length 22

Let us check what the tensor-product proof is doing using the binary repetition code of length 22. Let

C={00,11}F22.C=\{00,11\}\leq\mathbb{F}_{2}^{2}.

The non-trivial additive character of F2\mathbb{F}_{2} is

θ(a)=(1)a.\theta(a)=(-1)^a.

The one-coordinate Hadamard-type matrix is

H2=(1111).H_2= \begin{pmatrix} 1 & 1\\ 1 & -1 \end{pmatrix}.

The code vector is

γC=e00+e11=e0e0+e1e1.\gamma_C=e_{00}+e_{11} = e_0\tensor e_0+e_1\tensor e_1.

This code is self-dual, so C=CC^{\perp}=C. Indeed, the condition that u=(u1,u2)u=(u_1,u_2) be orthogonal to 1111 is

u1+u2=0,u_1+u_2=0,

which means that u=00u=00 or u=11u=11.

Apply H2H2H_2\tensor H_2 to γC\gamma_C. First,

(H2H2)e00=(e0+e1)(e0+e1)=e00+e01+e10+e11,\begin{aligned} (H_2\tensor H_2)e_{00} &= (e_0+e_1)\tensor(e_0+e_1)\\ &= e_{00}+e_{01}+e_{10}+e_{11}, \end{aligned}

and

(H2H2)e11=(e0e1)(e0e1)=e00e01e10+e11.\begin{aligned} (H_2\tensor H_2)e_{11} &= (e_0-e_1)\tensor(e_0-e_1)\\ &= e_{00}-e_{01}-e_{10}+e_{11}. \end{aligned}

Therefore

(H2H2)γC=2e00+2e11=2γC=CγC.\begin{aligned} (H_2\tensor H_2)\gamma_C &= 2e_{00}+2e_{11}\\ &= 2\gamma_C\\ &= \card{C}\gamma_{C^{\perp}}. \end{aligned}

This is a concrete example of Theorem 8.2.

The complete weight enumerator is

cweC(Z0,Z1)=Z02+Z12.\cwe_C(Z_0,Z_1)=Z_0^2+Z_1^2.

The one-coordinate change of variables is

Z0H=Z0+Z1,Z1H=Z0Z1.Z_0^{\mathcal{H}}=Z_0+Z_1, \qquad Z_1^{\mathcal{H}}=Z_0-Z_1.

Hence

1CcweC(Z0H,Z1H)=12((Z0+Z1)2+(Z0Z1)2)=Z02+Z12=cweC(Z0,Z1).\begin{aligned} \frac{1}{\card{C}}\cwe_C(Z_0^{\mathcal H},Z_1^{\mathcal H}) &= \frac{1}{2}\left((Z_0+Z_1)^2+(Z_0-Z_1)^2\right)\\ &= Z_0^2+Z_1^2\\ &= \cwe_{C^{\perp}}(Z_0,Z_1). \end{aligned}

Finally, setting Z0=XZ_0=X and Z1=YZ_1=Y gives the MacWilliams identity for

WC(X,Y)=X2+Y2.W_C(X,Y)=X^2+Y^2.

What the tensor product was doing in this proof

Let us organise the roles played by the tensor product in the proof.

First, the tensor product represented words as basis vectors. If the one-coordinate basis is

{ea:aFq},\{e_a:a\in\mathbb{F}_{q}\},

then a word c=(ci)c=(c_i) of length nn is represented as

ec=iEeci.e_c=\bigotimes_{i\in E}e_{c_i}.

This makes the code CC into a single vector

γC=cCec.\gamma_C=\sum_{c\in C}e_c.

Second, the tensor product extended a one-coordinate transformation to all coordinates. The one-coordinate Hadamard-type transformation

H(eb)=aFqθ(ab)ea\mathcal{H}(e_b)=\sum_{a\in\mathbb{F}_{q}}\theta(ab)e_a

was made to act on the length-nn space as

HE.\mathcal{H}^{\tensor E}.

As a result, we obtained

HEec=uFqEθ(uc)eu.\mathcal{H}^{\tensor E}e_c = \sum_{u\in\mathbb{F}_{q}^{E}}\theta(u\cdot c)e_u.

When the coordinatewise coefficients θ(uici)\theta(u_i c_i) are multiplied, the global inner product ucu\cdot c appears.

Third, the tensor product naturally produced the complete weight enumerator. If in one coordinate we read

eaZa,e_a\mapsto Z_a,

then on the tensor product we read

ec1ecnZc1Zcn.e_{c_1}\tensor\cdots\tensor e_{c_n} \mapsto Z_{c_1}\cdots Z_{c_n}.

This allowed us to read the code vector γC\gamma_C as the complete weight enumerator

cweC((Za))=cCiEZci.\cwe_C((Z_a))=\sum_{c\in C}\prod_{i\in E}Z_{c_i}.

In short, in the proof in this note the tensor product played three roles:

  1. vectorising words,

  2. lifting a one-coordinate transformation to a multi-coordinate transformation,

  3. treating the product of coordinatewise monomials as a linear map.

Concepts covered in this note

In this note, while aiming at a proof of the MacWilliams identity, we introduced some basic tools of tensor product linear algebra. They may be summarised as follows.

Tensor product

The vector space UVU\tensor V constructed from vector spaces U,VU,V. Once bases eie_i and fjf_j are chosen, the elements eifje_i\tensor f_j form a basis.

Pure tensor

An element uvUVu\tensor v\in U\tensor V formed from uUu\in U and vVv\in V. A general tensor can be written as a sum of pure tensors, but it need not be writable as a single pure tensor.

Universal property

The tensor product is a device for treating bilinear maps as linear maps. A bilinear map B ⁣:U×VWB\colon U\times V\to W corresponds to a unique linear map B~ ⁣:UVW\widetilde B\colon U\tensor V\to W.

Tensor product linear map

From linear maps A ⁣:UUA\colon U\to U' and B ⁣:VVB\colon V\to V', one obtains a linear map AB ⁣:UVUVA\tensor B\colon U\tensor V\to U'\tensor V'. On pure tensors it acts by

(AB)(uv)=A(u)B(v).(A\tensor B)(u\tensor v)=A(u)\tensor B(v).
Kronecker product

A tensor product linear map written as a matrix after choosing bases. Taking the nn-fold Kronecker product of a one-coordinate matrix gives a matrix acting on all words of length nn.

Code vector

The vector in the tensor product space which represents a code CC:

γC=cCec.\gamma_C=\sum_{c\in C}e_c.
Complete weight enumerator

A weight enumerator in which a variable ZaZ_a is assigned to each element aFqa\in\mathbb{F}_{q} of the finite field. On the tensor product, it is obtained from the linear map sending ece_c to iZci\prod_i Z_{c_i}.

Hadamard-type transformation

The one-coordinate linear transformation defined using a non-trivial additive character θ\theta by

H(eb)=aFqθ(ab)ea.\mathcal{H}(e_b)=\sum_{a\in\mathbb{F}_{q}}\theta(ab)e_a.

Its tensor product HE\mathcal{H}^{\tensor E} sends the code vector to C\card{C} times the dual-code vector.

Tensor products are often regarded as rather abstract tools, but in this proof they appeared quite concretely. We used the tensor product to extend the one-coordinate basis, the one-coordinate transformation, and the one-coordinate reading of variables to all coordinates at once.

Looking back at this proof family

As stated at the beginning, the proof in this note belongs to the family

Fourier, character-theoretic, and Poisson methods.

On the surface, it is a linear-algebraic proof using tensor products and Kronecker products. But at a deeper level, it uses the one-coordinate Hadamard-type transformation

Ha,b=θ(ab),\mathcal{H}_{a,b}=\theta(ab),

which is the matrix representation of the Fourier transform over the finite field. For a more advanced perspective on the relation between finite Fourier transforms and weight-enumerator identities for codes, see Tolimieri [Tol85]. This note does not enter that whole picture, but extracts, in elementary form, only the part where a one-coordinate Fourier matrix is made multi-coordinate by taking tensor products.

The key point of the proof in this note can be summarised in one sentence:

When a one-coordinate Fourier matrix is made to act on all coordinates by tensor product, the code vector γC\gamma_C is sent to the dual-code vector CγC\card{C}\gamma_{C^\perp}.

From this viewpoint, the MacWilliams identity is obtained by reading the linear-algebraic equality

HEγC=CγC\mathcal{H}^{\tensor E}\gamma_C = \card{C}\gamma_{C^{\perp}}

in the tensor product space as a complete weight enumerator. The identity for the ordinary Hamming weight enumerator is the result of specialising the complete-weight-enumerator identity by

Z0=X,Za=Y(a0).Z_0=X, \qquad Z_a=Y\quad(a\neq 0).

Thus, the proof in this note is very close in spirit to the character-theoretic proof. The difference is that instead of directly computing character sums, we package the one-coordinate character sum as a matrix H\mathcal{H} and then make it multi-coordinate using tensor products. Even though the underlying principle is the same Fourier principle, writing it in the language of tensor products makes the structure of “lifting a local transformation to the whole space” clearly visible.

Next time

Next time, we shall revisit the MacWilliams identity in the language of Krawtchouk polynomials.

In the tensor-product proof in this note, we used the complete weight enumerator. That is, we prepared a variable ZaZ_a for each element aFqa\in\mathbb{F}_{q} of the finite field, and used the one-coordinate Fourier matrix itself as a change of variables.

On the other hand, in the ordinary Hamming weight enumerator, all non-zero elements are gathered into the same variable YY. As a result, the fine information in the complete weight enumerator is forgotten, and only the coefficients for the weights

0,1,,n0,1,\dots,n

remain. The Krawtchouk polynomials appear as the coefficient transformation obtained by looking only at these weights.

Next time, we shall view the MacWilliams identity as the coefficient-level transformation

Aj(C)=1Ci=0nAi(C)Kj(i)A_j(C^\perp) = \frac{1}{\card{C}}\sum_{i=0}^{n}A_i(C)K_j(i)

and use it as an introduction to Krawtchouk polynomials.

Footnotes

  1. Here we have constructed θ\theta concretely from the first coordinate with respect to the chosen basis. In the language of character theory, a non-constant function satisfying θ(x+y)=θ(x)θ(y)\theta(x + y) = \theta(x)\theta(y) is called a non-trivial additive character of Fq\mathbb{F}_{q}. In many textbooks, functions of the same kind are often constructed using the trace map. In this note, I want to see the role of the tensor product, so I do not go deeply into character theory itself. For a systematic treatment of additive characters and their orthogonality relations, see the second note.
  2. If you are not yet used to the universal property of the tensor product, it may be clearer to define this directly on the basis. The basis of UEU^{\tensor E} is ec=iEeci\displaystyle e_{c} = \bigotimes_{i \in E}e_{c_i} (cFqEc \in \mathbb{F}_{q}^{E}), so define mE(ec)iEZcim_{E}(e_{c}) \coloneqq \prod_{i \in E}Z_{c_{i}} on the basis and extend linearly.

References

  1. [Gre78] Werner Greub. Multilinear algebra. Springer-Verlag, New York-Heidelberg, pp. vii+294, 1978
  2. [Rom08] Steven Roman. Advanced linear algebra. Springer, New York, vol. 135, pp. xviii+522, 2008
  3. [HJ91] Roger A. Horn and Charles R. Johnson. Topics in matrix analysis. Cambridge University Press, Cambridge, pp. viii+607, 1991. doi:10.1017/CBO9780511840371
  4. [Van00] Charles F. Van Loan. The ubiquitous Kronecker product. J. Comput. Appl. Math., vol. 123, no. 1-2, pp. 85–100, 2000. doi:10.1016/S0377-0427(00)00393-9
  5. [MS77] F. J. MacWilliams and N. J. A. Sloane. The theory of error-correcting codes. II. North-Holland Publishing Co., Amsterdam-New York-Oxford, vol. Vol. 16, pp. i–ix and 370–762, 1977
  6. [Tol85] R. Tolimieri. The algebra of the finite Fourier transform and coding theory. Trans. Amer. Math. Soc., vol. 287, no. 1, pp. 253–273, 1985. doi:10.2307/2000409

This series

A Series Learning through the MacWilliams Identity · Part 3 of 12

Back to series list

Disclaimer

Articles on this site are based on the operator's personal understanding, investigation, and research notes. I try to keep the content accurate, but it may contain errors or incomplete explanations. I do not guarantee its accuracy, completeness, usefulness, or currentness.

Please use the information on this site at your own judgment and responsibility. To the extent permitted by law, the operator is not liable for damages, losses, or disadvantages arising from using, or being unable to use, information on this site.

If you notice an error, unclear explanation, broken link, or insufficient citation, please contact the operator. I will review the content and, when appropriate, correct, update, or remove it.