Hypergraph-product transpose transport #
Swapping the column blocks identifies the Z check with the X check on transposed inputs, preserving kernels, row spaces and Hamming weight. This transport supports both the dimension formula and the distance bounds without importing a cleaning proof.
Split from upstream GF2/HGPCleaningDual.lean without changing the declarations.
1. The block swap #
The block swap, an involution: $\alpha\oplus\beta \to \beta\oplus\alpha$. It is
exactly the Equiv.sumComm appearing in hgpHZ_transpose_inputs_apply.
Equations
Instances For
The block swap is an involution.
The block swap is injective.
2. The row identity and the correspondence of kernels #
The row identity: row $x$ of $H_Z(H_1^\top,H_2^\top)$ is row $x$ of $H_X(H_1,H_2)$ followed by the block swap, entrywise, straight from the transpose-code relation of part two.
The row identity for the dot products: the two kernel conditions are equal row by row, not merely vanishing together.
The correspondence of kernels: $v\in\ker H_Z(H_1,H_2)$ exactly when the swapped $v$ lies in $\ker H_X(H_1^\top,H_2^\top)$.
The correspondence of row spaces: for a vector $w$ that after the swap lies in the row space of $H_Z(H_1^\top,H_2^\top)$, swapping once more puts it in the row space of $H_X(H_1,H_2)$; for $v := w\circ\text{swap}$ this says $v\in\mathrm{row}H_X(H_1,H_2)$.