Expand description
Cardinality constraints over boolean ProofExpr atoms — the missing primitive that lets the
certified solver answer “at most / at least / exactly k of these are true”. Encoded with
Sinz’s sequential counter (linear in n·k, fresh auxiliary atoms under a caller-chosen
prefix), so the result is an ordinary boolean obligation the existing CNF/CDCL/RUP pipeline
discharges. This is the building block for SAT-based optimization (crate::optimize).
Correctness is pinned exhaustively against a brute-force oracle (every assignment, small n).