A Fast Verified Liveness Analysis in SSA form
Proofs and experiments

Paper

Jean-Christophe Léchenet, Sandrine Blazy, David Pichardie. A Fast Verified Liveness Analysis in SSA form. IJCAR 2020. To appear.
[.pdf]

Source code

Download the Coq development and browse our experiments' results.

Main files

The properties of the labeling on the dominance tree have been inserted in preexisting files of CompCertSSA. They are stated in SSA and proved in SSAvalidator_proof (except, as mentioned in the paper, the completeness of the dominance test whose proof is ongoing but is for now admitted).

Experiments

As indicated in the paper, all tests were done on a Dell Latitude 7490 with an Intel Core i7-8650U processor at 1.90GHz and 16 GB of memory.

The version of Coq used in this work is version 8.7.2 (February 2018) compiled with OCaml 4.07.1. Our development depends on library menhir, version 20180528 (please note that recent versions of menhir are not compatible).

  1. Install the dependencies
    We recommend using the opam package manager. The following snippet creates a new environment (called a "switch") named "CompCertSSA", with OCaml version 4.07.1, and installs the correct versions of coq and menhir inside this environment.
          opam switch create CompCertSSA 4.07.1
          eval $(opam env)
          opam install coq.8.7.2 menhir.20180528
  2. Decompress the archive
  3. Compile compcertSSA
    configure must be given the target architecture. For instance,
          cd compcertSSA_ijcar20/compcertSSA
          ./configure x86_64-linux
          make all
    or
          cd compcertSSA_ijcar20/compcertSSA
          ./configure x86_64-macosx
          make all
  4. Run experiments (after having compiled compcertSSA)
    Note that running the experiments takes about 30 minutes.
          cd compcertSSA_ijcar20/benchs
          ./make_ten_benchs.sh
  5. Display experiments
    Due to security restrictions of web browsers, just opening the html file does not work. The file has to be delivered by a server. Here is one way to do it.
          cd compcertSSA_ijcar20/benchs
          python3 -m http.server --bind localhost
    Then access with your favorite browser the address http://localhost:8000/benchs.html.