Justesen codes #
Let F be a finite field whose elements are written as b bits through an additive bijection
φ : F ≃+ BitString b, so that F has q = 2 ^ b elements; every field of characteristic two with
2 ^ b elements has such a bijection (Cslib.nonempty_addEquiv_bitString). The Justesen
code [Jus72], [GRS19] of outer dimension K concatenates the Reed–Solomon
code of dimension K whose evaluation points are the q - 1 nonzero elements u of F with inner
codes that vary with the position: the symbol a at the position u becomes the 2 * b bits of
(a, u * a), its Wozencraft encoding Cslib.Code.wozencraft (Cslib.Code.justesen,
Cslib.Code.justesenCode). No search over inner codes is involved, which is what makes the
construction explicit.
Nonzero symbols at distinct positions have distinct Wozencraft encodings, since (a, u * a)
determines a and then u (Cslib.Code.wozencraft_inj). Two distinct Reed–Solomon codewords
differ at s ≥ q - K positions; the differences of their inner blocks there are s distinct
nonzero binary words of length 2 * b, at most V(r) = ∑_{j ≤ r} C(2 * b, j) of which have
weight at most r (Cslib.BitString.card_filter_weight_le). So their Justesen
encodings are at distance at least (q - K - V(r)) * (r + 1) for every r
(Cslib.Code.le_minDist_justesenCode), by the counting bound
Cslib.Code.sub_card_mul_le_sum_hammingNorm.
With the binomial estimate V(r) * 4 ^ (2 * b) ≤ 4 ^ r * 5 ^ (2 * b)
(Cslib.Code.sum_range_choose_mul_four_pow_le), this shows that Justesen codes are
asymptotically good (Cslib.Code.IsAsymptoticallyGood): for b = 16 * s and
K = 2 ^ (16 * s - 1), the Justesen code is a binary code of length
n = 32 * s * (2 ^ (16 * s) - 1) with 2 ^ k codewords, where n ≤ 4 * k, and minimum distance
at least n / 128 (Cslib.Code.card_le_mul_minDist_justesenCode,
Cslib.Code.isAsymptoticallyGood_justesenCode); the lengths grow without bound with s, while the
rate stays at least 1 / 4 and the relative distance at least 1 / 128. These constants are not
optimized: estimating V(r) by the binary entropy function H instead gives relative distance
approaching (1 - 2 R) H⁻¹(1 / 2) ≈ 0.11 * (1 - 2 R) at rate R < 1 / 2
[GRS19]; this is not formalized here.
Main definitions #
Cslib.Code.wozencraft: the Wozencraft inner encoding with a given multiplier.Cslib.Code.justesen: the Justesen encoding of an outer word.Cslib.Code.justesenCode: the Justesen code.
Main results #
Cslib.Code.wozencraft_inj: nonzero symbols at distinct positions have distinct encodings.Cslib.Code.sub_card_mul_le_sum_hammingNorm: many distinct words have large total weight.Cslib.Code.le_minDist_justesenCode: the minimum distance of Justesen codes.Cslib.Code.card_justesenCode: the number of codewords.Cslib.Code.card_le_mul_minDist_justesenCode: the relative distance of Justesen codes at rate at least1 / 4.Cslib.Code.isAsymptoticallyGood_justesenCode: Justesen codes are asymptotically good.
References #
- J. Justesen, Class of constructive asymptotically good algebraic codes
- [V. Guruswami, A. Rudra, M. Sudan, Essential Coding Theory] [GRS19]
Weights of distinct words #
Distinct words are heavy. If g is injective on S, the words g u for u ∈ S have
total weight at least (#S - V) * (r + 1), where V is the number of words of weight at most
r.
The Wozencraft encoding #
The Wozencraft encoding of the symbol a with multiplier u: the binary word on
Fin 2 × Fin b holding the bits of a in its first half and the bits of u * a in its second,
read through the additive bijection φ : F ≃+ BitString b.
Instances For
The Wozencraft encoding with a fixed multiplier is injective: the first half of the encoding holds the bits of the symbol.
Distinct inner codes. The Wozencraft encoding of a nonzero symbol determines the symbol and the multiplier: nonzero symbols at distinct positions of a Justesen codeword have distinct encodings.
Justesen codes #
The distance of Justesen codes [Jus72]. For a field with q elements written as
b bits, the Justesen code of outer dimension K has minimum distance at least
(q - K - V(r)) * (r + 1) for every r, where V(r) = ∑_{j ≤ r} C(2 * b, j) is the number of
binary words of length 2 * b and weight at most r.
The number of Justesen codewords. For a field with q elements written as b bits and
K ≤ q - 1, the Justesen code of outer dimension K has q ^ K = 2 ^ (b * K) codewords.
The relative distance of Justesen codes at rate at least 1 / 4 [Jus72]. Let s ≥ 1
and let F be a field written as b = 16 * s bits, which then has 2 ^ (16 * s) elements. The
Justesen code of outer dimension K = 2 ^ (16 * s - 1) is a binary code of length
n = 32 * s * (2 ^ (16 * s) - 1) whose minimum distance d satisfies n ≤ 128 * d.
Justesen codes are asymptotically good [Jus72]. Given for each s a field F s
written as 16 * (s + 1) bits through φ s : F s ≃+ BitString (16 * (s + 1)), the Justesen codes
justesenCode (φ s) (2 ^ (16 * (s + 1) - 1)) form an asymptotically good family of binary codes:
their lengths 32 * (s + 1) * (2 ^ (16 * (s + 1)) - 1) grow without bound, with rate at least
1 / 4 and relative distance at least 1 / 128.