Wiki » History » Revision 8
Revision 7 (Mikhail Mandrykin, 01/26/2015 06:47 PM) → Revision 8/27 (Alexey Khoroshilov, 01/28/2015 06:07 PM)
h1. AstraVer Toolset AstraVer Toolset is built on top Jessie2 (fork of ''Frama-C + the Jessie plugin + Why3'' deductive verification toolchain, so it can be used to prove properties of Linux kernel code. for Frama-C) *Jessie2* is a fork of the Jessie plug-in for Frama-C that allows deductive verification of C programs annotated with "ACSL":http://frama-c.com/acsl.html and is primarily targeted at Linux kernel modules source code. It uses the language and tools of the "Why3 verification platform":http://why3.lri.fr/. Unlike original Jessie, Jessie2 is not distributed as a part of the "Why2 verification platform":http://why.lri.fr/ and is compiled/installed separately. *Note*: For now, this fork requires modified version of the __Frama-C__ source code analysis platform, that is based on the @Neon 20140301@ version of the original platform. h2. Installation h3. Using OPAM * Install "OPAM":https://opam.ocaml.org/ as described on the OPAM "documentation":https://opam.ocaml.org/doc/Install.html. For example (installing to @/usr/local/bin@ unsing the binary installer): <pre><code class="bash"> wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh chmod +x opam_installer.sh sudo ./opam_installer.sh /usr/local/bin </code></pre> * Initialize OPAM to use the OCaml 4.02.1 compiler: <pre><code class="bash"> opam init --comp 4.02.1 eval `opam config env` </code></pre> * Install "Git":http://git-scm.com/. For example on Ubuntu: <pre><code class="bash"> sudo apt-get install git </code></pre> * Add ISPRAS OPAM repository at @https://forge.ispras.ru/git/astraver.opam-repository.git@ with Jessie2 and modified Frama-C Neon packages to the OPAM installation (@ispras@ is just an arbitrary name of the new repository): <pre><code class="bash"> opam repo add ispras https://forge.ispras.ru/git/astraver.opam-repository.git </code></pre> * Install external dependencies for the Jessie2 and Frama-C build i.e. Autoconf, Gtk2 development files and M4. Ubuntu example: <pre><code class="bash"> sudo apt-get install $(opam install -e ubuntu jessie2) </code></pre> * Build and install the Jessie2 plugin for Frama-C with OPAM (the Frama-C itself will be built and installed automatically). One can use the @-j@ option to speed-up compilation on a multi-core machine: <pre><code class="bash"> opam install -j 4 jessie2 </code></pre> * Build and install either original or patched (negative assumption highlighting and minor explanation fixes) version of the Why3 verification platform: <pre><code class="bash"> sudo apt-get install $(opam install -e ubuntu why3) # Install GMP (external dependency) on Ubuntu opam install -j 4 why3 </code></pre> * The one using Jessie would also likely need SMT solvers e.g. "Alt-Ergo":http://alt-ergo.ocamlpro.com/ (also "Z3":http://http://z3.codeplex.com/, "CVC4":http://cvc4.cs.nyu.edu/web/ and others). Alt-Ergo can be installed via OPAM: <pre><code class="bash"> opam install alt-ergo altgr-ergo satML-plugin </code></pre> * The Why3 IDE should be initialized to detect available provers (and plugins): <pre><code class="bash"> why3 config --detect-provers --detect-plugins </code></pre> h2. Our Repositories * "Jessie2":/projects/astraver/repository (@git clone https://forge.ispras.ru/git/astraver.jessie2.git@) has the following branches: -- "@master@":/projects/astraver/repository -- references the latest released version of the Jessie2 plugin (currently `@alpha0@'') -- "@alpha0@":/projects/astraver/repository?utf8=✓&rev=alpha0 -- references the branch with the `@alpha0@'' released version of the plugin -- other branches are referencing the corresponding released versions * "QA":/projects/astraver/repository/qa (@git clone https://forge.ispras.ru/git/astraver.qa.git@) is a submodule of the "Jessie2":/projects/astraver/repository repository. It contains several new test sets and the corresponding new testing script (in OCaml) that is based on the "Why3 proof replayer":http://why3.lri.fr/doc-0.85/manual007.html#sec53. * "Frama-C":/projects/astraver/repository/framac (@git clone https://forge.ispras.ru/git/astraver.frama-c.git@) has two branches: -- "@master@":/projects/astraver/repository/framac -- this is a dummy branch with each commit corresponding to an upstream release of Frama-C starting from "@Fluorine 3 20130601@" (commit:framac|16a2903f) -- "@20140301@":/projects/astraver/repository/framac?utf8=✓&rev=20140301 -- references the patched version of Frama-C @Fluorine 3 20130601@ which is required by Jessie2 (due to several small extensions to the ACSL specification language such as named string literals) * "Why3":/projects/astraver/repository/why3 (@git clone https://forge.ispras.ru/git/astraver.why3.git@) has two branches: -- "@master@":/projects/astraver/repository/why3 -- a periodically updated mirror of the INRIA official Why3 Git repository''s "master branch":https://gforge.inria.fr/scm/browser.php?group_id=2990 -- "@patched@":/projects/astraver/repository/why3?utf8=✓&rev=patched -- the periodically merged patched version of the Why3 platform with several small unmerged changes (primarily explanation fixes) * "OPAM-repository":/projects/astraver/repository/opam-repository (@git clone https://forge.ispras.ru/git/astraver.opam-repository.git@) is the above mentioned OPAM repository