Expand description
Bit-blasting: BoundedExpr datapath (bitvector) operations → boolean ProofExpr.
A bitvector is represented LSB-first as a Vec<Bit>, each Bit either a known constant
or a boolean ProofExpr (a signal bit name#i, or a gate). Every combinator
constant-folds, so a constant operand collapses gates instead of emitting them — the CNF
stays small. Each operation is the textbook circuit: ripple-carry add/sub, array
multiplier, barrel shifters, magnitude/signed comparators, slice and concat.
This is the data-path half of the certified-prover seam: combined with the Boolean
lowering in super::sva_to_proof, multi-bit hardware obligations reduce to a
propositional formula our CDCL→RUP tiers discharge — in the browser, no Z3.
Functions§
- lower_
bool - Lower a boolean-VALUED datapath comparison to a
ProofExpr, orNoneif unsupported. Comparisons over bitvectors are unsigned unless the op is explicitly signed (SLt).