Helper lemmas for the counting argument #
Counting argument infrastructure #
For nonzero v, the evaluation map is surjective.
When the number of nonzero vectors with Hamming weight less than d is less than 2^r, there exists a linear map φ : 𝔽₂^n → 𝔽₂^r such that φ v ≠ 0 for all nonzero v of weight < d. This is the counting/probabilistic method argument.
Combined counting argument: when both the distance and dual-distance Hamming
ball bounds hold, there exists a surjective linear map φ : 𝔽₂^n → 𝔽₂^r whose
kernel code has good distance AND whose dual code also has good distance. This
extends exists_good_map by simultaneously bounding both bad-distance and
bad-dual-distance events via a union bound: P(bad dist) + P(bad dual) < 1,
and observing that any map satisfying the dual condition is automatically
surjective (otherwise some nonzero y has φᵀ(y) = 0, weight 0 < t).
Distance of a code ≥ t if no nonzero codeword has weight < t and the code has a nonzero element.
Submodule of prescribed finrank inside a larger submodule.
Existence of codes with good distance #
Double dual identity for codes: (dualCode (dualCode 𝒞)).code = 𝒞.code.
Over a finite-dimensional space, the double annihilator equals the original subspace.
The distance of a code equals the distance of its double dual.