Circuits for kernel vectors #
The elimination procedure Cslib.LinearAlgebra.kernelVec, which returns a nonzero vector in the
kernel of a matrix whenever there is one, is a fixed arithmetic computation with tests for zero.
Over the full binary basis of a field, where every operation on at most two field elements is one
gate, it costs O((r + 1) * n ^ 2) gates for a matrix with r rows and n columns: the indicator
of the first nonzero entry of a vector of length n costs 2 * n + 1 gates
(Cslib.Circuits.Synthesis.full_firstFlags), one elimination step at most 8 * (n + 1) ^ 2
(Cslib.Circuits.Synthesis.full_kernelStep) and the whole procedure at most
kernelVecCost r n = 8 * (r + 1) * (n + 1) ^ 2 (Cslib.Circuits.Synthesis.full_kernelVec).
The entries of the matrix may be arbitrary available functions of the circuit's inputs.
Main definitions #
Cslib.Circuits.kernelVecCost: the gate budget of the elimination procedure.
Main results #
Cslib.Circuits.Synthesis.full_firstFlags: the first nonzero entry.Cslib.Circuits.Synthesis.full_nonzero: the indicator of a nonzero vector.Cslib.Circuits.Synthesis.full_kernelStep: one elimination step.Cslib.Circuits.Synthesis.full_kernelVec: a kernel vector.
References #
The gate budget of the elimination procedure for r rows and n columns over the full binary
basis.
Instances For
The first nonzero entry. The indicators firstFlags b i of the first nonzero entry of a
vector of n available functions cost 2 * n + 1 gates of the full binary basis.
One elimination step. If the entries of the row a and of the family Nv are available,
the entries of kernelStep a Nv cost at most 8 * (n + 1) ^ 2 gates of the full binary basis.
A kernel vector by a circuit. If the entries of a matrix with r rows and n columns are
available, the entries of kernelVec A cost at most kernelVecCost r n = 8 * (r + 1) * (n + 1) ^ 2
gates of the full binary basis.