SMACK translates LLVM bitcode files to the Boogie language (an intermediate verification language) allowing it to support any language that LLVM supports (mostly C/C++ in this paper).
SMACK implements one key optimization: using alias analysis to partition the heap (and pointers into the heap) so that objects that could not be confused are in separate sub-heaps.
Notes related to SMACK: Decoupling source language details from verifier implementations
Papers related to SMACK: Decoupling source language details from verifier implementations
- Verifying constant-time implementations [almeida:security:2016]
- Verifying Rust programs with SMACK [baranowski:atva:2018]
- Boogie: A modular reusable verifier for object-oriented programs [barnett:fmco:2005]