Vampire 5.0
Michael Rawson
University of Southampton, UK
Vampire 5.0 remains similar in spirit to all previous versions, but a bumper crop of changes have been merged this competition cycle.
Various non-competition improvements to Vampire including a program synthesis mode [HAHK+24] and partial support for the polymorphic SMT-LIB 2.7 standard landed, but for the competition we mention:
- ALASCA [KKRS23] for reasoning with linear arithmetic, with further VIRAS extensions [SKK24] for quantifier elimination.
- Partial redundancy calculi [HKV25].
- Stabilised and greatly enhanced runtime-specialised unidirectional term ordering checks [HCKV25].
- A variant of the ground joinability redundancy elimination rule, used in forward simplification.
- Subsumption (resolution) via code trees.
- Integration of the CaDiCaL SAT solver [BFF+24] alongside Minisat.
- More detailed output, including proofs that are (more) TSTP-compliant, reporting non-trivial preprocessing in saturations, and producing completely faithful finite models of the input.
- Portability: Vampire is much more standards-compliant and portable than previously, with much-reduced dependence on platform-specific APIs and hardware architectures, aided by C++17.
Vampire's higher-order support remains very similar to last year, although a re-implementation intended for mainline Vampire is being merged in stages.
Architecture
Vampire [Vampire25] is an automatic theorem prover for first-order logic with extensions to theory reasoning and higher-order logic.
Vampire implements several extensions of a core superposition calculus.
It also implements a MACE-style finite model builder for finding finite counter-examples [RSV16].
Splitting in saturation-based proof search is controlled by the AVATAR architecture which uses a SAT or SMT solver to make splitting decisions
[Vor14,
RB+16].
A number of standard redundancy criteria and simplification techniques are used for pruning the search space: subsumption, tautology deletion, subsumption resolution and rewriting by ordered unit equalities.
Substitution tree and code tree indices are used to implement all major operations on sets of terms, literals and clauses.
Internally, Vampire works only with clausal normal form: problems not already in CNF are clausified during preprocessing
[RSV16].
Vampire implements many preprocessing transformations, including the SInE axiom selection algorithm for large theories and blocked clause elimination.
Strategies
Vampire 5.0 provides a very large number of options for strategy selection.
The most important ones are:
- Choices of saturation algorithm:
- Limited Resource Strategy [RV03]
- DISCOUNT loop
- Otter loop
- MACE-style finite model building with sort inference
- Splitting via AVATAR [Vor14]
- A variety of optional simplifications.
- Parameterized reduction orderings KBO and LPO.
- A number of built-in literal selection functions and different modes of comparing literals [HR+16].
- Age-weight ratio that specifies how strongly lighter clauses are preferred for inference selection. This has been extended with a layered clause selection approach [GS20].
- The set-of-support strategy with extensions for theory reasoning.
- For theory reasoning:
- Specialised calculi such as ALASCA.
- Addition of theory axioms and evaluation of interpreted functions [RSV21].
- Use of Z3 with AVATAR to restrict search to ground-theory-consistent splitting branches [RB+16].
- Specialised theory instantiation and unification [RSV18].
- Extensionality resolution with detection of extensionality axioms
Implementation
Vampire 5.0 is implemented in C++.
It makes use of fixed versions of Minisat, CaDiCaL, GMP, VIRAS, and Z3.
See the GitHub repository and associated wiki for more information.
Expected Competition Performance
Vampire 5.0 should be an improvement on the previous version. A reasonably strong performance across all divisions is therefore expected.
In the higher-order divisions, performance should be the same as last year.
References
- Vampire25
- Filip Bártek, Ahmed Bhayat, Robin Coutelier, Márton Hajdu, Matthias Hetzenberger, Petra Hozzová, Laura Kovács, Jakob Rath, Michael Rawson, Giles Reger, Martin Suda, Johannes Schoisswohl and Andrei Voronkov (2025),
The Vampire Diary,
CAV, to appear.
- HAHK+24
- Petra Hozzová, Daneshvar Amrollahi, Márton Hajdu, Laura Kovács, Andrei Voronkov, and Eva Maria Wagner (2024),
Synthesis of Recursive Programs in Saturation,
IJCAR, pp. 154-171, Springer.
- KKRS23
- Konstatin Korovin, Laura Kovács, Giles Reger, and Johannes Schoisswohl (2023),
ALASCA: Reasoning in Quantified Linear Arithmetic,
TACAS, pp. 647-665, Springer.
- SKK24
- Johannes Schoisswohl, Laura Kovács, and Konstantin Korovin (2024),
VIRAS: Conflict-Driven Quantifier Elimination for Integer-Real Arithmetic,
LPAR, pp. 147-164, EasyChair.
- HKV25
- Márton Hajdu, Laura Kovács and Andrei Voronkov (2025),
Partial Redundancy in Saturation,
CADE, to appear.
- HCKV25
- Márton Hajdu, Robin Coutelier, Laura Kovács and Andrei Voronkov (2025),
Term Ordering Diagrams,
CADE, to appear.
- BFF+24
- Armin Biere, Tobias Faller, Katalin Fazekas, Mathias Fleury, Nils Froleyks, and Florian Pollitt (2024),
CaDiCaL 2.0,
CAV, pp. 133-152, Springer.