Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 23 days 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 12 years ago)
- Default Branch: main
- Last Pushed: 2024-09-12T23:27:33.000Z (about 2 months ago)
- Last Synced: 2024-09-30T03:41:05.387Z (about 1 month ago)
- Topics: c, c-plus-plus, llvm, rust, smt, verification, verification-toolchain, verifier
- Language: C
- Homepage: http://smackers.github.io
- Size: 7.62 MB
- Stars: 427
- Watchers: 24
- Forks: 82
- Open Issues: 109
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: docs/code-of-conduct.md
Awesome Lists containing this project
README
[![main branch ci status](https://github.com/smackers/smack/workflows/SMACK%20CI/badge.svg?branch=main)](https://github.com/smackers/smack/actions)
[![develop branch ci status](https://github.com/smackers/smack/workflows/SMACK%20CI/badge.svg?branch=develop)](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:[email protected]) or
[Michael](mailto:[email protected]) 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:[email protected]), [Zvonimir](mailto:[email protected]), 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)