The Reed-Muller codes are a family of linear error-correcting codes used in communications.
Construction
The following describes how to construct a generating matrix of a Reed-Muller code of length n = 2d. Let us write:

We define the indicator vectors:

on subsets
by:

together with the binary operation:

referred to as the wedge product.
Let

where the Hi are the co-ordinate hyperplanes (of dimension 2d-1):

The Reed-Muller RM(d,r) code of order r and length n=2d is the code generated by v0 and the wedge products of upto r of the
(where by convention a wedge product of fewer than one vector is the identity for the operation).
Example
Let d=3. Then n=8, and

and

The RM(3,1) code is generated by the set

or more explicitly by the rows of the matrix:

and the RM(3,2) code is generated by the set:

Properties
The following properties hold:
1 The set of all possible wedge products of upto d of the v_i form a basis for
.
2 The RM(d,r) code has rank:

3 The RM(d,r) = RM(d-1,r) | RM(d-1,r-1) where '|' denotes the bar product of two codes.
4 RM(d,r) has minimum Hamming weight 2d-r.
Proof
1
- There are

- such vectors and
has dimension n so it is sufficient to check that the n vectors span; equivalently it is sufficient to check that RM(d,r) =
.
- Let xi be an element of X and define

- Then

- Expansion via the distributivity of the wedge product gives
. Then since the vectors
span
we have RM(d,r) =
.
2
- By 1, all such wedge products must be linearly independent, so the rank of RM(d,r) must simply be the number of such vectors.
3
- Omitted.
4
- By induction.
- The RM(d,0) code is the repetition code of length n=2d and weight n = 2d-0 = 2d-0. By 1 RM(d,d) =
and has weight 1 = 20 = 2d-d.
- It can be shown that the weigth of the bar product of two codes C1 , C2 is given by

- If 0 < r < d and if
- i) RM(d-1,r) has weight 2d-1-r
- ii) RM(d-1,r-1) has weight 2d-1-(r-1) = 2d-r
- then the bar product has weight
