[QF_S Benchmark] seq vs nseq on 299 ostrich benchmarks (c3 branch, 2026-06-11) #9822
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by QF_S String Solver Benchmark. A newer discussion is available at Discussion #9832. |
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-11
Branch: c3
Commit:
be62700Workflow Run: #27350603468
Files benchmarked: 299 (from
tests/ostrich.zip, timeout 5 s per file, Z3 internal timeout 4 s)Summary
Both solvers perform well. On files both can solve,
nseqis slightly faster on average (33 ms vs. 43 ms). Median solve time is identical at 10 ms.Performance Comparison
seq-fast / nseq-slow (seq < 2 s, nseq timed out) — 11 files
nseqgaps:str.to_int/str.from_int, string ordering predicates (str.<,str.<=), Parikh-style length constraints, prefix/suffix/contains.nseq-fast / seq-slow (nseq < 2 s, seq timed out) — 7 files
nseqwins on: nonlinear word equations, concat+regex, deep regex, and someindexof/str.to_intvariants.Correctness
The benchmark (annotated
status sat) assertsa ∈ {"hhhbbb", "bhhh"}andstr.indexof(a, "hhh", 0) = 1. Fora = "bhhh", indexof is 1 — satisfiable.seqis correct;nseqreturningunsatis a bug in itsstr.indexofhandling.Raw Data (selected rows)
Interesting cases CSV (click to expand)
To reproduce: build Z3 from
c3and runz3 smt.string_solver=seq|nseq -T:10 <file.smt2>.Beta Was this translation helpful? Give feedback.
All reactions