Synthesis over the full binary basis #
Over the full binary basis fullInterpretation (k := 2) every constant and every operation with
at most two arguments is one gate. This module records the synthesis rules used to count gates of
algebraic computations over a carrier U: an operation with one or two available arguments costs
one gate (Synthesis.full_unary, Synthesis.full_binary_mem), a sum of N available
functions over an additive commutative monoid costs N + 1 gates, one of them for the constant
zero (Synthesis.full_sum), and a sum of N products of available functions over a semiring costs
2 * N + 1 gates (Synthesis.full_dot). A chain v 0 = c, v (i + 1) = op i (v i) (g i x)
of length len, fed by available functions g i, costs len + 1 gates for all of its values
(Synthesis.full_chain); chains compute prefix tests such as the first nonzero entry of a vector.
Applied to a field, this counts field operations, with every operation that depends on at most two
field elements, including tests and selections, charged one gate.
Main definitions #
Cslib.Circuits.Synthesis.chainValue: the values of a chain.
Main results #
Cslib.Circuits.Synthesis.full_unary: one gate for an operation on one available function.Cslib.Circuits.Synthesis.full_binary_mem: one gate for an operation on two available functions.Cslib.Circuits.Synthesis.full_sum:N + 1gates for a sum ofNavailable functions.Cslib.Circuits.Synthesis.full_dot:2 * N + 1gates for a sum ofNproducts.Cslib.Circuits.Synthesis.full_chain:len + 1gates for all values of a chain.
References #
- [P. Bürgisser, M. Clausen, M. A. Shokrollahi, Algebraic Complexity Theory] [BCS97]
An operation applied to two available functions costs one gate of the full binary basis.
A sum of available functions, indexed by a finset S, costs #S + 1 gates of the full
binary basis: one addition for each summand and a constant zero to start from.
A sum of products of available functions, indexed by a finset S, costs 2 * #S + 1 gates
of the full binary basis.
All values v 0, …, v len of a chain of length len fed by available functions cost
len + 1 gates of the full binary basis: a constant and one binary gate per link.