|
1 | | -[SMACK](http://smackers.github.com/smack/) is a modular software verification |
2 | | -infrastructure. The main purpose of SMACK is to lower the bar for experimenting |
3 | | -with software verification and quickly prototyping custom software verifiers. |
4 | | -To achieve that, SMACK relies on the well-known [LLVM](http://www.llvm.org) |
5 | | -compiler infrastructure for its front-end, and |
6 | | -[Boogie](http://boogie.codeplex.com) intermediate verification language for its |
7 | | -back-end. Such separation of concerns and modularity make implementing various |
8 | | -additions and extensions to SMACK relatively easy. Furthermore, the open |
9 | | -architecture of SMACK encourages prototyping custom software verifiers on top |
10 | | -of SMACK. |
| 1 | +At its core, SMACK is a translator from the [LLVM](http://www.llvm.org) |
| 2 | +compiler's popular intermediate representation (IR) into the |
| 3 | +[Boogie](http://boogie.codeplex.com) intermediate verification language (IVL). |
| 4 | +Sourcing LLVM IR exploits an increasing number of compiler frontends, |
| 5 | +optimizations, and analyses. Targeting Boogie exploits a canonical platform |
| 6 | +which simplifies the implementation of algorithms for verification, model |
| 7 | +checking, and abstract interpretation. The main purpose of SMACK is to decouple |
| 8 | +the implementations of verification algorithms from the details of source |
| 9 | +languages, and enable rapid prototyping on production code. Our initial |
| 10 | +experience verifying C language programs is encouraging: SMACK is competitive |
| 11 | +in SV-COMP benchmarks, is able to translate large programs (100 KLOC), and is |
| 12 | +used in several verification research prototypes. |
11 | 13 |
|
12 | 14 | ## A Quick Demo |
13 | 15 |
|
|
0 commit comments