equiv_receipt.tseitin
Gate-netlist to CNF, and equivalence miters — standard library only.
A miter of two circuits is satisfiable exactly when they differ on some input. So unsatisfiability of the miter is equivalence, and a DRAT refutation of the miter is a checkable proof of it.
A tiny combinational netlist over AND / OR / NOT / XOR gates.
Inputs are named; every gate produces a new named signal. Deliberately minimal — this exists so the package is usable and testable without a synthesis tool, not to replace one.
An alias. Needed when a signal must be renamed rather than computed.
Build a miter CNF for two single-output circuit builders.
build_a(net, prefix) -> output_signal_name. The returned CNF is
satisfiable iff the two circuits differ on some input assignment; therefore
UNSAT means equivalent.