More synthesis rules over the De Morgan basis #
Rules for synthesis bounds stated through the truth values of their targets, which is how
semantic arguments (simulations, reductions) produce Boolean functions: change a target to one
with the same truth values (Synthesis.congr_iff), a constant, bounded disjunctions and
conjunctions with uniform costs, disjunctions of conjunctions of literals, that is of available
functions and their negations (Synthesis.any_all_literal), exclusive ors and their finite
sums, and arbitrary functions of a few selected inputs (Synthesis.selected). Also bounds on
the circuit complexity of negations, conjunctions, disjunctions and exclusive ors, as instances
of Cslib.Circuits.complexity_single_unary_le and Cslib.Circuits.complexity_single_binary_le.
Main results #
Cslib.Circuits.Synthesis.congr_iff,Cslib.Circuits.Synthesis.of_forall_eq_const.Cslib.Circuits.Synthesis.exists_exists_mem,Cslib.Circuits.Synthesis.exists_forall_mem.Cslib.Circuits.Synthesis.literal,Cslib.Circuits.Synthesis.all_literal,Cslib.Circuits.Synthesis.any_all_literal.Cslib.Circuits.Synthesis.xor: an exclusive or costs four gates.Cslib.Circuits.Synthesis.sum: a finite exclusive or costs four gates per term.Cslib.Circuits.Synthesis.selected: any function ofkselected inputs costs2 ^ k * (2 * k + 2) + 1gates.Cslib.Circuits.Boolean.complexity_not_le,Cslib.Circuits.Boolean.complexity_and_le,Cslib.Circuits.Boolean.complexity_or_le,Cslib.Circuits.Boolean.complexity_xor_le.
Change the target of a synthesis bound to a function with the same truth values.
A constant function costs one gate.
A bounded disjunction, with a uniform bound c on the cost of its terms and a bound m on
their number.
A bounded conjunction, with a uniform bound c on the cost of its terms and a bound m on
their number.
A literal, an available function f asked to take the value b, costs at most one gate.
A conjunction of literals over available functions costs two gates per literal and a constant.
A disjunction of conjunctions of at most w literals over available functions.
The exclusive or f ⊕ g = (f ∨ g) ∧ ¬(f ∧ g) costs four gates beyond its arguments.
A finite sum in the Boolean ring, an exclusive or of its terms, costs four gates per term and a constant.
A function of k selected inputs costs at most 2 ^ k * (2 * k + 2) + 1 gates: its
disjunctive normal form tests every accepted assignment of the selected inputs. Selectors may
repeat inputs.
Complexity of Boolean operations #
Negating the output costs one gate.
Combining two outputs with a binary operation that costs c gates on two inputs costs c
gates.
A conjunction of two outputs costs one gate.
A disjunction of two outputs costs one gate.
An exclusive or of two outputs costs four gates.