https://github.com/CVC4
E 2.1
Stephan Schulz
DHBW Stuttgart, Germany
Architecture
E 2.1
[Sch02,Sch13] is a purely equational theorem prover for many-sorted
first-order logic with equality.
It consists of an (optional) clausifier for pre-processing full first-order
formulae into clausal form, and a saturation algorithm implementing an instance
of the superposition calculus with negative literal selection and a
number of redundancy elimination techniques.
E is based on the DISCOUNT-loop variant of the given-clause algorithm,
i.e., a strict separation of active and passive facts.
No special rules for non-equational literals have been implemented.
Resolution is effectively simulated by paramodulation and equality resolution.
For the SLH and LTB divisions, a control program uses a SInE-like analysis to extract reduced axiomatizations that are handed to several instances of E. E will probably not use on-the-fly learning this year.
For CASC-26, E implements a strategy-scheduling automatic mode. The total CPU time available is broken into several (unequal) time slices. For each time slice, the problem is classified into one of several classes, based on a number of simple features (number of clauses, maximal symbol arity, presence of equality, presence of non-unit and non-Horn clauses,...). For each class, a schedule of strategies is greedily constructed from experimental data as follows: The first strategy assigned to a schedule is the the one that solves the most problems from this class in the first time slice. Each subsequent strategy is selected based on the number of solutions on problems not already solved by a preceding strategy. About 220 different strategies have been evaluated on all untyped first-order problems from TPTP 6.4.0. About 90 of these strategies are used in the automatic mode, and about 210 are used in at least one schedule.
http://www.eprover.org
ET 0.2
Josef Urban
Czech Technical University in Prague, Czech Republic
Architecture
ET [KS+15] 0.2 is a metasystem using E prover with specific strategies
[Urb13,KU13,JU17] and preprocessing tools
[KU13,KU13,KU13] that are targeted mainly at problems with many
redundant axioms.
Its design is motivated by the recent experiments in the Large-Theory Batch
division
[KUV15] and on the Flyspeck, Mizar and Isabelle datasets, however, ET does no
learning from related proofs.
iProver 2.5
Kontantin Korovin
University of Manchester, United Kingdom
Architecture
iProver is an automated theorem prover based on an instantiation calculus
Inst-Gen
[GK03,
Kor13]
which is complete for first-order logic.
iProver combines first-order reasoning with ground reasoning for which it
uses MiniSat
[ES04]
and optionally PicoSAT
[Bie08]
(only MiniSat will be used at this CASC).
iProver also combines instantiation with ordered resolution; see
[Kor08,
Kor13]
for the implementation details.
The proof search is implemented using a saturation process based on
the given clause algorithm. iProver uses non-perfect discrimination trees
for the unification indexes, priority queues for passive clauses, and
a compressed vector index for subsumption and subsumption resolution
(both forward and backward).
The following redundancy eliminations are implemented: blocking non-proper
instantiations; dismatching constraints
[GK04,
Kor08];
global subsumption
[Kor08];
resolution-based simplifications and propositional-based simplifications.
A compressed feature vector index is used for efficient forward/backward
subsumption and subsumption resolution.
Equality is dealt with (internally) by adding the necessary axioms of equality.
Recent changes in iProver include improved preprocessing and incremental
finite model finding; support of the AIG format for hardware verification and
model-checking (implemented with Dmitry Tsarkov).
In the LTB division, iProver uses axiom selection based on the Sine algorithm [HV11] as implemented in Vampire [KV13], i.e., axiom selection is done by Vampire and proof attempts are done by iProver.
Some of iProver features are summarised below.
iProver is available at:
http://www.cs.man.ac.uk/~korovink/iprover/
iProver 2.6
Konstantin Korovin
University of Manchester, United Kingdom
Architecture
iProver is an automated theorem prover based on an instantiation calculus
Inst-Gen
[GK03,Kor13] which is complete for first-order logic.
iProver combines first-order reasoning with ground reasoning for which it uses
MiniSat
[ES04] and optionally PicoSAT
[Bie08] (only MiniSat will be used at this CASC).
iProver also combines instantiation with ordered resolution; see
[Kor08,Kor13] for the implementation details.
The proof search is implemented using a saturation process based on the given
clause algorithm.
iProver uses non-perfect discrimination trees for the unification indexes,
priority queues for passive clauses, and a compressed vector index for
subsumption and subsumption resolution (both forward and backward).
The following redundancy eliminations are implemented: blocking non-proper
instantiations; dismatching constraints
[GK04,Kor08]; global subsumption
[Kor08]; resolution-based simplifications and propositional-based
simplifications.
A compressed feature vector index is used for efficient forward/backward
subsumption and subsumption resolution.
Equality is dealt with (internally) by adding the necessary axioms of equality.
Recent changes in iProver include improved preprocessing and incremental
finite model finding; support for the TFF format restricted to clauses; the
AIG format for hardware verification and QBF reasoning.
In the LTB and SLH divisions, iProver combines an abstraction-refinement framework [HK17] with axiom selection based on the SinE algorithm [HV11] as implemented in Vampire [KV13], i.e., axiom selection is done by Vampire and proof attempts are done by iProver.
Some of iProver features are summarised below.
http://www.cs.man.ac.uk/~korovink/iprover/
iProverModulo 2.5-0.1
Guillaume Burel
ENSIIE, University Paris‑Saclay, France
Architecture
iProverModulo
[Bur11] is an extension of iProver
[Kor08] to integrate Polarized resolution modulo
[Dow10].
Polarized resolution modulo consists in presenting the theory in which the
problem has to be solved by means of polarized rewriting rules instead of
axioms.
It can also be seen as a combination of the set-of-support strategy and
selection of literals.
iProverModulo consists of two tools: First, autotheo is a theory preprocessor that converts the axioms of the input into rewriting rules that can be used by Polarized resolution modulo. Second, these rewriting rules are handled by a patched version of iProver 2.5 that integrates Polarized resolution modulo. The integration of polarized resolution modulo in iProver only affects its ordered resolution calculus, so that the instantiation calculus is untouched.
iProverModulo 2.5+0.1 outputs a proof that is made of two parts: First, autotheo prints a derivation of the transformation of the axioms into rewriting rules. This derivation is in TSTP format and includes the CNF conversions obtained from E. Second, the modified version of iProver outputs a proof in TSTP format from this set of rewriting rules and the other input formulas.
The patched version of iProver is run on the remaining formulas modulo the rewriting rules produced by autotheo. No scheduling is performed. To be compatible with Polarized resolution modulo, literals are selected only when they are maximal w.r.t. a KBO ordering, and orphans are not eliminated. To take advantage of Polarized resolution modulo, the resolution calculus is triggered more often than the instantiation calculus, on the contrary to the original iProver.
Normalization of clauses w.r.t. the term rewriting system produced by autotheo is performed by transforming these rules into an OCaml program, compiling this program, and dynamically linking it with the prover.
http://www.ensiie.fr/~guillaume.burel/blackandwhite_iProverModulo.html.enSince iProverModulo needs to compile rewriting rules, an OCaml compiler is also provided.
Autotheo is available independently from iProverModulo from
http://www.ensiie.fr/~guillaume.burel/blackandwhite_autotheo.html.enAutotheo uses E to compute clausal normal form of formula. The version of E it uses is very slightly modified to make it print the CNF derivation even if no proof is found.
Both of autotheo and iProver are written in OCaml.
For the SLD division, iProverModulo uses the CNF transformation tool provided with the Logtk library [Cru14].
Isabelle 2016
Jasmin Blanchette
Vrije Universiteit Amsterdam, Netherlands
Architecture
Isabelle/HOL 2016
[NPW02]
is the higher-order logic incarnation of the generic proof assistant
Isabelle2016.
Isabelle/HOL provides several automatic proof tactics, notably an equational
reasoner
[Nip89],
a classical reasoner
[PN94],
and a tableau prover
[Pau99].
It also integrates external first- and higher-order provers via its subsystem
Sledgehammer
[PB10,BBP11].
Isabelle includes a parser for the TPTP syntaxes CNF, FOF, TFF0, and THF0, due
to Nik Sultana. It also includes TPTP versions of its popular tools, invokable
on the command line as isabelle tptp_tool max_secs
file.p. For example:
Isabelle is available in two versions. The HOT version (which is not participating in CASC-J8) includes LEO-II [BP+08] and Satallax [Bro12] as Sledgehammer backends, whereas the competition version leaves them out.isabelle tptp_isabelle_hot 100 SEU/SEU824^3.p
The implementation of Isabelle relies on a small LCF-style kernel, meaning that inferences are implemented as operations on an abstract theorem datatype. Assuming the kernel is correct, all values of type theorem are correct by construction.
Most of the code for Isabelle was written by the Isabelle teams at the University of Cambridge and the Technische Universität München. Isabelle/HOL is available for all major platforms under a BSD-style license from
http://www.cl.cam.ac.uk/research/hvg/Isabelle
lean-nanoCoP 1.0
Jens Otten
University of Oslo, Norway
Architecture
lean-nanoCoP is an automated theorem prover for classical first-order
logic with equality.
It combines the provers leanCoP
[OB03,Ott08] and nanoCoP
[Ott16], which are very compact implementations of the clausal connection calculus
[Bib87] and the non-clausal connection calculus
[Ott11], respectively.
lean-nanoCoP can read formulae in leanCoP syntax and in TPTP first-order syntax. The leanCoP and nanoCoP core provers return very compact connection proofs; leanCoP translates its proof into a more readable output format.
The source codes of leanCoP and nanoCoP are available under the GNU general public license. They can be downloaded from the leanCoP and nanoCoP websites at
http://www.leancop.deand
http://www.leancop.de/nanocop
The leanCoP website also contains information about ileanCoP [Ott08] and MleanCoP [Ott14], two versions of leanCoP for first-order intuitionistic logic and several first-order modal logics, respectively. Recently, versions of nanoCoP for these logics have been developed as well [Ott17].
LEO-II 1.7.0
Alexander Steen
Freie Universität Berlin, Germany
Architecture
LEO-II
[BP+08],
the successor of LEO
[BK98],
is a higher-order ATP system based on extensional higher-order resolution.
More precisely, LEO-II employs a refinement of extensional higher-order
RUE resolution
[Ben99].
LEO-II is designed to cooperate with specialist systems for fragments of
higher-order logic.
By default, LEO-II cooperates with the first-order ATP system E
[Sch02].
LEO-II is often too weak to find a refutation amongst the steadily growing
set of clauses on its own.
However, some of the clauses in LEO-II's search space attain a special
status: they are first-order clauses modulo the application of an
appropriate transformation function.
Therefore, LEO-II launches a cooperating first-order ATP system every n
iterations of its (standard) resolution proof search loop (e.g., 10).
If the first-order ATP system finds a refutation, it communicates its success
to LEO-II in the standard SZS format.
Communication between LEO-II and the cooperating first-order ATP system
uses the TPTP language and standards.
Unfortunately the LEO-II system still uses only a very simple sequential collaboration model with first-order ATPs instead of using the more advanced, concurrent and resource-adaptive OANTS architecture [BS+08] as exploited by its predecessor LEO.
The LEO-II system is distributed under a BSD style license, and it is available from
http://www.leoprover.org
Leo-III 1.1
Alexander Steen
Freie Universität Berlin, Germany
Architecture
Leo-III
[SWB16], the successor of LEO-II
[BP+08],
is a higher-order ATP system based on higher-order paramodulation with inference
restrictions using a higher-order term ordering.
Since Leo-III employs a agent-based blackboard architecture, multiple
independent proof search approaches can be run in parallel as so-called
agents.
In version 1.1, each agent runs a sequential proof search based on the
given-clause algorithm as known from E, each with different search strategy.
Leo-III heavily relies on cooperation with external (first-order) ATPs that are called asynchronously during proof search. At the moment, first-order cooperation is limited to typed first-order systems, where CVC4 [BC+11] is used as default external system. Nevertheless, further external systems (also further higher-order systems or counter model generators) can be employed using command-line arguments. If either one of the saturation procedure loops or one of the external provers finds a proof, the system stops and returns the result.
A generic parser is provided that supports all TPTP syntax dialects. It is implemented using ANTLR4 and converts its produced concrete syntax tree to an internal TPTP AST data structure which is then transformed into polymorphically typed lambda terms. As of version 1.1, Leo-III supports all common TPTP dialects (CNF, FOF, TFF, THF) including their polymorphic variants [BP13,KRS16].
The term data structure of Leo-III uses a spine term representation augmented with explicit substitutions and De Bruijn-indices. Furthermore, terms are perfectly shared during proof search, permitting constant-time equality checks between alpha-equivalent terms.
As pointed out before, Leo-III’s agents may at any point invoke external reasoning tools. To that end, Leo-III includes an encoding module that translates (polymorphic) higher-order clauses to polymorphic and monomorphic typed first-order clauses. While LEO-II relied on cooperation with untyped first-order provers, we hope to reduce clutter and therefore achieve better results using native type support in first-order provers.
Leo-III 1.1 will be available on GitHub after CASC-26:
https://github.com/cbenzmueller/Leo-III
MaLARea 0.6
Josef Urban
Czech Technical University in Prague, Czech Republic
Architecture
MaLARea 0.6
[Urb07,US+08,KUV15] is a metasystem for ATP in large theories where symbol and
formula names are used consistently.
It uses several deductive systems (now E, SPASS, Vampire, Paradox, Mace), as
well as complementary AI techniques like machine learning (the SNoW system)
based on symbol-based similarity, model-based similarity, term-based
similarity, and obviously previous successful proofs.
The version for CASC-26 will use the E prover with the BliStr(Tune)
[Urb13,JU17] large-theory strategies, possibly also Prover9, Mace and Paradox.
The premise selection methods will likely also use the distance-weighted
k-nearest neighbor
[KU13] and E's implementation of SInE.
https://github.com/JUrban/MPTP2/tree/master/MaLAReaThe metasystem's Perl code is released under GPL2.
Princess 170717
Philipp Rümmer
Uppsala University, Sweden
Architecture
Princess
[Rue08,Rue12] is a theorem prover for first-order logic
modulo linear integer arithmetic.
The prover uses a combination of techniques from the areas of first-order
reasoning and SMT solving.
The main underlying calculus is a free-variable tableau calculus,
which is extended with constraints to enable backtracking-free proof
expansion, and positive unit hyper-resolution for lightweight
instantiation of quantified formulae.
Linear integer arithmetic is handled using a set of built-in proof rules
resembling the Omega test, which altogether yields a calculus that is
complete for full Presburger arithmetic, for first-order logic, and for a
number of further fragments.
In addition, some built-in procedures for nonlinear integer arithmetic are
available.
The internal calculus of Princess only supports uninterpreted predicates; uninterpreted functions are encoded as predicates, together with the usual axioms. Through appropriate translation of quantified formulae with functions, the e-matching technique common in SMT solvers can be simulated; triggers in quantified formulae are chosen based on heuristics similar to those in the Simplify prover.
Princess is available from:
http://www.philipp.ruemmer.org/princess.shtml
Prover9 2009-11A
Bob Veroff on behalf of William McCune
University of New Mexico, USA
Architecture
Prover9, Version 2009-11A, is a resolution/paramodulation prover for
first-order logic with equality.
Its overall architecture is very similar to that of Otter-3.3
[McC03].
It uses the "given clause algorithm", in which not-yet-given clauses are
available for rewriting and for other inference operations (sometimes called
the "Otter loop").
Prover9 has available positive ordered (and nonordered) resolution and paramodulation, negative ordered (and nonordered) resolution, factoring, positive and negative hyperresolution, UR-resolution, and demodulation (term rewriting). Terms can be ordered with LPO, RPO, or KBO. Selection of the "given clause" is by an age-weight ratio.
Proofs can be given at two levels of detail: (1) standard, in which each line of the proof is a stored clause with detailed justification, and (2) expanded, with a separate line for each operation. When FOF problems are input, proof of transformation to clauses is not given.
Completeness is not guaranteed, so termination does not indicate satisfiability.
Given a problem, Prover9 adjusts its inference rules and strategy according to syntactic properties of the input clauses such as the presence of equality and non-Horn clauses. Prover9 also does some preprocessing, for example, to eliminate predicates.
For CASC Prover9 uses KBO to order terms for demodulation and for the inference rules, with a simple rule for determining symbol precedence.
For the FOF problems, a preprocessing step attempts to reduce the problem to independent subproblems by a miniscope transformation; if the problem reduction succeeds, each subproblem is clausified and given to the ordinary search procedure; if the problem reduction fails, the original problem is clausified and given to the search procedure.
http://www.cs.unm.edu/~mccune/prover9/
Satallax 3.0
Michael Färber
Universität Innsbruck, Austria
Architecture
Satallax 3.0
[Bro12]
is an automated theorem prover for higher-order logic.
The particular form of higher-order logic supported by Satallax is Church's
simple type theory with extensionality and choice operators.
The SAT solver MiniSat
[ES04]
is responsible for much of the proof search.
The theoretical basis of search is a complete ground tableau calculus for
higher-order logic
[BS10]
with a choice operator
[BB11].
Problems are given in the THF format.
Proof search: A branch is formed from the axioms of the problem and the negation of the conjecture (if any is given). From this point on, Satallax tries to determine unsatisfiability or satisfiability of this branch. Satallax progressively generates higher-order formulae and corresponding propositional clauses [Bro13]. These formulae and propositional clauses correspond to instances of the tableau rules. Satallax uses the SAT solver MiniSat to test the current set of propositional clauses for unsatisfiability. If the clauses are unsatisfiable, then the original branch is unsatisfiable. Optionally, Satallax generates first-order formulae in addition to the propositional clauses. If this option is used, then Satallax periodically calls the first-order theorem prover E to test for first-order unsatisfiability. If the set of first-order formulae is unsatisfiable, then the original branch is unsatisfiable. Upon request, Satallax attempts to reconstruct a proof which can be output in the TSTP format.
http://satallaxprover.com
Satallax 3.2
Michael Färber
Universität Innsbruck, Austria
Architecture
Satallax 3.2
[Bro12]
is an automated theorem prover for higher-order logic.
The particular form of higher-order logic supported by Satallax is Church's
simple type theory with extensionality and choice operators.
The SAT solver MiniSat
[ES04]
is responsible for much of the proof search.
The theoretical basis of search is a complete ground tableau calculus for
higher-order logic
[BS10]
with a choice operator
[BB11].
Problems are given in the THF format.
Proof search: A branch is formed from the axioms of the problem and the negation of the conjecture (if any is given). From this point on, Satallax tries to determine unsatisfiability or satisfiability of this branch. Satallax progressively generates higher-order formulae and corresponding propositional clauses [Bro13]. These formulae and propositional clauses correspond to instances of the tableau rules. Satallax uses the SAT solver MiniSat to test the current set of propositional clauses for unsatisfiability. If the clauses are unsatisfiable, then the original branch is unsatisfiable. Optionally, Satallax generates first-order formulae in addition to the propositional clauses. If this option is used, then Satallax periodically calls the first-order theorem prover E [Sch13] to test for first-order unsatisfiability. If the set of first-order formulae is unsatisfiable, then the original branch is unsatisfiable. Upon request, Satallax attempts to reconstruct a proof which can be output in the TSTP format. The proof reconstruction has been significantly changed since Satallax 3.0 in order to make proof reconstruction more efficient and thus less likely to fail within the time constraints.
http://satallaxprover.com
Scavenger EP-0.1 and EP-0.2
Bruno Woltzenlogel Paleo
Australian National University, Australia
Daniyar Itegulov, Uladzislau Padtsiolkin
ITMO University, Russia
Architecture
Scavenger
[ISW17] is a theorem prover based on the new Conflict Resolution calculus
[SW17].
At the proof-theoretical level, Conflict Resolution (CR) is a generalization
of the conflict-driven clause learning (CDCL) principle to first-order logic.
CR derivations are isomorphic to implication graphs (as maintained by
SAT-solvers): every unit-propagating resolution inference corresponds to a
new propagated literal in the graph; every assumption/decision corresponds to
a decision literal in the graph; and every conflict inference corresponds to
a conflict in the graph.
CR's clause learning inference learns a disjunction of negations of
instances of the decision literals that are ancestors of the conflict,
using the compositions of the unifiers on the paths from the decisions to the
conflict.
From a natural deduction point of view, CR's clause learning inference rule
generalizes implication/negation introduction by taking unification into
account and considering several assumptions at once
[Wol16].
In this sense, it does to Gentzen's implication/negation introduction what
Robinson's resolution did to implication elimination (a.k.a. modus ponens).
The architecture of Scavenger attempts to be similar to the architecture of SAT-solvers, but data structures typically used in sat-solvers (e.g., Two-Watched-Literals) cannot be easily and efficiently generalized to first-order logic. Because of that, Scavenger's architecture also has a "taste" of saturation. For example, whereas in a SAT-solver propagation causes a literal to be assigned (either true or false), in Scavenger, propagation often requires generation of an instance of a literal, and it is this generated instance that is assigned.
Scavenger-EP-0.2 extends Scavenger-EP-0.1 from CNF without equality to FOF with equality. However, equality reasoning is done in a naive way: (instances of) equality axioms are added to the problem when needed. Scavenger-EP-0.2 also implements a VSIDS heuristic for decision literal selection and optimizes unification and some data structures.
https://gitlab.com/aossie/Scavenger/
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.
The reduction ordering is the Knuth-Bendix Ordering.
Substitution tree and code tree indexes are used to implement all major
operations on sets of terms, literals and clauses.
Internally, Vampire works only with clausal normal form.
Problems in the full first-order logic syntax are clausified during
preprocessing.
Vampire implements many useful preprocessing transformations including the
Sine axiom selection algorithm.
When a theorem is proved, the system produces a verifiable proof, which
validates both the clausification phase and the refutation of the CNF.
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.
The reduction ordering is the Knuth-Bendix Ordering.
Substitution tree and code tree indexes are used to implement all major
operations on sets of terms, literals and clauses.
Internally, Vampire works only with clausal normal form.
Problems in the full first-order logic syntax are clausified during
preprocessing.
Vampire implements many useful preprocessing transformations including the
SinE axiom selection algorithm.
When a theorem is proved, the system produces a verifiable proof, which
validates both the clausification phase and the refutation of the CNF.
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.
The reduction ordering is the Knuth-Bendix Ordering.
Substitution tree and code tree indexes are used to implement all major
operations on sets of terms, literals and clauses.
Internally, Vampire works only with clausal normal form.
Problems in the full first-order logic syntax are clausified during
preprocessing.
Vampire implements many useful preprocessing transformations including the
SinE axiom selection algorithm.
When a theorem is proved, the system produces a verifiable proof, which
validates both the clausification phase and the refutation of the CNF.
Vampire 4.0
Giles Reger
University of Manchester, United Kingdom
Architecture
Vampire 4.0 is an automatic theorem prover for first-order logic.
Vampire implements the calculi of ordered binary resolution and superposition
for handling equality.
It also implements the Inst-gen calculus and a MACE-style finite model builder.
Splitting in resolution-based proof search is controlled by the AVATAR
architecture, which uses a SAT solver to make splitting decisions.
Both resolution and instantiation based proof search make use of global
subsumption.
Strategies
Vampire 4.0 provides a very large number of options for strategy selection. The most important ones are:
Implementation
Vampire 4.0 is implemented in C++.
Expected Competition Performance
Vampire 4.0 is the CASC-J8 FOF and LTB division winner.
Vampire 4.1
Giles Reger
University of Manchester, United Kingdom
Architecture
Vampire
[KV13]
4.1 is an automatic theorem prover for first-order logic.
Vampire implements the calculi of ordered binary resolution and superposition
for handling equality.
It also implements the Inst-gen calculus
[Kor13]
and a MACE-style finite model builder
[RSV16].
Splitting in resolution-based proof search is controlled by the AVATAR
architecture
[Vor14]
which uses a SAT or SMT solver to make splitting decisions.
Both resolution and instantiation based proof search make use of global
subsumption
[Kor13].
Strategies
Vampire 4.1 provides a very large number of options for strategy selection.
The most important ones are:
Implementation
Vampire 4.1 is implemented in C++.
Expected Competition Performance
Vampire 4.0 is the CASC-J8 TFA and FNT division winner.
Vampire 4.2
Giles Reger
University of Manchester, United Kingdom
Architecture
Vampire
[KV13] 4.2 is an automatic theorem prover for first-order logic.
Vampire implements the calculi of ordered binary resolution and superposition
for handling equality.
It also implements the Inst-gen calculus and a MACE-style finite model builder
[RSV16].
Splitting in resolution-based proof search is controlled by the AVATAR
architecture which uses a SAT or SMT solver to make splitting decisions
[Vor14,RB+16].
Both resolution and instantiation based proof search make use of global
subsumption.
Strategies
Vampire 4.2 provides a very large number of options for strategy selection.
The most important ones are:
Implementation
Vampire 4.2 is implemented in C++. It makes use of minisat and z3.
Expected Competition Performance
Vampire 4.2 should be an improvement on Vampire 4.1, which won 4 divisions
last year.
Most changes have happened in parts relevant to TFA, some small changes in
parts relevant to model building (EPR and FNT), and some general improvements
to preprocessing that will effect all tracks.
Zipperposition 1.1
Simon Cruanes
Inria Nancy, France
Architecture
Zipperposition is a superposition-based theorem prover for typed
first-order logic with equality.
It features a number of extensions that include polymorphic types; linear
arithmetic on integers and rationals using a specialized set of first-order
inference rules; datatypes with structural induction; user-defined rewriting
on terms and formulas ("deduction modulo theories"); a lightweight variant
of AVATAR for boolean case splitting; first-class booleans
[KK+16]; and (very experimental) support for higher-order logic, extending
first-order rules to higher-order terms using a customized variant of pattern
unification.
The core architecture of the prover is based on saturation with an
extensible set of rules for inferences and simplifications.
The initial calculus and main loop were imitations of an old version of E
[Sch02], but there are many more rules nowadays.
A summary of the calculus for integer arithmetic and induction can be found
in [Cru15].
Strategies
The system does not feature advanced strategies: only one saturation
loop with pick-given ratio and clause selection heuristics is used.
No tuning specific to CASC was made.
Implementation
The prover is implemented in OCaml, and has been around for five years.
Term indexing is done using discrimination trees (non perfect ones for
unification, perfect ones for rewriting) as well as feature vectors
for subsumption.
Some inference rules such as contextual literal cutting make heavy use of
subsumption.
The code can be found at
https://github.com/c-cube/zipperposition
and is entirely free software (BSD-licensed).
Zipperposition can also output graphic proofs using graphviz.
Some tools to perform type inference and clausification for typed
formulas are also provided, as well as a separate library for dealing
with terms and formulas
[Cru15].