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:
  1. 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.
  2. 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.
  3. 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.
  4. 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).