VPL (Verified Polyhedra Library)
The VPL is an Ocaml library allowing to compute with convex polyhedra. It provides standard operators -- certified in Coq -- to use this library as an abstract domain of polyhedra.
Contributors: Alexis Fouilhé, Alexandre Maréchal, Sylvain Boulmé, Hang Yu, Michaël Périn, David Monniaux. Developed at Verimag and supported by ANR Verasco and ERC Stator.
If you find a bug or have any comment, feel free to contact us at email@example.com
First, add the following repository in your opam system:
opam repo add vpl https://raw.githubusercontent.com/VERIMAG-Polyhedra/opam-vpl/master
Then, install the following packages (depending on your needs):
vpl-core: the ocaml library
opam install vpl-core
coq-vpl: the Coq library (only needed to get Coq proofs about VPL operators)
opam install coq-vpl
coq-vpltactic: the VplTactic plugin for Coq (also install
opam install coq-vpltactic
The VPL requires the following packages:
Compiling the VPL
(Optional) To re-extract from the coq files, simply run at the root directory
To compile the VPL, simply run from the root directory
Tests can be run by typing
Finally, to install the library with ocamlfind, type
To uninstall the library from ocamlfind, run
Documentation can be built from sources with
make doc; make open_doc
It contains the interface of main modules.
Using the VPL
There are several ways to use the library.
From Coq (see opam package
As a Coq tactic (see VplTactic)
As an OCaml library (see opam package
As an OCaml library, the entry point of the VPL is the module UserInterface, which contains several version of the abstract domain. Polyhedral domains can work over Q or Z, and there are three levels of certification, which gives 6 possible domains. The level of certifications are:
No certification: no certificate is produced. This is implemented in modules UncertifiedZ and UncertifiedQ.
OCaml certification: Each operator of the domain produces a certificate, ie a witness of its computation that can be checked. This is implemented in modules OCamlCertifiedZ and OCamlCertifiedQ.
- As an OCaml library
(see opam package
- Coq certification: In addition to guarantees offered by OCaml certification, certificates are here extracted from Coq proven types. This is implemented in modules CoqCertifiedZ and CoqCertifiedQ.
The html documentation is then generated in the folder