[QF_S Benchmark] seq vs nseq on ostrich suite (c3, 2026-06-06) #9739
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by QF_S String Solver Benchmark. A newer discussion is available at Discussion #9743. |
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:
eee5a9dWorkflow Run: #27048262889
Files benchmarked: 299 (all from
tests/ostrich.zip, 5 s timeout /-T:4internal)Summary
Both solvers agree on every file where both produce a definitive answer.
seqsolves 13 more files within the timeout;nseqsolves 9 files thatseqcannot.Performance Comparison
seq-fast / nseq-slow — 26 files (seq < 2 s, nseq timed out)
Regression risk for
nseq. Patterns:str.containsover concat, Parikh constraints,str.from_int/str.to_int, prefix/suffix, word equations,str.indexofwith variable index, string ordering (str.<=,str.<), substr with variable length.(10 more files with similar patterns)
nseq-fast / seq-slow — 9 files (nseq < 2 s, seq timed out)
nseqadvantages: non-linear word equations, deep regex nesting, integer-to-string (specific direction), large substring index.Correctness
✅ Zero disagreements — no file produced
satvsunsatacross the two solvers.seqreturnedunknownon 7 files wherenseqreturnedsat(bug-58-replace-re.smt2,contains-7.smt2,contains-8.smt2,replace_empty_string.smt2,replace_shortest_sat.smt2,test-replace-regex3.smt2,pcp-1.smt2). These may beseqcompleteness gaps.seq Trace Analysis (top seq-fast / nseq-slow)
Z3 statistics for representative cases
contains-4.smt2 (
str.contains(y++y,z)=falsewhenstr.contains(y,z)=true): 1 conflict, 1 reduction — trivially resolved by rewrite rules.:rlimit-count 249parikh-constraints.smt2 (nested
contains/replace/substr/indexof): 41 conflicts, 160 reductions, 339 axiom additions, char2bit/Parikh encoding. Still fast despite heavy arithmetic involvement.str.from_int_6.smt2 (integer-to-string, large case): 32 conflicts, 428 reductions,
seq-int.to.straxiom ×1, heavy LP arithmetic.:rlimit-count 35643word-equation-3.smt2 (5-variable word equation,
unsat): 155 conflicts, 2859 reductions, 82 quantifier instantiations, 17 restarts. seq uses DPLL(T) + quantifiers.:rlimit-count 159895To reproduce: build Z3 from
c3branch (commiteee5a9d) and runz3 smt.string_solver=seq|nseq -T:4 <file.smt2>. Benchmark suite:tests/ostrich.zip(299 files).Beta Was this translation helpful? Give feedback.
All reactions