The rank-cut bound #
Split the wires of a multi-output circuit into S and its complement T, with forward signals
A = forward c.program S and backward signals B = backward c.program S. Let X_S and X_T
be the inputs placed in S and in T, and Y_S and Y_T the outputs whose wires lie in S
and in T (outputsIn); an output carried by an input wire is placed with that wire.
The rank-cut bound (blockRank_add_blockRank_le). If a circuit with values in a finite
field F, with any gates, computes the linear map x ↦ M x, then for every split
rank M[Y_T, X_S] + rank M[Y_S, X_T] ≤ |A| + |B|.
The proof uses the product fibres of SingleCut. The inputs with a fixed boundary key form a
product L × R of left and right parts. On such a fibre the outputs carried in T depend only
on the right part, so the left parts lie in a coset of the kernel of M[Y_T, X_S] and number at
most |F| ^ (|X_S| - rank M[Y_T, X_S]); symmetrically for the right parts. Since there are at
most |F| ^ (|A| + |B|) keys, |F| ^ n ≤ |F| ^ (|A| + |B|) |F| ^ (n - r₁ - r₂).
The counting step holds for every function and every finite value type
(card_pow_le_of_fibres): if every left fibre (inputs varying only on X_S and keeping the
outputs in Y_T) has at most DT elements and every right fibre at most DS, then
|U| ^ n ≤ |U| ^ (|A| + |B|) · DT · DS.
The general fibre bound #
The forward fibre bound for a program. If the wires out of a program carry f and
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 for a program. 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 fibre bound for a program. If the wires out of a program carry f, every left
fibre has at most DT elements and every right fibre at most DS, then
|U| ^ n ≤ |U| ^ (|A| + |B|) · DT · DS.
The forward fibre bound. If a circuit computes f and every left fibre of a split has
at most DT elements, then |U| ^ |X_S| ≤ |U| ^ |A| · DT.
The backward fibre bound. Symmetrically, if every right fibre of a split has at most
DS elements, then |U| ^ |X_T| ≤ |U| ^ |B| · DS.
The fibre bound. If a circuit computes f, every left fibre of a split has at most
DT elements and every right fibre at most DS, then
|U| ^ n ≤ |U| ^ (|A| + |B|) · DT · DS.
Linear maps #
Left fibres of a linear map have at most |F| ^ (|X_S| - rank M[Y_T, X_S])
elements.
Right fibres of a linear map have at most |F| ^ (|X_T| - rank M[Y_S, X_T])
elements.
The forward rank-cut bound for a program. If the wires out of a program carry the
linear map x ↦ M x, every split S has rank M[Y_T, X_S] ≤ |A|, where A = forward p S.
The backward rank-cut bound for a program. Symmetrically, every split S has
rank M[Y_S, X_T] ≤ |B|, where B = backward p S.
The rank-cut bound for a program. If the wires out of a program carry the linear map
x ↦ M x, every split S has rank M[Y_T, X_S] + rank M[Y_S, X_T] ≤ |A| + |B|.
The forward rank-cut bound. If a circuit with values in a finite field, over any
signature, computes the linear map x ↦ M x, then every set S of its wires has
rank M[Y_T, X_S] ≤ |A|, where A = forward c.program S.
The backward rank-cut bound. Symmetrically, every set S of its wires has
rank M[Y_S, X_T] ≤ |B|, where B = backward c.program S.
The rank-cut bound. If a circuit with values in a finite field, over any signature,
computes the linear map x ↦ M x, then every set S of its wires has
rank M[Y_T, X_S] + rank M[Y_S, X_T] ≤ |A| + |B|, where X_S and X_T are the inputs in S
and outside S, Y_S and Y_T the outputs whose wires lie in S and outside S, and A
and B the forward and backward signals of S.