2016 · 34 citations · 6 references
ComputingComputer EngineeringComputer ScienceCompilersFormal MethodsSoftware EngineeringIntermediate RepresentationVerificationIntermediate Representation DesignSoftware VerificationVerification Environment
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 language 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
6
Automated Whitebox Fuzz Testing.
Patrice Godefroid, Michael Y. Levin, David A. Molnar · 2008 · 1.1K citations
The SMT-LIB Standard Version 2.0
Clark Barrett, Aaron Stump, Cesare Tinelli · 2010 · 722 citations
Boogie: a modular reusable verifier for object-oriented programs
Mike Barnett, Bor-Yuh Evan Chang, Robert DeLine et al. · 2006 · 244 citations