[QF_S Benchmark] QF_S Benchmark: seq vs nseq — OSTRICH suite (299 files, 5s timeout) #9780
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by QF_S String Solver Benchmark. A newer discussion is available at Discussion #9793. |
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-09 | Branch:
c3| Commit:ad17fe7| Run: #27177227977Benchmark source:
tests/ostrich.zip| Files: 299 | Timeout: 5 s wall-clock / 4 s Z3 internal | Build: Release-O3Summary
UNREACHABLEassertion)unknownreturned🚨 Crashes — nseq Assertion Violations
Seven benchmark files trigger
UNREACHABLE()atsrc/smt/seq/seq_nielsen.cpp:3686withnseq. All 7 are solved correctly byseq.cyclic-xy.smt2xy=yx+ regexindexof_const_index_sat.smt2str.indexofconst indexindexof_const_index_unsat.smt2str.indexofconst index (unsat)indexof_var_sat.smt2str.indexofvariable indexindexof_var_unsat.smt2str.indexofvariable index (unsat)substr_const_len_unsat.smt2str.substrconst lengthsubstr_var_sat.smt2str.substrvariable index/lengthCrash location:
UNREACHABLE()atseq_nielsen.cpp:3686— sigma-pair decomposition in the ZIPT engine when handlingstr.indexof/str.substrconstraints not yet fully supported.Minimal reproducer:
Run:
z3 smt.string_solver=nseq <file>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.smt2Other seq-fast/nseq-slow:
concat-regex4,str-lt,str-lt2,str-leq11,str-leq12,failedProp,failedProp2,norn-benchmark-9f, plus the 6 crash files above.nseq-fast / seq-slow (nseq < 2 s, seq timed out — 9 files)
str.to_int_4.smt2bigSubstrIdx.smt2nonlinear.smt2noodles-unsat3.smt2noodles-unsat7.smt2concat-regex2.smt2indexof-2.smt2noodles-unsat8.smt2regexdeep.smt2Completeness: seq
unknown→ nseqsat(5 files)nseqis strictly more complete for thesestr.replace/regex operations:bug-58-replace-re.smt2contains-8.smt2replace_empty_string.smt2replace_shortest_sat.smt2test-replace-regex3.smt2Correctness
Disagreements (sat≠unsat between solvers): 0 ✅
Both solvers agree on all cases where both return a definitive answer.
seq Trace Notes (seq-fast cases)
contains-4.smt2(10ms unsat): seq's rewriter firesstr.containsmonotonicity under concatenation immediately. nseq misses this simplification (4013ms timeout).prefix-suffix.smt2(10ms unsat): seq recognises the prefix/suffix algebraic identity directly. nseq times out (4006ms).parikh-constraints.smt2(22ms sat): seq uses iterative depth/length bounds (increase-depth 2,increase-length 2). nseq lacks Parikh image reasoning (4006ms timeout).concat_backjump_bug.smt2(81ms sat): seq solves via bounded model checking at depth 5 with regex intersection. nseq times out (4050ms).To reproduce: build Z3 from
c3branch (-DCMAKE_BUILD_TYPE=Release) and runz3 smt.string_solver=seq|nseq -T:4 <file.smt2>. Benchmarks fromtests/ostrich.zip.Beta Was this translation helpful? Give feedback.
All reactions