Proofs for the rank-cut bound #
Fix a split S of the wires and the boundary key of an input x₀. Mixing an input with the
same key into x₀ on the coordinates outside S keeps every output carried outside S
(SingleCut.trace_mix), so the left parts of the fibre embed into the left fibre of x₀
(card_leftParts_le); symmetrically for the right parts. As the fibres of the key are products
of their left and right parts (SingleCut.card_filter_boundaryKey_eq), summing over the keys
gives |U| ^ n ≤ |U| ^ (|A| + |B|) · DT · DS (card_pow_le_of_fibres).
For a linear map x ↦ M x, the differences between a left fibre and its base point lie in the
kernel of the block M[Y_T, X_S], so a left fibre has at most |F| ^ (|X_S| - r₁) elements
(card_leftFibre_le), and the exponents compare to r₁ + r₂ ≤ |A| + |B|.
The general fibre bound #
The left parts of a fibre embed into the left fibre of any of its members.
The right parts of a fibre embed into the right fibre of any of its members.
The forward fibre bound. If every left fibre has at most DT elements, then
|U| ^ |X_S| ≤ |U| ^ |A| · DT, using only the forward signals A = forward p S.
The backward fibre bound. Symmetrically, if every right fibre has at most DS elements,
then |U| ^ |X_T| ≤ |U| ^ |B| · DS, using only the backward signals B = backward p S.
The general fibre bound. If every left fibre has at most DT elements and every right
fibre at most DS, then |U| ^ n ≤ |U| ^ (|A| + |B|) · DT · DS.
Linear maps #
The kernel of a matrix over a finite field has |F| ^ (width - rank) elements.
Left fibres of a linear map. The inputs that differ from x only on the coordinates in
S and keep the outputs carried outside S differ from x by a kernel vector of the block
M[Y_T, X_S]; there are at most |F| ^ (|X_S| - rank M[Y_T, X_S]) of them.
Right fibres of a linear map. Symmetrically, there are at most
|F| ^ (n - |X_S| - rank M[Y_S, X_T]) inputs differing from x only outside S and keeping
the outputs carried in S.
The forward rank-cut bound for a program. If the wires out carry the linear map
x ↦ M x, then for every split S, rank M[Y_T, X_S] ≤ |A|, where A = forward p S.
The backward rank-cut bound for a program. Symmetrically, if the wires out carry the
linear map x ↦ M x, then for every split S, rank M[Y_S, X_T] ≤ |B|, where
B = backward p S.
The rank-cut bound for a program. If the wires out carry the linear map x ↦ M x,
then for every split S, rank M[Y_T, X_S] + rank M[Y_S, X_T] ≤ |A| + |B|.