Semantics-based generation of verification conditions via program specialization
Tool
HOWTO generate the VCs with VeriMAP
-----------------------------------
Quick start
-----------
Download VeriMAP from http://map.uniroma2.it/vcgen/
and run the following commands:
tar -zxvf VeriMAP-linux_x86_64.tar.gz
cd VeriMAP-linux_x86_64
Usage
-----
Getting help:
./VeriMAP --help
Generating the VCs by using the interpreter for the small-step semantics (SSsf):
./VeriMAP example.c --vcg=vcg_SSsf.iteration --source-format C
Generating the VCs by using the interpreter for the multi-step semantics (MS):
./VeriMAP example.c --vcg=vcg_MS.iteration --source-format C
The generated VCs can be found in OutProgs-vcg.
Generating the VCs and converting them to the specified format:
./VeriMAP example.c --vcg=vcg_SSsf.iteration --source-format C --convert-to $FORMAT
where $FORMAT is either
'horn' (e.g., for the eldarica and qarmc solvers), or
'smt' (e.g., for the msatic3 solver), or
'z3-fixedpoints' (for the muZ with fixed-point constraints extension of the z3 solver).
The result of the translation process can be found in OutProgs-map2{horn,smt,z3}.
Removing non-linking variables:
./VeriMAP example.pl --transform=nlr.iteration
Constrained FAR (to be applied on the output obtained by using '--transform=nlv.iteration'):
./VeriMAP example.pl --transform=constrained-far.iteration
The result of the transformation process can be found in OutProgs-uft.