The Cyclist Framework and Provers
Cyclist is two things:
-
A generic, cyclic theorem prover framework. It can be used for constructing theorem provers that employ cyclic proof (usually, in order to treat inductively defined predicates) for practically any logic.
-
A collection of theorem provers and other tools, with a focus on Separation Logic with inductive definitions, hereafter abbreviated as SL. Checkout the demo for a live demonstration of the
sl_provetool.
Cyclist is written in OCaml and C++.
Actively maintained tools in Cyclist
-
sl_proveis a prover for entailments in SL. See the demo for a live demonstration. -
sl_satcheckimplements a decision procedure for satisfiability of SL formulas. -
sl_disproveis a heuristic for disproving entailments in SL. -
sl_modelcheckdecides whether the given SL formula is satisfied by a provided program state. -
while_proveis termination and/or safety prover for simple while-programs with pointers and dynamic allocation specified by SL formulas. -
procedure_proveis a termination and/or safety prover for procedural imperative programs, where procedures are specified with pre- and postconditions composed of SL formulas. -
while_abduceis a prover likewhile_prove, but which attempts to infer a suitable precondition in SL such that the target program will terminate/execute safely, including inferring the inductive definitions themselves. -
fo_prove: A cyclic prover for (for all-exists) first order logic with inductive definitions.
No longer maintained tools
goto_prove: A cyclic prover for a program logic like while_prove above, but for a go-to language.