[QF_S Benchmark] seq vs nseq on 299 ostrich benchmarks — c3 branch (2026-06-07) #9756
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by QF_S String Solver Benchmark. A newer discussion is available at Discussion #9760. |
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-07
Branch: c3 · Commit:
206569c· Z3 version: 4.17.0Workflow Run: #27092906519
Files benchmarked: 299 (from
tests/ostrich.zip; 5 s shell timeout, 4 s Z3 timeout)Summary
unknown(gave up)seqsolves 11 more files overall; both solvers are equally fast on the benchmark median.nseqhas 2× more timeouts but zero soundness disagreements.Performance Comparison
seq-fast / nseq-slow (seq < 2 s, nseq timed out) — 24 files
cvc_replace_28.smt2concat_backjump_bug.smt2contains-4.smt2str.from_int_6.smt2parikh-constraints.smt2prefix-suffix.smt2str.to_int_5.smt2str.to_int_6.smt2word-equation-3.smt2str-leq7.smt2str-lt.smt2str-leq11/12.smt2failedProp.smt2norn-benchmark-9f.smt2indexof_var_sat/unsat.smt2cyclic-xy.smt2Patterns:
nseqhas coverage gaps instr.to_int/str.from_int, string ordering (str-leq/str-lt), Parikh constraints, andindexof/substrwith variable indices.nseq-fast / seq-slow (nseq < 2 s, seq timed out) — 9 files
str.to_int_4.smt2noodles-unsat3.smt2noodles-unsat7.smt2nonlinear.smt2concat-regex2.smt2indexof-2.smt2noodles-unsat8.smt2regexdeep.smt2bigSubstrIdx.smt2Patterns:
nseq(ZIPT) excels on nonlinear word equations, complex regex membership, and certain int-to-string conversions.Correctness
Zero sat/unsat disagreements across all 299 files. ✅
seqreturnedunknownon 5 files wherenseqsaidsat:bug-58-replace-re,contains-8,replace_empty_string,replace_shortest_sat,test-replace-regex3— all involve replace/contains with regex patterns.seq Trace Analysis
Verbose traces (
-v:3) on top seq-fast/nseq-slow cases showsequsing bounded depth/length search:nseq's ZIPT graph-propagation handles nonlinear cases better (nonlinear.smt2: unsat in 25ms vs seq timeout), but lacksseq's backjump optimization for simpler bounded problems.Raw Data (interesting cases)
Click to expand CSV rows for seq/nseq divergences
To reproduce: build Z3 from
c3and runz3 smt.string_solver=seq|nseq -T:10 <file.smt2>. Files fromtests/ostrich.zip.Beta Was this translation helpful? Give feedback.
All reactions