Benchmark

non-incremental/QF_BV/20230221-oisc-gurtner/SRL-SAFE-28-28.smt2

Publications: "A Formally Verified Reduction of the RV32I ISA", Sonja Gurtner
(https://epub.jku.at/obvulihs/content/titleinfo/8237703)

The benchmarks come from the master thesis from Sonja Gurtner "A Formally Verified Reduction of the
RV32I ISA" about translating RISC-V instructions using only memory operations, jump, and sub. The
translation was done by Rosette, a tool to translate constraints from a Racket-like language to the
SMT-LIB.

There are two parameters in the translation:

- the bitwidth we are considering

- the upper bound on the number of loop iterations (for
correctness, it must be larger than the bitwidth)

One limitation of the work is that the translation was verified one replacement at a time. We verify
that addition (RISC-V instruction add) can be replaced by two subtraction (RISC-V instruction sub),
but subsequently use the usual addition. Thanks to this, verification scales up to large
bitwidth. Otherwise, the verification of such nested instructions is very challenging.


Naming convention: <instruction_to_replace>[-nested]-<bitwidth>-<upper_bound>[-<counterexample-cause>.smt2
Benchmark
Size131404
Compressed Size20623
License Creative Commons Attribution 4.0 International (CC-BY-4.0)
Categoryindustrial
First Occurrence2023-07-06
Generated BySonja Gurtner and Mathias Fleury
Generated On2023-02-19 00:00:00
GeneratorRosette
Dolmen OK1
strict Dolmen OK1
check-sat calls1
Query 1
Status unsat
Inferred Status unsat
Size 131395
Compressed Size20745
Max. Term Depth3
Asserts 4
Declared Functions0
Declared Constants139
Declared Sorts 0
Defined Functions0
Defined Recursive Functions 0
Defined Sorts0
Constants2291
Declared Datatypes0

Symbols

Bool1420 ite906 not131 or168
and341 =753 BitVec871 bvand1
bvor11 bvneg44 bvadd101 bvsmod2
bvult11 bvule4 bvslt1 bvsle11
bvshl108 bvlshr41

Evaluations

Evaluation Rating Solver Variant Result Wallclock CPU Time
SMT-COMP 2023 0.33 (4/6) Bitwuzla Bitwuzla-fixed_default unsat ✅ 33.35550 33.35320
cvc5 cvc5-default-2023-05-16-ea045f305_sq unsat ✅ 24.01840 24.01980
STP STP 2022.4_default unsat ✅ 14.48050 14.47950
STP 2022.4_default unsat ✅ 14.49640 14.49520
UltimateEliminator UltimateIntBlastingWrapper+SMTInterpol_default unknown ❌ 4.39546 11.72020
Yices2 Yices 2 for SMTCOMP 2023_default unknown ❌ 1200.02000 1199.96000
Z3-Owl z3-Owl-Final_default unsat ✅ 17.88520 17.87550
z3-Owl-Final_default unsat ✅ 15.69650 15.69690
SMT-COMP 2025 0.22 (7/9) Bitwuzla Bitwuzla unsat ✅ 7.93084 7.81249
Bitwuzla-MachBV-base unsat ✅ 14.62846 14.50146
Bitwuzla-MachBV Bitwuzla-MachBV unsat ✅ 8.95389 8.82556
BVDecide bv_decide unknown ❌ 1201.38824 1201.07267
bv_decide-nokernel unknown ❌ 1201.37428 1201.03506
cvc5 cvc5 unsat ✅ 18.84260 18.71511
SMTInterpol SMTInterpol unknown ❌ 1201.69631 1245.20428
Yices2 Yices2 unsat ✅ 9.85927 9.73596
Z3alpha Z3-alpha unsat ✅ 42.52544 168.38445
Z3 Z3-alpha-base unsat ✅ 12.82766 12.70290
Z3-Owl-base unsat ✅ 60.90276 60.75321
z3siri-base unsat ✅ 12.98390 12.86271
Z3-Owl Z3-Owl unsat ✅ 28.53997 28.40433