Skip to content

chinuhub/ProofTraPar

Repository files navigation

ProofTraPar is a tool to verify correctness of concurrent programs by partitioning set of traces in a finite number of classes. Only one trace per class is proved correct to show the correctness of all other traces of that class. 

Prerequisite:

1. This tool uses z3 smt solver and libfaudes library for Finite automat operations.  These libraries have been bundled with the source code and there is no need to install them separately.

2. You need to have a C++ compiler that supports C++11 standard.

Test Cases

1. We compared this tool's performance against THREADER and Lazy-CSeq, previous years winner of software verification competition. Our current implementation does not take input from a C soure file but reads a customized format. We plan to change it in future releases. For comparison, we uploaded those two tools also with this bundle. They can be found in a folder named BenchmarkComparison. 

2. We also uploaded the example programs which can be used with those tools. They can be found in a subdirectory named Example.

3. We use Lazy-CSeq with CBMC as backend. CBMC is also present in the tool directory of Lazy-CSeq. You might need to set PATH variable pointing to the current directory in order to run it.

4. We currently have only 32 bit executable of THREADER. This is also present in a subdirectory called cream inside BenchmarkComparison folder. If you have 64 bit machine then you need to install ia32 library on ubnutu to run it properly. This can be installed as following on ubuntu 14.04
http://stackoverflow.com/questions/23182765/how-to-install-ia32-libs-in-ubuntu-14-04-lts-trusty-tahr

5. In the language of input programs we use lcas(x)(v1)(v2) to represent blocking lcas command. Its semantics as following; 
if x=v1 then assign v2 to x else block. This is used to model lock command originally specified in the paper as lcas(lockvar)(0)(1).

6. Paper corresponding to this tool is uploaded a in arxiv with name 'From Traces To Proofs: Proving Concurrent Programs Safe'.

Compiling and Running ProofTraPar

1. run ./configure
2. run make
3. Executable ProofTraPar will be generated inside src directory.
4. use the following command

src/ProofTraPar BenchmarkComparison/Examples/ProofTraParFormat/peterson.true.input

to run this tool on examples. 





About

A tool to prove concurrent programs safe by partitioning the set of traces in a small number of equivalence classes

Resources

License

Stars

Watchers

Forks

Packages

No packages published