diffblue / 2ls

Static Analyzer and Verifier
http://www.cprover.org/2LS
Other
45 stars 25 forks source link

Build Status

About

2LS ("tools") is a verification tool for C programs. It is built upon the CPROVER framework (cprover.org), which supports C89, C99, most of C11 and most compiler extensions provided by gcc and Visual Studio. It allows verifying array bounds (buffer overflows), pointer safety, exceptions, user-specified assertions, and termination properties. The analysis is performed by template-based predicate synthesis and abstraction refinements techniques.

License

4-clause BSD license, see LICENSE file.

Overview

2LS reduces program analysis problems expressed in second order logic such as invariant or ranking function inference to synthesis problems over templates. Hence, it reduces (an existential fragment of) 2nd order Logic Solving to quantifier elimination in first order logic.

The current tool has following capabilities:

Releases

Download using git clone http://github.com/diffblue/2ls; cd 2ls; git checkout 2ls-x.y

Software Verification Competition Contributions

Installation

cd 2ls; ./install.sh

Run src/2ls/2ls

Command line options

The default abstract domain are intervals. If no options are given a context-insensitive interprocedural analysis is performed. For context-sensitivity, add --context-sensitive.

Other analyses include:

Currently the following abstract domains are available:

Since release 0.6:

Since release 0.7:

Since release 0.10:

Interprocedural Termination Analysis

Is supported by release 0.1 and >=0.3.

Since release 0.6:

Features in development

Publications

Contributors

Contact

Peter Schrammel