Verimag Polyhedra Library
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
calculator Updating demo file in calculator to fit new Debug interfaces. Jan 11, 2018
coq port coq code for coq 8.8.1 Jul 10, 2018
ocaml Update version number to 0.4.2 Oct 16, 2018
test Updating C++ raytracing algorithm Jun 20, 2018
.gitignore Fix #1 Jun 5, 2018
LICENSE Initial commit Nov 28, 2016
Makefile The oasis developer file now uses GLPK Jun 20, 2018
README.md Fixing dependencies in README Jun 20, 2018
changelog.sh Add changelog script May 18, 2018

README.md

VPL (Verified Polyhedra Library)

GENERAL INFORMATIONS

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 verimag-polyhedra-developers@univ-grenoble-alpes.fr

INSTALLATION

  1. From opam

    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 coq-vpl and vpl-core)

      opam install coq-vpltactic
      

In case of trouble with this opam install, you should read this.

  1. From sources

    The VPL can use a C++ parallel algorithm to minimize the representation of polyhedra. This feature requires several dependencies. If you are not interested in this feature or do not want to install dependencies, a "vanilla" VPL can be installed (see point 1. below).

    1. Without C++ dependencies

      1. Dependencies

        The VPL requires the following packages:

        • ocaml required version >= 4.02.3

        • zarith available in OPAM tested with version 1.4.1

      2. Compiling the VPL

        (Optional) To re-extract from the coq files, simply run at the root directory

         make coq_extract
        

        To compile the VPL, simply run from the root directory

         make vpl
        

        Tests can be run by typing

         make check
        

        Finally, to install the library with ocamlfind, type

         make install
        

        To uninstall the library from ocamlfind, run

         make uninstall
        
    2. With C++ dependencies

      1. Dependencies

        The VPL requires the following packages:

        • ocaml required version >= 4.02.3

        • zarith available in OPAM tested with version 1.4.1

        • glpk required version >= 4.61

        • eigen debian package libeigen3-dev tested with version 3.3.3

        • flint debian package libflint-dev tested with version 2.5.2

        • coq (mandatory only if you want to re-extract files from Coq) available in OPAM required version 8.7 (use coq-vpl.0.2 for coq 8.6)

          NB the ocaml/src/extracted/ directory already contains extracted files from Coq.

      2. Compiling the VPL

        (Optional) To re-extract from the coq files, simply run at the root directory

         make coq_extract
        

        To compile the VPL, simply run from the root directory

         make vpl_glpk
        

        Tests can be run by typing

         make check
        

        Finally, to install the library with ocamlfind, type

         make install
        

        To uninstall the library from ocamlfind, run

         make uninstall
        

Using the VPL

There are several ways to use the library.

  • As an Ocaml library (opam package vpl-core), the entry point is then the module UserInterface

  • From Coq (opam package coq-vpl)

  • As a Coq tactic (see VplTactic)