A theorem prover for the temporal parametrized verification of concurrent data types
OCaml Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
notes
src
.gitignore
LICENSE
Makefile
README.md
_tags

README.md

README for LEAP

NOTE: this version of LEAP is still experimental, documentation may be out of date.

Introduction:

LEAP is a prototype theorem prover which aims the formal verification of temporal properties, both safety and liveness, of parametrized programs. In particular, LEAP is designed for the analysis of programs that manipulate concurrent data types that store both finite and infinite data.

LEAP receives as input an annotated program and a temporal specification. As output, it states whether the temporal specification holds under the assumption of an unbounded number of threads executing the input program. To accomplish this, in its core LEAP implements:

  • A collection of specialized deductive proof rules which reduce the verification problem to a finite collection of verification conditions, whose validity entails the satisfaction of the temporal specification by the parametrized system.

  • A set of decision procedures, which can automatically verify the validity of the previously generated verification conditions.

Installation:

LEAP is available as source code and as binaries for Linux and Mac. Since LEAP works of top of some SMT solvers, you will need to install at least:

Compiling this repository:

  • Get the source code git clone https://github.com/imdea-software/leap
  • Compile LEAP make leap (requires ocamlbuild and ocaml >= 4.02.0)

Examples, tutorials and binaries:

Examples, tutorials and compiled binaries for Linux and Mac are available from LEAP's website. In particular, there exists binary versions for:

Examples can also be found in the examples folder of this repository.

Online tool:

NEW! LEAP can now be used at its online website.

Usage:

There exists a tutorial at LEAP's website.

It is possible to check whether LEAP was successfully installed by executing leap -version, which output the current LEAP version. A list of available options can be obtained by executing leap -help. Further details about command line options and the methodology for using LEAP can be found in the examples folder of this repository and in chapter 9 of Alejandro Sanchez's PhD Thesis.

Related publications:

A comprehensive presentation of LEAP can be found in chapter 9 of Alejandro Sanchez's PhD Thesis.

LEAP implementation is based on the following publications:

Contact:

LEAP is currently developed and maintained by: