quantifier-negation-duality-bool-simplification
- Kind
- unsat-certificate
- Status
- checked
Supports: Over any domain and any predicate P: not (for all x, P(x)) is equivalent to (there exists x with not P(x)), and not (there exists x with P(x)) is equivalent to (for all x, not P(x)).
test "$(cargo run --release -q -p axeyum-bench --example smtcomp_cli -- --evidence artifacts/facts/smt2/neg-quantifier-negation-duality.smt2 2>/dev/null | tail -1)" = unsat Evidence notes
Ran 2026-08-14: the file asserts the NEGATION of formal.statement and the solver reported `unsat` with `kind=unsat-bool-simplification certified=1 recheck=na arena=ok`. This fact was `open` earlier the same day (`kind=unknown ... ms=18`); the lane `quant-duality` closed it. WHAT THE CERTIFICATE IS, precisely, because the route name could mislead: it is NOT exhaustive evaluation -- the carrier sort U is uninterpreted and cannot be enumerated. It is `Evidence::UnsatBoolSimplification`, a refutation by the small checked propositional normalizer in `axeyum-solver/src/bool_simplify.rs`, which treats every quantified subformula as an OPAQUE ATOM and instantiates, skolemizes and expands nothing. The one thing it now knows about quantifiers is when two of them are the same formula written differently -- `axeyum_rewrite::alpha_equivalent`, which decides equality up to bound-variable renaming (the SMT-LIB front end mints a fresh arena symbol per binder, so the four `x`s in this file are four distinct symbols) and up to the negation duality itself, by carrying a negation parity through the walk. Under those two facts both conjuncts of the asserted `and` normalize to `true`, the outer `not` to `false`, and the assertion is refuted. It trusts neither the bit-blaster, the CNF encoder, nor the SAT solver: nothing was blasted. `arena=ok` means `Evidence::check` re-ran that normalizer against a FRESH PARSE of the file, independent of anything the producing solve held in memory. Independently cross-checked: `z3 -smt2` (4.13.3) on the same file also reports `unsat`.