Aggregate gates #
An operation of arity k aggregates in a commutative monoid T when its value is read off a
product of contributions of its arguments: f x = ψ (∏ i, φ i (x i)). Every operation of the
Boolean basis of unbounded fan-in (negation, and conjunction and disjunction of any number of
arguments) aggregates in ZMod 2 under multiplication, and every function of the number of true
arguments modulo m, such as parity and MOD_m, aggregates in ZMod m under addition.
If every special gate of a program aggregates in T, the special gates have a ledger in the
monoid T ^ k of functions from the k special gates to T (Frontier.Ledger.ofAggregates):
the contribution of a wire to a special gate is the product of its contributions to the argument
slots of that gate that read it. So k aggregate gates cost k log |T| in the frontier lower
bound.
Main definitions #
Cslib.Circuits.Frontier.Aggregates f T: the operationfaggregates inT.Cslib.Circuits.Frontier.Ledger.ofAggregates: the ledger of aggregate gates.
Main results #
Cslib.Circuits.Frontier.aggregates_unbounded: the operations of the Boolean basis of unbounded fan-in aggregate inZMod 2.Cslib.Circuits.Frontier.aggregates_countMod: functions of the number of true arguments modulomaggregate inZMod m.
An operation of arity k aggregates in a commutative monoid T when its value is read
off a product of contributions of its arguments.
Instances For
Aggregate gates have a ledger. If every special gate of a program aggregates in T,
the special gates have a ledger in the monoid of functions from the special gates to T: a wire
contributes to a special gate the product of its contributions to the slots of that gate that read
it, and each special gate reads off its own coordinate.
Instances For
The Boolean basis of unbounded fan-in aggregates. Negation, conjunction and disjunction
of any number of arguments aggregate in ZMod 2 under multiplication: a conjunction is the
product of its arguments read as 1 for true and 0 for false, and a disjunction is the
negation of the product of the negations.
Counting modulo m aggregates. Every function of the number of true arguments modulo
m aggregates in ZMod m under addition: each true argument contributes 1 to the count.
Parity and the MOD_m gates are of this form.