Evaluation

MoAT was compared with state-of-the-art tools for verifying LTL properties of infinite state systems. In total, MoAT solved the most benchmarks and was the fastest tool.

Setup

We considered the same benchmarks and similar LTL properties as the evaluation of LTL-VerP. This benchmark set consists of 318 C programs from the Software Verification Competition (SV-COMP) and the Termination Competition (TermComp). To run MoAT on these programs, we translated them into ITSs.

All tools were run inside an Ubuntu Docker container on a machine with an AMD Ryzen 7 3700X octa-core CPU and 8 GB of RAM, with a timeout of 60 s per example as in TermComp. In MoAT’s backend, KoAT was used for the “Yes” answers and LoAT was used for answering “No”.

For each tool that supports several configurations, we selected the configuration recommended by the authors. For nuXmv we used the IC3 engines. Note that the published LTL-VerP results were obtained by evaluating a large number of parameter configurations and selecting the best-performing one per benchmark instance, whereas our experiments apply the single configuration identified by its authors as the overall best setting (linear templates for ranking functions). Its performance here is therefore not directly comparable to the numbers reported in that paper.

LTL properties

Here, x refers to the variable which is first when sorting the variable names alphabetically, and l_term is the terminal location.

RA

Reach-Avoid

(F at(l_term)) ∧ (G (x ≥ 0))

Holds if the terminal location is reached and a negative value of x is avoided.

OV

Overflow

F (x < −64 ∨ x > 63)

Holds if x overflows.

RC

Recurrence

G F (x ≥ 0)

Holds if a non-negative value of x is reached infinitely often.

PR

Progress

G (x < −5 → F (x > 0))

Holds if a value of x less than −5 eventually becomes positive.

Results

Evaluation on LTL formulas: number of benchmarks solved per tool and property class
Prop.MoATMuValnuXmvUltimateLTL-VerP
YesNoTotalYesNoTotalYesNoTotalYesNoTotalYesNoTotal
RA65239304442412855221226541642189191200
OV1629531115298313729730416270286113546
RC107198305108199307101193294981532518941130
PR103199302106201307104193297991532528254136
Total1222121211211007512
Avg. T1.11 s5.02 s7.26 s8.90 s33.81 s
Avg.+ T0.78 s2.52 s0.80 s3.07 s4.76 s

“Avg. T” is the average runtime of all runs; “Avg.+ T” is the average runtime of the successful runs, both in seconds.

While MuVal was slightly better than MoAT in some categories, in total MoAT solved the most benchmarks and achieved near-complete coverage (> 96 %) across all categories. MoAT was also the fastest tool, with an average runtime of 1.11 s per example.

MoAT

LTL model checking of infinite state systems via fair termination, using the termination tools KoAT and LoAT in the backend.