-
Notifications
You must be signed in to change notification settings - Fork 52
Sample‐Based Testing
Martin Suda edited this page Apr 3, 2024
·
6 revisions
We now have tools for randomly testing Vampire over its many options and thereby finding crashes.
To do this, you need the following points:
- Build Vampire in a debug configuration. Release works too, but you typically want to trap assertion violations here.
- Run Vampire over an appropriate set of problems that you care about, such as the FOF fragment of TPTP. You may find tools such as GNU Parallel useful here.
- Sample random strategies using a sampler file with e.g.
--sample_strategy samplers/samplerFOL.txt
. We have some prebuilt sampler files insamplers/
. (samplerSMT.txt
is for theory reasoning, best run on SMT problems,samplerIND.txt
covers most of the induction machinery.)
A suitable pattern for finding problems is viola|SIG|error
.
(error
for USER_ERRORs, but careful, gives some false positives on SMTLIB.)
- Use randomised options, e.g.
-si on -rtra on
to further randomise Vampire's execution. - Use a few different random seeds with
--random_seed N
. - Try with a small resource limit such as
-i 100
at first, then increment in orders of magnitude up to maybe-i 10000
.