Geo III (2018C)
Hans de Nivelle
Nazarbayev University, Astana, Kazakhstan
Architecture
Geo III is a theorem prover for
Partial Classical Logic, based
on reduction to
Kleene Logic.
Currently, only Chapters 4 and 5
are implemented.
Since Kleene logic generalizes 2-valued logic, Geo III
can take part in CASC.
Apart from being 3-valued, the main differences with earlier
versions of Geo are the following:
-
The Geo family of provers uses exhaustive backtracking,
in combination with learning after failure. Earlier versions (before 2016)
learned only conflict formulas.
Geo III learns disjunctions of arbitrary width.
Experiments show that this often results in shorter proofs.
-
If Geo will be ever embedded in proof assistants, these assistants
will require proofs. In order to be able to provide
these at the required level of detail, Geo III contains a
hierarchy of proof rules that is independent of the
rest of the system, and that can be modified independently.
-
In order to be more flexible in the main algorithm, recursive
backtracking has been replaced by use of a stack.
By using a stack,
it has become possible to implement non-chronological backtracking,
remove unused assumptions, or to rearrange the order of assumptions.
Also, restarts are easier to implement with a stack.
-
Matching a geometric formula into a candidate model is a critical
operation in Geo. Compared to previous versions, the matching algorithm
has been improved theoretically, reimplemented, and is no longer a
bottle neck.
As for future plans, we want to add backward simplification
to the main algorithm.
This involves matching between geometric formulas, which was not
possible before, because we had no usable matching algorithm.
We also want to reimplement proof logging, and to implement full PCL.
Strategies
Geo uses breadth-first, exhaustive model search,
combined with learning. In case of branching,
branches are explored in pseudo-random order.
Specially for CASC, a restart strategy was added, which ensures
that proof search is always restarted after 4 minutes.
This was done because Geo III has no indexing. After some
time, proof search becomes so inefficient that it makes no sense
to continue, so that it is better to restart.
Implementation
Geo III is written in C++-14. No features outside of the standard
are used. It has been tested with
g++ (version 4.8.4) and with
clang.
Main difference with Geo 2016C is that
version 2018C uses a new matching algorithm, which on average
performs 100/1000 times better than the previous.
Expected Competition Performance
We are slowly closing the gaps in Geo.
We expect Geo 2018C to be better than 2016C, but the way to the top is long.
Acknowledgement
Development of Geo 2018C was supported by the Polish National Science
Center (NCN) through grant number DEC-2015/17/B/ST6/01898
(Applications for Logic with Partial Functions).