SMACK software verification toolchain

Montgomery Carter, Shaobo He, Jonathan Whitaker, Zvonimir Rakamarić, Michael Emmi
2016 Proceedings of the 38th International Conference on Software Engineering Companion - ICSE '16  
Tool prototyping is an essential step in developing novel software verification algorithms and techniques. However, implementing a verifier prototype that can handle real-world programs is a huge endeavor, which hinders researchers by forcing them to spend more time engineering tools, and less time innovating. In this paper, we present the SMACK software verification toolchain. The toolchain provides a modular and extensible software verification ecosystem that decouples the front-end source
more » ... guage details from backend verification algorithms. It achieves that by translating from the LLVM compiler intermediate representation into the Boogie intermediate verification language. SMACK benefits the software verification community in several ways: (i) it can be used as an off-the-shelf software verifier in an applied software verification project, (ii) it enables researchers to rapidly develop and release new verification algorithms, (iii) it allows for adding support for new languages in its front-end. We have used SMACK to verify numerous C/C++ programs, including industry examples, showing it is mature and competitive. Likewise, SMACK is already being used in several existing verification research prototypes. Our demonstration of SMACK can be found on YouTube at the following address: https://youtu.be/SPPSC1KdRzs
doi:10.1145/2889160.2889163 dblp:conf/icse/CarterHWRE16 fatcat:6i63bykqqnfb5c4ex4jws66iua