This is the first version of Connect++ that, in addition to using connection calculus, employs ideas from [RR21], for periodically grounding clauses and using a SAT solver to complete a proof by finding a finite unsatisfiable grounded set.
As substitutions need to apply to an entire proof tree the system only represents each variable once and shares the representation, simultaneously maintaining a stack of substitutions making removal of substitutions under backtracking trivial. It also creates subterms only once and shares them; these are indexed allowing constant-time lookup, and nothing is ever removed from the index, meaning that if a term is constructed again after its initial construction no new memory allocation takes place and the term itself is obtained in constant time. At the same time, fresh copies of variables are recycled under backtracking - these two design choices appear to interact very effectively, as the recycling of the variables seems to make it quite likely that subterms already in the index can be reused. As new copies of clauses are often needed, clauses are themselves also retained during backtracking and reused where possible to minimize the need to make new ones.
By default a standard recursive unification algorithm is used, but a polynomial-time version is optional.
If a schedule is used, it is assumed that different approaches to definitional clause conversion may be needed - typically all clauses, conjecture clauses only, or no clauses. As these choices can lead to different matrices, and the conversion itself can be expensive, the system stores and switches between the different matrices rather than converting multiple times.
As the system was developed with two guiding aims - to provide a clear implementation easily modified by others, somewhat in the spirit of MiniSAT [ES04], and to support experiments in machine learning for guiding the proof search - the implementation avoids the use of direct recusion in favour of a pair of stacks and an iterative implementation based on these, as described in [Hol23]. This allows complete and arbitrary control of backtracking restriction and other modifications to the proof search using typically quite simple modifications to the code.
The source and documentation are available at
http://www.cl.cam.ac.uk/~sbh11/connect++.html
For CASC-J13, E implements a two-stage multi-core 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, possibly presence of certain axiom patterns, ...).
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.
The strategies are then scheduled onto the available cores and run in parallel.
About 1615 different strategies have been thoroughly evaluated on various TPTP versions,
420 of which made it into the prover either into the automatic mode or into at least one schedule.
Drodi 4.1.1
Oscar Contreras
Amateur Programmer, Spain
Architecture
Drodi 4.1.1 is a very basic and lightweight automated theorem prover.
It implements the following main features:
Strategies
Drodi has a fair number of selectable strategies including but not limited to the following:
Implementation
Drodi is implemented in C.
It includes discrimination trees and hashing indexing.
All the code is original, without special code libraries or code taken from other sources.
Expected Competition Performance
Due to the SAT based subsumption and subsumption resolution Drodi 4.1.1 solves around 5% more
FOF problems than last year's version.
Due to new goal transformation Drodi solves around 30% more UEQ problems than last year's version.
Also all syntax problems in the proof have been hopefully corrected.
It is expected better results than in last year but probably not enough to improve the ranking
position.
E 3.5.1
Stephan Schulz
DHBW Stuttgart, Germany
Architecture
E
[Sch02,
Sch13,
SCV19]
is a purely equational theorem prover for many-sorted first-order logic with equality, and for
monomorphic higher-order logic.
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, optionally with
higher-order extensions
[VB+21,
VBS23].
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.
As of E 2.1, PicoSAT
[Bie08]
can be used to periodically check the (on-the-fly grounded) proof state for propositional
unsatisfiability.
Strategies
Proof search in E is primarily controlled by a literal selection strategy, a clause selection
heuristic, and a simplification ordering.
The prover supports a large number of pre-programmed literal selection strategies.
Clause selection heuristics can be constructed on the fly by combining various parameterized
primitive evaluation functions, or can be selected from a set of predefined heuristics.
Clause evaluation heuristics are based on symbol-counting, but also take other clause properties
into account.
In particular, the search can prefer clauses from the set of support, or containing many symbols
also present in the goal.
Supported term orderings are several parameterized instances of Knuth-Bendix-Ordering (KBO) and
Lexicographic Path Ordering (LPO), which can be lifted in different ways to literal orderings.
Implementation
E is build around perfectly shared terms, i.e., each distinct term is only represented once in a
term bank.
The whole set of terms thus consists of a number of interconnected directed acyclic graphs.
Term memory is managed by a simple mark-and-sweep garbage collector.
Unconditional (forward) rewriting using unit clauses is implemented using perfect discrimination
trees with size and age constraints.
Whenever a possible simplification is detected, it is added as a rewrite link in the term bank.
As a result, not only terms, but also rewrite steps are shared
[Sch25].
Subsumption and contextual literal cutting (also known as subsumption resolution) is supported
using feature vector indexing
[Sch13].
Superposition and backward rewriting use fingerprint indexing
[Sch12],
a new technique combining ideas from feature vector indexing and path indexing.
Finally, LPO and KBO are implemented using the elegant and efficient algorithms developed by
Bernd Löchner in
[Loe06,
Loe06].
The prover and additional information are available at
https://www.eprover.org
FindProof 0.1
Nik Murzin
Wolfram Institute, USA
Architecture
FindProof
[Mur26]
is an equational theorem prover for unit-equality problems, based on unfailing (ordered)
Knuth-Bendix completion
[BDP89].
It continues the Waldmeister line of provers
[HL02],
which won the CASC unit-equality division at every competition in which it was ranked between 1997
and 2014; the completion loop, critical-pair selection, queue management, and normalisation
reproduce the Waldmeister design, and on classical algebraic problems the default configuration
reproduces Waldmeister's critical-pair selection sequence exactly.
The axioms are saturated towards a convergent rewrite system while the goals are kept normalised, and a proof is reported when the two sides of every goal are joined; a conjecture given as several negative units is proved as a multi-goal conjunction against one saturation. Equations that cannot be oriented by the reduction ordering are used unfailingly, so that both faces are superposed, which preserves refutational completeness. The Knuth-Bendix ordering and the lexicographic path ordering are supported, with symbol precedences generated automatically. Redundant critical pairs are discarded by ground-joinability testing, the connectedness criterion, forward and backward subsumption and demodulation, and right-hand-side interreduction. Proofs are reconstructed from the recorded completion trace, the closing rewrite chain re-derived against the final rule set, and rendered as a TPTP CNFRefutation.
The system is not restricted to unit equality. Full first-order input is handled by equationalization, in which propositions are Skolemized and encoded as equations over a Boolean-algebra axiomatisation, proved by the same completion core, and decoded back into a predicate-logic proof. The present entry competes in the UEQ division.
FMB4J 0.1
Michael Rawson
University of Southampton, United Kingdom
Architecture
FMB4J is a finite model builder in the tradition of MACE.
It performs a reduction from the question "does this first-order set of clauses have a model of
size n?" to SAT.
The value of k begins at 1 and counts upwards, looking for progressively-larger finite models.
Strategies
Only one strategy is attempted.
Implementation
The finite model builder is implemented in Java using SAT4J as a solver.
FMB4J currently uses the Vampire system as a clausifier, with various flags that (i) axiomatise
equality and (ii) may (not) improve FMB4J's performance on the generated CNF.
It is available from:
https://github.com/jh4n23/FMB4J
Expected Competition Performance
This system was implemented as an undergraduate project (!).
It is not the state of the art in finite model building.
However, the use of Vampire as a frontend boosts performance considerably.
It can solve around a third of the satisfiable fragment of TPTP in 1 second.
LEO-II 1.7.0
Alexander Steen
University of Greifswald, 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.
Strategies
LEO-II employs an adapted "Otter loop".
Moreover, LEO-II uses some basic strategy scheduling to try different
search strategies or flag settings.
These search strategies also include some different relevance filters.
Implementation
LEO-II is implemented in OCaml 4, and its problem representation language
is the TPTP THF language
[BRS08].
In fact, the development of LEO-II has largely paralleled the development
of the TPTP THF language and related infrastructure
[SB10].
LEO-II's parser supports the TPTP THF0 language and also the TPTP languages
FOF and CNF.
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.8.0
Alexander Steen
University of Greifswald, Germany
Architecture
Leo-III
[SB21],
the successor of LEO-II
[BP+08],
is a higher-order ATP system based on extensional higher-order paramodulation
with inference restrictions using a higher-order term ordering.
The calculus contains dedicated extensionality rules and is augmented with
equational simplification routines that have their intellectual roots in
first-order superposition-based theorem proving.
The saturation algorithm is a variant of the given clause loop procedure
inspired by the first-order ATP system E.
Leo-III cooperates with external first-order ATPs that are called asynchronously during proof search; a focus is on cooperation with systems that support typed first-order (TFF) input. For this year's CASC E [Sch02, Sch13] is used as external system. However, cooperation is in general not limited to first-order systems. Further TPTP/TSTP-compliant external systems (such as higher-order ATPs or counter model generators) may be included using simple command-line arguments. If the saturation procedure loop (or one of the external provers) finds a proof, the system stops, generates the proof certificate and returns the result.
https://tptp.org/NonClassicalLogic/
The term data structure of Leo-III uses a polymorphically typed 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.
Leo-III's saturation procedure may at any point invoke external reasoning tools. To that end, Leo-III includes an encoding module which translates (polymorphic) higher-order clauses to polymorphic and monomorphic typed first-order clauses, whichever is supported by the external system. While LEO-II relied on cooperation with untyped first-order provers, Leo-III exploits the native type support in first-order provers (TFF logic) for removing clutter during translation and, in turn, higher effectivity of external cooperation.
Leo-III is available on GitHub:
https://github.com/leoprover/Leo-III
Mace4 2026-6A
Jeff Machado
Independent Researcher, USA
Architecture
Mace4
[McCURL],
version 2026-6A
[ML26],
is a finite model finder for first-order logic with equality, based on William McCune's LADR
(Library for Automated Deduction Research) codebase.
Given a set of clauses or formulas, Mace4 searches for a finite interpretation that satisfies them.
For a fixed domain size it ground-instantiates the problem and applies a decision procedure based
on ground rewriting modulo the input equalities, together with Davis-Putnam-style backtracking and
negative propagation.
Equalities are preserved through the search rather than flattened to propositional variables, so
reasoning about function table cells stays first-order until a contradiction or a model is reached.
The set(arithmetic) command optionally enables an integer arithmetic interpretation of designated symbols, so that common operations such as sum and product are interpreted as such. This is provided as a convenience and is off by default.
For parallel search, the -cores N option (and -casc, which implies -cores 8) directs Mace4 to race up to N domain sizes at once rather than running them sequentially. Because the smallest model is the desired answer, Mace4 retains the smallest model found so far, keeps smaller sizes running while wall-clock time remains, and reports that model when it is proven minimal or when the time limit is reached. Racing sizes makes productive use of the available cores under a wall-clock limit, and the keep-smallest rule preserves the minimality of the reported interpretation.
Mace4 applies a single fixed configuration to every problem in a division, with the same command line for all problems. It performs no per-problem tuning, uses no machine learning, and stores no precomputed information about individual problems or their solutions. All techniques are general purpose.
For TPTP input, Mace4 emits SZS status lines (Satisfiable for a satisfiable axiom set, CounterSatisfiable for a conjecture refuted by a finite model) and TFI-format interpretations in TPTP syntax, following the specification of Sutcliffe et al. [SS+26]. Each interpretation gives the domain together with the function and predicate denotations, wrapped in SZS output delimiters for verification by tools such as AGMV. The -ladr_out option additionally produces the original LADR-format model for tools that consume the legacy representation.
Mace4 compiles and runs at the command line with simple, documented commands, and installation instructions are given on the website. It has been tested on a variety of platforms and runs on essentially all commonly used operating systems, including Linux, Windows, and macOS 10.4 or later. Mace4 will also run directly in a modern web browser, with no download or compilation required; the code is fetched once and then executes on the local device, so an input file prepared in any text editor can be run and the results saved or verified without using the command line.
Mace4 and its HTML-formatted manual are available at
https://prover9.org
mrs 0.2.0
Olivier Roland
Independent Researcher, France
Architecture
mrs 0.2.0 is an automated theorem prover for first-order logic with equality, implementing the
superposition calculus
[BG94].
within an Otter-style given-clause loop
[Sch02].
The core inference rules are ordered binary resolution, factoring, equality resolution, equality
factoring, and superposition (into both terms and literals), oriented by a Knuth-Bendix Ordering
(KBO) or Lexicographic Path Ordering (LPO) with dynamic, rarity-based symbol precedence.
Clause splitting on non-Horn clauses is delegated to the AVATAR architecture
[Vor14],
backed by the CaDiCaL CDCL SAT solver.
EPR-structured problems are handled lazily through AVATAR splitting rather than eager ground
pre-expansion, which previously caused memory exhaustion on large Effectively
Propositional problems.
Term retrieval for unification and matching uses perfect discrimination trees that track variable bindings through traversal [McC92], eliminating false-positive candidates at the index level. Subsumption and subsumption resolution are accelerated by Feature Vector Indexing [Sch04]. Redundancy elimination includes forward/backward demodulation, forward/backward subsumption, subsumption resolution, condensation, tautology deletion, and global subsumption with orphan elimination (removal of the entire derived subtree of a clause that is later found to be subsumed).
mrs runs a portfolio of independent search strategies concurrently on separate threads, one per available CPU core, each maintaining its own clause set; the first strategy to find a refutation signals the others to stop via a shared atomic flag. Strategies additionally share a pool of derived unit equalities across threads to accelerate sibling searches without duplicating work; each shared entry carries its full justifying ancestor chain back to the original problem's axioms, so a clause adopted from a sibling thread is spliced into the receiving thread's own proof record with a complete, locally self-consistent derivation rather than an opaque fact.
Each per-division priority order was derived empirically: every one of mrs's 15 base strategies (varying clause weight function, literal selection, term ordering, Set-of-Support depth, and AVATAR on/off) was run solo against a large corpus of representative FOF/UEQ problems at the official time limit, and a greedy set-cover algorithm selected the minimal-redundancy 8-strategy subset that maximizes problems solved when run in parallel. This tuning is strictly at the division level (FNE/FEQ/ UEQ), never at the level of individual problems or their solutions, and generalizes to unseen problems of the same syntactic class. The baseline strategies use age-weight ratios (e.g., every 5th or 6th given-clause pick by FIFO age, the rest by weight) to balance breadth and depth of search, several distinct clause weight functions (including symbol-count, function-depth penalties, Horn-clause penalties, and conjecture-symbol boosting), and Set-of-Support restrictions that skip inferences between two clauses both far from the negated conjecture.
mrs is open source (MIT OR Apache-2.0) and available from:
https://github.com/newca12/mrs
Prover9 1109a
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/
Prover9 2026-6A
Jeff Machado
Independent Researcher, USA
Architecture
Prover9
[McCURL],
version 2026-6A
[ML26],
is a resolution/paramodulation prover for first-order logic with equality, based on William
McCune's LADR (Library for Automated Deduction Research) codebase.
The system follows the "given clause" algorithm, in which not-yet-given clauses are available for
rewriting and for other inference operations (the "Otter loop").
The prover provides positive ordered (and nonordered) resolution and paramodulation, negative
ordered (and nonordered) resolution, factoring, positive and negative hyperresolution,
UR-resolution, and demodulation (term rewriting).
Term ordering options include LPO, RPO, or KBO.
Selection of candidate clauses uses an age-weight ratio.
The 2026 version adds native TPTP input parsing with automatic SZS status output, SInE
[HV11]
for large-theory problems, a machine-learned strategy selector, and a multi-core parallel
portfolio scheduler.
The underlying inference algorithms are unchanged from McCune's original design.
For TPTP input, proof output is in TPTP/TSTP format with SZS status lines and CNFRefutation delimiters. SIGXCPU and SIGALRM are handled for clean termination under both CPU and wall-clock time limits. In competition mode (-casc T), the system automatically configures TPTP output, multi-core scheduling, the ML strategy selector, and wall-clock timeout T for the entire portfolio run.
The parallel scheduler assigns each strategy a time slice and runs multiple strategies concurrently using a sliding-window approach. An initial breadth phase exposes the problem to diverse strategies, followed by a priority-based depth phase that allocates remaining time to the most promising strategies based on progress metrics such as given and kept clause counts and memory use.
SInE is enabled automatically for TPTP problems with more than 128 axioms, reducing large-theory problems to manageable subsets before search. Several specialist strategies vary the SInE tolerance to explore different axiom subsets.
For FOF problems, a preprocessing step attempts to reduce the problem to independent subproblems by a miniscope transformation; if the reduction succeeds, each subproblem is clausified and given to the ordinary search procedure.
Indexing uses discrimination tree indexing for finding rewrite rules and subsuming units, FPA/Path indexing for finding subsumed units, rewritable terms, and resolvable literals. Feature vector indexing is used for forward and backward nonunit subsumption. To accelerate lookups at high-fanout index nodes, both FPA/Path and discrimination tree nodes can switch from linear child scanning to hash-table lookup; the switchover threshold is a runtime parameter (fpa_hash_threshold, default 4 children, and discrim_hash_threshold, off by default) so strategies can tune it per problem family. The hash-table code paths are unconditionally compiled in.
The multi-core scheduler uses anonymous shared mmap regions and signals (SIGSTOP/SIGCONT/SIGALRM) for cooperative child process management, with open_memstream for capturing child proof output. Each child process runs an independent Prover9 instance with its own strategy configuration. Checkpoint and resume support lets the user halt and resume a search and recover from unplanned outages.
Prover9 may be compiled and run easily at the command line with documented, simple commands familiar to most users. Installation instructions are displayed conveniently on the website. Prover9 has been tested on a variety of platforms, and runs on essentially all commonly used computer operating systems including Linux, Windows, and macOS versions 10.4 or later. Prover9 will also run directly from any modern browser connected to the internet, without the need for the user to download or compile any code. Code execution takes place on the local device. Any local text editor may be used to prepare the input file, and the command line may be entirely avoided. Prover9 results are directly reported to the screen, and may be saved, verified, or processed according to the user's needs.
Prover9 and its HTML-formatted manual are available at
https://prover9.org
SATResetCoP 1.0
Martin Fixman
University of Cambridge, United Kingdom
Architecture
SATResetCoP is a connection prover for untyped first-order formulas without equality.
It is coupled to an incremental SAT solver: ground instances of clauses encountered during tableau
construction are accumulated as propositional clauses, and a theorem is reported when that clause
set is propositionally unsatisfiable.
The current SAT model is used to rank eligible tableau steps.
When a tableau attempt has generated new ground clauses, it is reset to explore a fresh part of the
search space while retaining the accumulated SAT state.
This design builds on SATCoP
[RR21]
and the Connections framework
[ROH23].
https://github.com/mfixman/satresetcop
SPASS-SCL 0.1.1
Simon Schwarz
Max Planck Institute for Informatics, Germany
Architecture
SPASS-SCL-FOL 0.1.1 is a prototype implementing SCL(FOL)
[BSW23]
for first-order logic without equality.
The focus of this year's development was not on improving performance, but rather on supporting
proofs and models, implementing a first prototype integration of propositional reasoning, and
clarifying the structure of the main loop.
Unlike the classical main loops of saturation-based provers, this loop is centered on selecting
ground literals to extend the trail and handling stuck states, which represent partial saturations.
SUPr 1.0
Teddy Kim
Naval Postgraduate School, USA
Architecture
SUPr 1.0 is a saturation-based theorem prover built as a native component of the Sigma knowledge
engineering environment (Rust implementation) (SigmaKEE-rs)
[PS14].
SUPr is optimized to reason directly over the Suggested Upper Merged Ontology (SUMO)
[NP01,
Pea11],
with additional support to solve standalone TPTP problems.
The core search procedure is a given-clause saturation loop implementing ordered resolution and
superposition with selective literal selection, forward and backward demodulation, and a
Knuth-Bendix reduction ordering.
Clauses and their constituent terms are represented in a content-addressed, hash-consed arena.
This content based addressing scheme is structured to allow batched, hardware accelerated
unification via binary arithmetic.
https://github.com/ontologyportal/sigma-rs
Twee 2.7
Nick Smallbone
Chalmers University of Technology, Sweden
Architecture
Twee 2.7
[Sma21]
is a theorem prover for unit equality problems based on unfailing completion
[BDP89].
It implements a DISCOUNT loop, where the active set contains rewrite rules (and unorientable
equations) and the passive set contains critical pairs.
The basic calculus is not goal-directed, but Twee implements a transformation which improves goal
direction for many problems.
Twee features ground joinability testing [MN90] and a connectedness test [BD88], which together eliminate many redundant inferences in the presence of unorientable equations. The ground joinability test performs case splits on the order of variables, in the style of [MN90], and discharges individual cases by rewriting modulo a variable ordering.
This year's version adds preliminary support for discovering interesting term patterns during proof search [AJS26].
Each critical pair is scored using a weighted sum of the weight of both of its terms. Terms are treated as DAGs when computing weights, i.e., duplicate subterms are counted only once per term.
For CASC, to take advantage of multiple cores, several versions of Twee run in parallel using different parameters (e.g., with the goal-directed transformation on or off).
The passive set is represented compactly (12 bytes per critical pair) by storing only the information needed to reconstruct the critical pair, not the critical pair itself. Because of this, Twee can run for an hour or more without exhausting memory.
Twee uses an LCF-style kernel: all rules in the active set come with a certified proof object which traces back to the input axioms. When a conjecture is proved, the proof object is transformed into a human-readable proof. Proof construction does not harm efficiency because the proof kernel is invoked only when a new rule is accepted. In particular, reasoning about the passive set does not invoke the kernel.
Twee can be downloaded as open source from:
https://nick8325.github.io/twee
There have been a number of changes and improvements since Vampire 4.7, although it is still the
same beast.
Most significant from a competition point of view are long-awaited refreshed strategy schedules.
As a result, several features present in previous competitions will now come into full force,
including new rules for the evaluation and simplification of theory literals.
A large number of completely new features and improvements also landed this year: highlights
include a significant refactoring of the substitution tree implementation, the arrival of
encompassment demodulation to Vampire, and support for parametric datatypes.
Vampire's higher-order support has also been re-implemented from the ground up.
The new implementation is still at an early stage and its theoretical underpinnings are being
developed.
There is currently no documentation of either.
Vampire 4.8
Michael Rawson
TU Wien, Austria
Architecture
Vampire
[KV13]
is an automatic theorem prover for first-order logic with extensions to theory-reasoning and higher-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].
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
[RSV16].
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 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
[HA+24]
and partial support for the polymorphic SMT-LIB 2.7 standard landed, but for the competition we
mention:
Vampire 5.0
Michael Rawson
University of Southampton, United Kongdom
The core is a given-clause saturation loop.
Problems are parsed from TPTP files, include directives are expanded, formulae are clausified, and
clauses are processed by resolution-style and superposition-style rules.
The main inferences are binary resolution, factoring, equality resolution, equality factoring, and
equality-oriented paramodulation/superposition steps.
Standard simplifications include tautology deletion, demodulation, forward simplification,
subsumption, subsumption resolution, condensation, and contextual literal cutting.
VIP contains a simple legacy engine and a more recent engine with stronger equality handling,
indexing, and clause selection; the competition portfolio combines both.
The system also includes SInE-style axiom selection, conservative AVATAR-style splitting, layered
clause selection, and limited deduction-modulo-inspired preprocessing for selected definitional
equivalences.
Strategy scheduling is based only on general syntactic characteristics of the input, such as
equality density, clause shape, unit-clause ratio, polarity patterns, and symbol occurrence
information.
It is not based on problem names, file paths, comments, TPTP headers, or stored information about individual
problems or their solutions.
The portfolio includes FEQ-oriented equality stages, FNE recovery stages using the legacy engine,
SInE axiom-selection stages with different widths, legacy-guided modern stages, layered age/weight
passive selection, and conservative splitting stages.
The submitted StarExec script does not hardcode the CASC time limit; it accepts the announced
wall-clock budget as a wrapper argument or environment value.
The default generated-clause limit is 75000.
TPTP include files are resolved according to the standard TPTP convention: first relative to the
problem file, and otherwise relative to the TPTP root supplied by the TPTP environment variable.
Internal data structures include feature-vector style indices for subsumption candidates,
discrimination-style indices for rewriting candidates, and KBO-style term ordering for equality
reasoning.
In competition mode, VIP writes all result information to standard output, emits an SZS status
line, and, when a refutation is found, prints a TPTP/TSTP-style proof delimited by SZS output
markers.
The run script expects the problem file as its first argument and relies on the StarExec/TPTP
environment for include-file resolution and resource enforcement.
VIP is available from:
VIP 1.718
Ilies Nokrani
Université Montpellier - LIRMM, France
Architecture
VIP 2026 is an automatic theorem prover for first-order logic in TPTP FOF syntax. It was
developed under a short time constraint as a standalone prover, with extensive LLM-assisted
implementation.
The submitted system does not call another ATP system as a backend.
Strategies
VIP uses a sequential portfolio.
The main CASC-oriented portfolio is casc-150.
Each stage receives a fixed fraction of the available time and runs with fixed options for the
FOF division.
The submitted StarExec script uses the same command line for every FOF problem.
Implementation
VIP is implemented in OCaml and is built with Dune.
The executable installed in the StarExec package is vip; ip is kept as a
compatibility alias in the source tree.
The delivered binary is statically linked.
https://github.com/delahayd/vip
Expected Competition Performance
VIP is expected to solve a useful subset of FOF theorem problems, with better performance on
unsatisfiable problems where axiom selection, equality simplification, and staged saturation
interact well.
It is not expected to match mature ATP systems such as Vampire, E, or Zipperposition.
>P>
Zipperposition 2.1.9999
Jasmin Blanchette
Ludwig-Maximilians-Universität München, Germany
Architecture
Zipperposition is a superposition-based theorem prover for typed first-order logic with equality
and for higher-order logic.
It is a pragmatic implementation of a complete calculus for full higher-order logic
[BB+21].
It features a number of extensions that include polymorphic types, user-defined rewriting on terms
and formulas ("deduction modulo theories"), a lightweight variant of AVATAR for case splitting
[EBT21], and Boolean
reasoning
[VN20].
The core architecture of the prover is based on saturation with an extensible set of rules for
inferences and simplifications.
Zipperposition uses a full higher-order unification algorithm that enables efficient integration of
procedures for decidable fragments of higher-order unification
[VBN20].
The initial calculus and main loop were imitations of an earlier version of E
[Sch02].
With the implementation of higher-order superposition, the main loop had to be adapted to deal
with possibly infinite sets of unifiers
[VB+21].
Zipperposition's code can be found at
https://github.com/sneeuwballen/zipperpositionand 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].
ProoVer 2026
CheckProof 0.1
Nik Murzin
Wolfram Institute, USA
Overview
CheckProof 0.1
[Mur26]
is a checker for first-order TSTP proofs.
A proof is validated by replay: it is parsed into its sequence of annotated formulae, and each
derived step is validated independently by dispatching on the inference rule that introduced it,
so that one SZS status is reported for the whole proof
[Sut08]
Each rule carries a distinct obligation.
An instantiate step is required to be a substitution instance of a parent; a negated_conjecture
step to be the negation of its parent, checked by entailment in both directions so that a wrong
quantifier dual is detected; a skolemize step to introduce a fresh Skolem symbol that occurs in
the result; and a consequence, horn, or deduction step to be entailed by its parents.
Entailment is decided by refutation with superposition, resolution, and paramodulation
[BG94]:
the parents and the negated conclusion are clausified and saturated, and a derived empty clause
certifies the step.
The refutation is required to close with the empty clause.
Checking is conservative, in keeping with the scoring, under which a wrong verdict is penalised
more heavily than abstention: a step is reported unsound only when a saturation is completed that
exhibits a counter-model, and a step whose inference rule is not implemented, or whose entailment
is neither proved nor refuted within the resource bound, leaves the proof unverified rather than
guessed.
GAPT returns VerifiedBad if any of the checks fail, or any internal proof invariant is violated. If checking takes longer than the given time limit, GAPT returns Timeout. If an unexpected situation occurs (e.g., input syntax error, or unexpected exception thrown), GAPT returns Unknown. Otherwise, GAPT returns VerifiedGood. The checker not only outputs the SZS status, but in case of VerifiedBad it also gives a more detailed message as to what went wrong. For example, if Escargot can establish that a plain inference is incorrect, the checker outputs the step name of the incorrect inference.
The approach of importing the TSTP derivation as an LK proof allows, in principle, to compute a more elaborated version of the TSTP derivation that requires no external ATP tools to check anymore.
The proof checking proceeds in the following way: First the input file is parsed in the TPTP format. Then the file is checked for unique formula names and for acyclicity of the derivation. Next, auxiliary checks are performed to ensure all steps have valid statuses and the file directives in axioms and conjectures are correct. Now, each step is assigned a first-order sequent where the step's parents' formulas are in the antecedent and the step's formula is in the succeedent. For plain inference steps an attempt is made to find an LK proof for this sequent by using the internal superposition prover Escargot. For skolemization inference steps an LK proof for the sequent is constructed using a special skolemization LK rule. For negated conjecture steps an attempt is made to find an LK proof for both the if and only if direction of negation(conjecture) iff negated_conjecture. To make sure that skolem symbols are used appropriately across all inferences, e.g., the same skolem symbol is not used for different skolemized formulas, an additional check is performed across the whole derivation. Finally, for each step, LK cuts between the step's proofs and the step's parents' proofs are applied which results in LK proofs whose antecedents contain axioms and the negation of the conjecture from the input file and whose succeedent contains the formula of the given step. This results in a compact representation of the LK proof of the input refutation, i.e., an LK proof of the sequent whose antecedent consists of input axioms and the negation of the conjecture and whose succeedent consists of $false. This representation avoids unfolding the whole LK proof into a tree and instead saves space by remaining a directed acyclic graph.
GAPT is available at:
https://www.logic.at/gapt/
https://github.com/TPTPWorld/GDVGDV relies heavily on the JJParser library, which has to be downloaded separately into the same directory as GDV:
https://github.com/TPTPWorld/JJParser
The external ATP systems run remotely, through the SystemOnTPTP service [Sut00].
GDV-LP 2.0
Frédéric Blanqui
ENS Paris-Saclay, INRIA, France
Overview
GDV-LP 2.0
[SBB25]
is a verifier for derivations in classical first-order and typed first-order logic, written in
the TPTP format.
GDV-LP checks a derivation in two steps:
https://github.com/TPTPWorld/GDVGDV relies heavily on the JJParser library, which has to be downloaded separately into the same directory as GDV:
https://github.com/TPTPWorld/JJParser
ZenonModulo is implemented in OCaml. It is available from:
https://github.com/Deducteam/zenon_modulolambdapi is written in OCaml. It is available from:
https://github.com/Deducteam/lambdapi.gitZenonModulo, other external ATP systems, and lambdapi run remotely, through the SystemOnTPTP service [Sut00].
mrs-proover 0.2.0
Olivier Roland
Independent Researcher, France
Architecture
mrs-proover 0.2.0is a proof checker for TSTP first-order refutation proofs, built as a companion
to the mrs automated theorem prover.
It follows the semantic verification paradigm pioneered by GDV
[Sut06]:
structural properties of the proof DAG are checked first (uniqueness of formula names, acyclicity,
a single $false root), followed by leaf verification against the linked problem file,
followed by per-step verification of each inference.
A small set of inference patterns that are expected to recur in every proof — the negated-conjecture step, and Skolemization steps — are verified internally using dedicated structural checks rather than external provers, since these steps have precisely specified shapes (see the ProoVer Rules and Format page). Axiom and conjecture leaves are checked for alpha-equivalence against the named formula in the linked problem file, either internally or, when internal matching fails, by delegating to an external ATP. All other inference steps with status thm or cth are discharged as proof obligations to an ATP ladder.
mrs-proover reports Unknown (rather than guessing) whenever neither a positive nor a negative verdict can be established within the allotted resources for a given step; because the ProoVer scoring penalizes a false VerifiedGood on a bad proof ten times more heavily than a missed detection, the overall verdict policy is deliberately conservative: any single step found unsound anywhere in the proof yields VerifiedBad for the whole proof; otherwise any step left undecided yields Unknown; only if every step is positively confirmed does the proof yield VerifiedGood.
mrs-proover has been cross-checked, using only its internal mrs backend (no external ATPs), against the 7 official ProoVer example proofs, against the leoprover/noergler PyRes correctness corpus (170 valid proofs, 170 corresponding falsified/mutated proofs), and against the ATP-Research-Project test corpus of correct and deliberately "evil" proofs. Across all of these, running the in-process backend alone never produced a false VerifiedGood on an evil proof and never produced a false VerifiedBad on a valid proof; adding the external E/Vampire backends only improves detection rate (fewer proofs left at Unknown), never soundness.
mrs-proover is open source (MIT OR Apache-2.0) and available from:
https://github.com/newca12/mrsas the mrs-proover crate in the same repository as the mrs ATP system.
Nörgler 1.1
Alexander Steen
University of Greifswald, Germany
Overview
The proof checker Nörgler 1.1
[TSS26,
STS26].
is designed as a light-weight system for the verification of TSTP refutations across various logic
dialects, including propositional, untyped or typed first-order, and higher-order logics.
The architecture is built upon the semantic verification paradigm pioneered by the GDV system
[Sut06].
This approach combines structural property verification using dedicated checks with the
verification of individual proof steps by re-proving each inference using trusted general-purpose
automated theorem provers.
A core design choice in the system is the integration of multi-core parallelization, which allows
independent proof checking tasks to be processed concurrently, thereby significantly increasing
performance and reducing overall verification time.
The verification process is executed via a multi-stage checking strategy. Initially, global structural properties of the proof (such as ensuring the proof graph is acyclic, verifying that formula names are unique, and confirming that the derivation correctly terminates in false) are validated. Following these global assessments, individual logical inferences are evaluated. This comprises checks of local structural properties (such as ensuring that a given step has an appropriate TSTP role and that all listed parents exist earlier in the proof) and the semantical verification of the inferences. Nörgler checks the faithfulness of all formulae taken from the problem file. With the exception of the negation of the conjecture and Skolemisazation, which are verified by dedicated checks, the inferences are verified by invoking an external trusted prover. If this check does not succeed within the allocated resource limit, countermodel search is invoked via integrated model finders to actively detect incorrect proof steps. If a countermodel is found, the inference is rejected as invalid (resulting in a VerifiedBad status); however, if neither a successful proof nor a definitive countermodel can be established by the auxiliary tools, a status of Unknown is reported. If all checks are successful, Nörgler returns VerifiedGood.
Several notable features are incorporated into the system to enhance its flexibility and robustness. Fine-grained control over the strictness with which formatting conventions are enforced is provided, enabling the system to either gracefully handle imperfect prover outputs or strictly demand adherence to proof standards, see [A HREF="http://tptp.org/cgi-bin/SeeTPTP?Category=BibTeX&File=TSS26">TSS26] for details.
https://github.com/leoprover/noergler/
Structural verification checks the syntax, unique naming, acyclicity, a $false root, and
that the leaves match the input problem (located from the proof's % Proof : header).
Leaf bodies are compared against their cited problem formulae canonically, with an ATP equivalence
check as the fallback, and clausal leaves are validated by replaying the clausification of their
source formula.
Introduced definitions are checked for conservativity and Skolem-symbol laundering.
Inference verification discharges every thm and cth step by an ATP proof
obligation built from exactly that step and its cited premises: the parents as axioms and the
conclusion as conjecture, discharged by a local E
[SCV19]
raced against Mace4
[ML26],
where a Mace4 countermodel refutes the step; a step that E leaves undecided is retried with Vampire
[KV13]
as a second entailment oracle before the step is hedged.
SideStep, a built-in clausal inference engine, replays clausal steps structurally in process
first; a step it refutes is rejected outright, while its acceptances are not trusted and the step
still goes to the ATP.
Skolemization (esa) steps are never sent to an ATP; they are verified structurally against
the parent: the required skolemize(Var,Term) record, the Skolem term's arguments against
the universally quantified variables in scope at the eliminated existential, symbol freshness
across the proof and against the problem's own symbols, and one fresh symbol per eliminated
(non-vacuous) existential.
Constructs outside the specification are hedged to Unknown.
A wall-clock deadline is self-imposed, so one of the four verdicts is always emitted within the
time budget.
ProofCheck 1.0
Jeff Machado
Independent Researcher, USA
Overview
ProofCheck 1.0 is a verifier for first-order refutation proofs written in the TPTP format.
A proof is checked by structural verification followed by independent verification of every
inference step, and is reported as VerifiedGood, VerifiedBad, Unknown,
or Timeout.
The verifier has a single, strict mode: by construction, no derived step can be accepted without
verification, and a step that cannot be decided is reported as Unknown rather than
VerifiedGood, to avoid false acceptance.
Implementation
ProofCheck is implemented in C++, including the SideStep engine and the structural checkers.
It compiles into a single static binary that invokes E
[SCV19]
and Vampire
[KV13]
as entailment provers,
Mace4
[ML26],
as the countermodel finder, and Prover9
[ML26],
for clausification replay, all locally from the directory of the binary.
It is available from:
https://github.com/AlgorithmicTruth/proofcheck-releases
ProofGuard---1.0
Matthew Farah
McMaster University, Canada
Overview
ProofGuard 1.0 is an automatic checker for first-order logic proof certificates submitted in the
TSTP format
[Sut24].
A problem file and a proposed proof file are taken as input, and it is checked whether the proof
establishes the claimed contradiction.
The system is designed for refutation proofs.
A proof is accepted only when every step of the argument can be followed and it can be confirmed
that $false is correctly derived.
When all required steps have been verified, the proof is reported as verified.
ProofGuard is intentionally conservative.
When a proof step is unclear, unsupported, malformed, or cannot be checked within the available
time, no guess is made.
It is instead reported that the proof could not be verified.
A proof is rejected as flawed only when a definite error can be identified, such as an incorrect
negated conjecture, an invalid Skolemization step, or an inference which does not follow from its
stated premises.
This design reflects the competition setting, in which the incorrect acceptance of a bad proof is
heavily penalized.
Caution is therefore prioritized, wherein only fully checked proofs are accepted, only demonstrably
flawed proofs are rejected, and verification is otherwise reported as inconclusive.
Verdicts are reported using the required SZS statuses
[Sut08].
An accepted proof is reported as VerifiedGood; a rejected proof is reported as
VerifiedBad, together with a one-line reason naming the flawed step; an inconclusive
verification is reported as Unknown; and an exhausted time budget is reported as
Timeout.
https://github.com/ValueAchooMatthew/ATP-Research-Project
PyCheck 0.1
Stephan Schulz
DHBW Stuttgart, Germany
Overview
PyCheck is a simple (mostly) semantic proof checker for
refutation-based proofs in the most commonly used subset of TPTP/TSTP CNF/FOF syntax.
Inspired by GDV
[Sut06],
it performs both structural and semantic checks on proof files.
Among the structural checks are existance of an explicit contradiction, acyclicity of the
proof graph, and freshness of introduced (Skolem) symbols.
Semantic checks include verification of "status(thm)" and "status(cth)" checks
using the external prover.
PyCheck calls an external prover (usually E [SCV19]) to verify most proof steps (in particularly those with thm and cth semantics). It uses internal processing to try to verify Skolemization steps, to check existence of axioms in the original input file, and to perform structural checks on the proof graph.
PyCheck can be downloaded from GitHub:
https://github.com/eprover/PyCheckIt requires E (https://www.eprover.org to be available in its search path (the ProoVer StaExec package should automatically do everything necessary).
VaLeaDate 0.1
Jonas Bodingbauer
TU Wien, Austria
Overview
VaLeaDate v0.1 is a proof verification system for TPTP proofs.
It leverages a recently developed proof output from Vampire, which generates proofs as Lean input
files that are end-to-end verifiable by Lean
[BH26].
The core approach of VaLeaDate is to invoke Vampire on each inference, inspired by GDV
[Sut06],
chain the resulting proof steps together, and subsequently verify the entire proof in Lean.
Since the proof checking step is time-consuming, VaLeaDate checks multiple structural properties
of the proof in the beginning and terminates early if any of these checks fail.
These basic checks include:
The system reports status Unknown for (some) syntactic errors or if Vampire does not produce a conclusive result (neither satisfiable nor a refutation). VerifiedBad is produced if any of the basic checks fail or if the Lean verification fails. Finally, VerifiedGood is produced if all checks pass and the final Lean verification also succeeds.