##########################################################################
# Copyright (c) 2009, Romain BARDOU                                      #
# All rights reserved.                                                   #
#                                                                        #
# Redistribution and  use in  source and binary  forms, with  or without #
# modification, are permitted provided that the following conditions are #
# met:                                                                   #
#                                                                        #
# * Redistributions  of  source code  must  retain  the above  copyright #
#   notice, this list of conditions and the following disclaimer.        #
# * Redistributions in  binary form  must reproduce the  above copyright #
#   notice, this list of conditions  and the following disclaimer in the #
#   documentation and/or other materials provided with the distribution. #
# * Neither the  name of Melt nor  the names of its  contributors may be #
#   used  to endorse  or  promote products  derived  from this  software #
#   without specific prior written permission.                           #
#                                                                        #
# THIS SOFTWARE  IS PROVIDED BY  THE COPYRIGHT HOLDERS  AND CONTRIBUTORS #
# "AS  IS" AND  ANY EXPRESS  OR IMPLIED  WARRANTIES, INCLUDING,  BUT NOT #
# LIMITED TO, THE IMPLIED  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR #
# A PARTICULAR PURPOSE  ARE DISCLAIMED. IN NO EVENT  SHALL THE COPYRIGHT #
# OWNER OR CONTRIBUTORS BE  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, #
# SPECIAL,  EXEMPLARY,  OR  CONSEQUENTIAL  DAMAGES (INCLUDING,  BUT  NOT #
# LIMITED TO, PROCUREMENT OF SUBSTITUTE  GOODS OR SERVICES; LOSS OF USE, #
# DATA, OR PROFITS; OR BUSINESS  INTERRUPTION) HOWEVER CAUSED AND ON ANY #
# THEORY OF  LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY,  OR TORT #
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING  IN ANY WAY OUT OF THE USE #
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.   #
##########################################################################

Web page: http://romain.bardou.fr/capucine

What is Capucine?
=================

Capucine is a prototype implementation of my PhD work. It is a
language with regions, permissions and invariants for deductive
verification. Regions allow some static separation of pointers, and
permissions allow static tracking of the state of invariants. Capucine
integrates with the Why platform: Capucine programs can be interpreted
as Why programs so that Why handles generation of verification
conditions for automatic provers or proof assistants.

Getting Started
===============

This is a source distribution. To compile Capucine, you need OCaml
version 3.10.2 or greater (Ubuntu / Debian package: ocaml). You also
need Why 2.26 to compute verification conditions, and some automatic
prover such as Alt-Ergo, Simplify, Z3 or CVC3. You may also use the
Coq proof assistant.

To compile, type:

make

To try out the examples, the simplest way is to use the Ocamlbuild
plugin. For instance, to compile bench/sparse.cap and view proof
obligations using GWhy:

ocamlbuild bench/sparse.gwhy

Authors
=======

Romain Bardou
Claude Marché