[QF_S Benchmark] QF_S Benchmark: seq vs nseq (c3 branch, 2026-06-06) #9743
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by QF_S String Solver Benchmark. A newer discussion is available at Discussion #9750. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Date: 2026-06-06
Branch: c3 | Commit:
eee5a9d| Z3 Version: 4.17.0Workflow Run: #27062514353
Benchmark source:
tests/ostrich.zip(c3 branch) | Files: 299 | Timeout: 5 sSummary
Both solvers agree on all cases where both return sat/unsat.
seqsolves 13 more files overall, butnseqhandles 9 files thatseqcannot. Median/mean times are nearly identical.nseqreturns 0unknownresults, whileseqreturnsunknownon 7 files (nseq findssat):bug-58-replace-re.smt2,contains-7/8.smt2,pcp-1.smt2,replace_empty_string.smt2,replace_shortest_sat.smt2,test-replace-regex3.smt2-- indicating improved completeness in nseq for replace/contains.Performance: seq-fast / nseq-slow (26 files)
Regression risks for nseq -- seq solves in < 2 s, nseq times out.
Performance: nseq-fast / seq-slow (9 files)
nseq shows a performance advantage here.
Correctness
sat≠unsat disagreements: 0. Both solvers agree on all definitive results. ✅
seq returns
unknownon 5 files where nseq finds sat (improved completeness in nseq):seq Solver Traces (seq-fast/nseq-slow cases)
seq uses iterative-deepening + DPLL with string-length unfolding:
depth 2->length value2 2-> sat in 41 decisions.depth 2->length var_9 2->depth 5-> sat in 113 decisions.depth 2->3,length x 4-> unsat in 3 rounds.nseq lacks the depth-bounded unfolding used by seq on these patterns.
To reproduce: build Z3 from
c3branch and runz3 smt.string_solver=seq|nseq -T:4 <file.smt2>. Benchmark files fromtests/ostrich.zip(299 files, Release build).Beta Was this translation helpful? Give feedback.
All reactions