Forney's Coset Code Framework

Putting Code and Lattice Together

Here is Forney's framework. Fix a lattice partition Λ/Λ\Lambda / \Lambda' of index Λ/Λ=2k|\Lambda/\Lambda'| = 2^k — so there are 2k2^k cosets, which we can label by kk bits. A coset code is the result of plugging a binary code of rate R/kR/k into these label bits and using the output bits to pick a coset; the transmitter then sends any point in the chosen coset (typically the one closest to some shaping boundary). The minimum distance of the resulting constellation is

dmin2(coset code)  =  min ⁣(d2(Λ),  dHamming2(C)d2(Λ/Λ)),d_{\min}^2(\text{coset code}) \;=\; \min\!\Bigl(d^2(\Lambda'), \; d^2_{\rm Hamming}(\mathcal{C}) \cdot d^2(\Lambda / \Lambda') \Bigr),

where d(Λ)d(\Lambda') is the minimum distance of the sublattice and d(Λ/Λ)d(\Lambda/\Lambda') is the intra-coset distance at the first partition step. This is the same bounding argument as in TCM (Ch. 2): the coded distance is the minimum of two competing error events — the binary code failing (inter-coset error), and a lattice error within the correctly chosen coset (intra-coset error).

Notice what the framework achieves. Coding gain now appears in a single clean formula. Rate (the index Λ/Λ|\Lambda/\Lambda'| and the code rate R/kR/k) and distance (the lattice distances d(Λ)d(\Lambda') and d(Λ/Λ)d(\Lambda/\Lambda')) are cleanly separated. And — crucially — because we work with lattices rather than finite constellations, we have unlimited flexibility to enlarge the constellation without changing the coding design. The shaping operation that will come next can pick out any bounded region we like.

Definition:

Forney Coset Code

Let Λ/Λ\Lambda / \Lambda' be a lattice partition of index 2k2^k and let C{0,1}n\mathcal{C} \subset \{0,1\}^n be a binary code of length nn and dimension nRnR. A Forney coset code C(Λ/Λ;C)C(\Lambda / \Lambda' ; \mathcal{C}) is the set of sequences (λ1,,λn/k)(\lambda_1, \ldots, \lambda_{n/k}) of lattice points in Λ\Lambda such that, writing each λt\lambda_t in the form λt=ct+λt\lambda_t = \mathbf{c}_t + \lambda'_t with ct\mathbf{c}_t a fixed coset-representative and λtΛ\lambda'_t \in \Lambda', the concatenated coset-label string (b1,,bn/k){0,1}n(\mathbf{b}_1, \ldots, \mathbf{b}_{n/k}) \in \{0,1\}^n (with bt{0,1}k\mathbf{b}_t \in \{0,1\}^k labelling the coset of λt\lambda_t) belongs to C\mathcal{C}.

Informally: use a binary code C\mathcal{C} to select cosets; once the cosets are chosen, the encoder is free to pick any point in each coset.

The definition looks abstract but is mechanical to implement: partition each signalling interval into levels via the partition chain, run a binary code on the label bits, and decode level-by-level (multistage) or jointly. When C\mathcal{C} is a trellis code, we recover Ungerboeck TCM. When C\mathcal{C} is an LDPC code and multiple levels are coded, we recover multilevel coding.

,

Theorem: Minimum Distance of a Coset Code

Let C(Λ/Λ;C)C(\Lambda/\Lambda' ; \mathcal{C}) be a coset code with partition of index 22 (binary partition) and binary code C\mathcal{C} of minimum Hamming distance dHd_H. Its minimum squared Euclidean distance is

dmin2 ⁣(C(Λ/Λ;C))  =  min ⁣(d2(Λ),  dHd2(Λ/Λ)),d_{\min}^2\!\bigl(C(\Lambda/\Lambda' ; \mathcal{C})\bigr) \;=\; \min\!\Bigl( d^2(\Lambda'), \; d_H \cdot d^2(\Lambda / \Lambda')\Bigr),

where d(Λ)d(\Lambda') is the minimum squared distance of Λ\Lambda', and d(Λ/Λ)d(\Lambda/\Lambda') is the minimum squared distance between two cosets of Λ\Lambda' in Λ\Lambda.

Two distinct codewords differ in at least one coset label or zero coset labels. If zero — the same coset sequence — they are both sequences of points in the same Λ\Lambda' shifts, so they differ by a distance at least d(Λ)d(\Lambda'). If they differ in dHd_H or more coset labels, the contribution from those positions is at least dHd2(Λ/Λ)d_H \cdot d^2(\Lambda/\Lambda').

,

Definition:

Fundamental Coding Gain

The fundamental coding gain of a coset code with respect to a baseline uncoded lattice Λ0\Lambda_0 (typically Zn\mathbb{Z}^n or the rate-matched uncoded reference) is the ratio of the normalised minimum squared distance to the baseline's, expressed in dB:

γc  =  dmin2(C)/V(Λc)2/ndmin2(Λ0)/V(Λ0)2/n,γc[dB]=10log10γc.\gamma_c \;=\; \frac{d_{\min}^2(C) \, / \, V(\Lambda_c)^{2/n}} {d_{\min}^2(\Lambda_0) \, / \, V(\Lambda_0)^{2/n}}, \qquad \gamma_c[\mathrm{dB}] = 10 \log_{10} \gamma_c.

The normalisation by the 2/n2/n-th power of the volume cancels the effect of trivial rescaling — we compare constellations at the same point density. The fundamental coding gain measures the lattice-level contribution to the gap to capacity; it ignores error multiplicity (kissing number) and pre-factor effects.

The E8E_8 lattice has a fundamental coding gain of 3.013.01 dB over Z8\mathbb{Z}^8; the Leech lattice has 6.026.02 dB over Z24\mathbb{Z}^{24}. These are purely geometric numbers, achievable without any time-sequencing code — the lattice alone does the work. Adding a convolutional or LDPC code on top of the lattice partitions can push γc\gamma_c further.

,

Example: The Z4/D4\mathbb{Z}^4 / D_4 Coset Code

Use the partition Z4/D4\mathbb{Z}^4 / D_4 of index 22 with the (4,3,2)(4, 3, 2) single-parity-check code as the binary code C\mathcal{C}. Write out the resulting coset code and compute its fundamental coding gain over the uncoded Z4\mathbb{Z}^4 baseline.

,

TCM Is a Coset Code

Here is the single most important unification in this chapter. Ungerboeck's TCM from Ch. 2 is nothing more than a coset code over a specific partition chain of Z2\mathbb{Z}^2. The Ungerboeck 8-PSK chain Z2RZ22Z2\mathbb{Z}^2 \supset R\mathbb{Z}^2 \supset 2\mathbb{Z}^2 (where R=2R = \sqrt{2} is the "rotation-scaling" operator) provides the cosets; the TCM trellis code is the binary code C\mathcal{C} on the partition label bits. Calderbank and Sloane (1987) made this observation precise and went on to construct many new TCM schemes by swapping C\mathcal{C} for better binary codes.

This is not a coincidence of notation — it is a claim about the structure of coded modulation. Every practical coded-modulation scheme with a finite state space is a lattice coset code for some partition chain and some binary code. Multilevel coding (Ch. 3) is the same framework with one binary code per level. BICM (Ch. 5) is the same framework with an independent "bit-channel" view of each level. The coset-code framework is the common parent.

,

Coset Code BER: Coding Gain + Shaping Gain

High-SNR approximation of the BER of a coset-coded constellation on an AWGN channel, plotted against an uncoded QAM reference. The coding gain γc\gamma_c shifts the curve left; the shaping gain γs\gamma_s shifts it left by a further amount. The reader can sweep γc\gamma_c up to 1010 dB (an E8E_8-class code) and γs\gamma_s up to 1.531.53 dB (the ultimate sphere limit) to see how the total gain decomposes.

Parameters
4
1
🔧Engineering Note

V.34 Modem: 4D Coset Code with Shaping

The V.34 voice-band modem standard (ITU-T Rec. V.34, 1998 — the last analogue dial-up standard before DSL) used a 44-dimensional coset code based on the partition Z4/D4/RD4/2Z4\mathbb{Z}^4 / D_4 / R D_4 / 2 \mathbb{Z}^4 (four-level binary chain) with a 1616- or 3232-state convolutional code on the top two levels. The fundamental coding gain of the code was about 4.04.0 dB, and it combined with a 1616-dimensional shell-mapping shaper (Section 5) providing about 0.80.8 dB of shaping gain — a total of 4.8\approx 4.8 dB over uncoded QAM, which pushed the achievable rate from 19.219.2 kb/s (uncoded limit) to 33.633.6 kb/s on a 3.43.4-kHz voice-band channel.

Practical Constraints
  • Complexity limit: 4D lattice decoding in real time on 1990s-era DSPs

  • Shaping overhead: 1\sim 1 extra bit per 4D symbol for shell mapping

  • Robustness: the coset code must tolerate non-ideal line conditions (echo, phase jitter)

📋 Ref: ITU-T Recommendation V.34, 1998
,

Common Mistake: Fundamental Coding Gain Ignores Kissing Number

Mistake:

Quoting a large fundamental coding gain γc\gamma_c without mentioning the kissing number, and claiming this is the full dB advantage at the target error rate.

Correction:

The union-bound pre-factor K(Λ)K(\Lambda) subtracts roughly (10/dmin)log10K(Λ)(10/d_{\min}) \log_{10} K(\Lambda) dB of effective gain at finite error rates. For Λ24\Lambda_{24} the kissing number is 196560196560, contributing about 1.51.522 dB of effective loss at BER 10610^{-6}, so the true usable gain is closer to 44 dB than the nominal 6.026.02 dB. Always report both γc\gamma_c and K(Λ)K(\Lambda) together.

Coset code

A constellation obtained by selecting cosets of a sublattice ΛΛ\Lambda' \subset \Lambda via a binary code on the partition labels. Due to Forney (1988).

Related: Lattice in Rn\mathbb{R}^n, TCM Is a Coset Code, Partition Chain of a Constellation

Coding gain

The dB advantage in normalised minimum squared distance of a coded constellation over an uncoded reference at the same rate. Decomposes into a fundamental (lattice-only) part and a pre-factor (kissing-number) part.

Related: Fundamental Coding Gain, Kissing Number

Quick Check

A coset code uses the partition Z2/2Z2\mathbb{Z}^2 / 2\mathbb{Z}^2 (index 44) and a binary code of minimum Hamming distance dH=4d_H = 4. What is the coset code's minimum squared Euclidean distance?

44

11

dH=4d_H = 4 squared equals 1616

Cannot be determined without more information

Key Takeaway

Forney's coset-code framework is the common parent of TCM, MLC, and BICM. Fix a partition Λ/Λ\Lambda/\Lambda' and a binary code C\mathcal{C}. The coded constellation has minimum squared distance min(d2(Λ),dHd2(Λ/Λ))\min(d^2(\Lambda'), d_H \cdot d^2(\Lambda/\Lambda')), balancing the sublattice and code contributions. The fundamental coding gain γc\gamma_c is a purely geometric number determined by the lattice; the binary code then shifts the balance. Once we have the coding side under control, the remaining gap to capacity is the shaping problem of the next section.