Equality of selected Boolean inputs #
The formula compares two sequences of selected inputs. Selectors may overlap or repeat; empty sequences compare equal. An XNOR for each coordinate is conjoined with the remainder, using six gates per coordinate and a single true constant.
Main definitions #
Cslib.Circuits.Formula.equalBits: equality of two selected input sequences.Cslib.Circuits.Boolean.adjacentEqualityCircuit: shared tests for consecutive selected keys.
Main results #
Cslib.Circuits.Formula.eval_equalBits_iff: equality of the selected functions.Cslib.Circuits.Formula.cost_equalBits: exact arbitrary weighted cost.Cslib.Circuits.Formula.size_equalBits: exact gate count, including the constant.Cslib.Circuits.Boolean.eval_adjacentEqualityCircuit_iff: exact incoming-link semantics.Cslib.Circuits.Boolean.cost_program_adjacentEqualityCircuit: weighted adjacent-test cost.
References #
- Adapts the equality formulas in MassProduction/Routing.lean from S. Schlesinger, Boolean circuit mass production formalization.
Test equality of two selected input sequences, including empty and repeated selections.
Instances For
theorem Cslib.Circuits.Formula.cost_equalBits {n k : ℕ} (left right : Fin k → Fin n) (cost : Boolean.signature.Op → ℕ) :
Formula.cost cost (equalBits left right) = cost (Boolean.Op.const true) + k * (3 * cost Boolean.Op.and + 2 * cost Boolean.Op.not + cost Boolean.Op.or)
Each coordinate uses three AND gates, two negations and one OR, after one true constant.