https://github.com/smackers/smack
SMACK Software Verifier and Verification Toolchain
https://github.com/smackers/smack
c c-plus-plus llvm rust smt verification verification-toolchain verifier
Last synced: 7 months ago
JSON representation
SMACK Software Verifier and Verification Toolchain
- Host: GitHub
- URL: https://github.com/smackers/smack
- Owner: smackers
- License: other
- Created: 2012-07-30T15:32:57.000Z (over 13 years ago)
- Default Branch: main
- Last Pushed: 2025-04-17T21:30:29.000Z (8 months ago)
- Last Synced: 2025-04-18T11:51:34.617Z (8 months ago)
- Topics: c, c-plus-plus, llvm, rust, smt, verification, verification-toolchain, verifier
- Language: C
- Homepage: http://smackers.github.io
- Size: 7.66 MB
- Stars: 436
- Watchers: 23
- Forks: 83
- Open Issues: 110
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: docs/code-of-conduct.md
Awesome Lists containing this project
- awesome-c-zh - SMACK - 模块化软件验证工具链和独立的软件验证器。目前仅适用于使用Clang编译的程序。[](https://spdx.org/licenses/MIT.html) (工具 / YAML)
- awesome-c - SMACK - Modular software verification toolchain and a self-contained software verifier. Currently only works with programs compiled using Clang. [MIT](https://spdx.org/licenses/MIT.html) (Tools / YAML)
- awesome-llvm - smack - SMACK Software Verifier and Verification Toolchain (Starchart)
README
[](https://github.com/smackers/smack/actions)
[](https://github.com/smackers/smack/actions)

SMACK is both a *modular software verification toolchain* and a
*self-contained software verifier*. It can be used to verify the assertions
in its input programs. In its default mode, assertions are verified up to a
given bound on loop iterations and recursion depth; it contains experimental
support for unbounded verification as well. SMACK handles complicated feature
of the C language, including dynamic memory allocation, pointer arithmetic, and
bitwise operations.
Under the hood, SMACK is a translator from the [LLVM](http://www.llvm.org)
compiler's popular intermediate representation (IR) into the
[Boogie](https://github.com/boogie-org/boogie) intermediate verification language (IVL).
Sourcing LLVM IR exploits an increasing number of compiler front-ends,
optimizations, and analyses. Currently SMACK only supports the C language via
the [Clang](http://clang.llvm.org) compiler, though we are working on providing
support for additional languages. Targeting Boogie exploits a canonical
platform which simplifies the implementation of algorithms for verification,
model checking, and abstract interpretation. Currently, SMACK leverages the
[Boogie](https://github.com/boogie-org/boogie) and [Corral](https://github.com/boogie-org/corral)
verifiers.
See below for system requirements, installation, usage, and everything else.
*We are very interested in your experience using SMACK. Please do contact
[Zvonimir](mailto:zvonimir@cs.utah.edu) or
[Michael](mailto:michael.emmi@gmail.com) with any possible feedback.*
### Support
* For general questions, first consult the [FAQ](docs/faq.md).
* If something is otherwise broken or missing, open an [issue](https://github.com/smackers/smack/issues).
* As a last resort, send mail to
[Michael](mailto:michael.emmi@gmail.com), [Zvonimir](mailto:zvonimir@cs.utah.edu), or both.
* To stay informed about updates, you can watch SMACK's Github page.
### Acknowledgements
SMACK project has been partially supported by funding from the National Science
Foundation, VMware, Amazon, and Microsoft Research. We also rely on University of
Utah's [Emulab](http://www.emulab.net/) infrastructure for extensive
benchmarking of SMACK.
### Table of Contents
1. [System Requirements and Installation](docs/installation.md)
1. [Running SMACK](docs/running.md)
1. [Demos](docs/demos.md)
1. [FAQ](docs/faq.md)
1. [Inline Boogie Code](docs/boogie-code.md)
1. [Contribution Guidelines](CONTRIBUTING.md)
1. [Projects](docs/projects.md)
1. [Publications](docs/publications.md)
1. [People](docs/people.md)