Huu Hai Nguyen, Viktor Kuncak, and Wei Ngan Chin.
Runtime checking for separation logic.
Technical Report LARA-REPORT-2007-003, EPFL, 2007.
Separation logic is a popular approach for specifying
properties of recursive mutable data
structures. Several existing systems verify a
subclass of separation logic specifications using
static analysis techniques. Checking data structure
specifications during program execution is an
alternative to static verification: it can enforce
the sophisticated specifications for which static
verification fails, and it can help debug incorrect
specifications and code by detecting concrete
counterexamples to their validity. This paper
presents Separation Logic Invariant ChecKer (SLICK),
a runtime checker for separation logic
specifications. We show that, although the recursive
style of separation logic predicates is well suited
for runtime execution, the implicit footprint and
existential quantification make efficient runtime
checking challenging. To address these challenges we
introduce a coloring technique for efficiently
checking method footprints and describe techniques
for inferring values of existentially quantified
variables. We have implemented our runtime checker
in the context of a tool for enforcing
specifications of Java programs. Our experience
suggests that our runtime checker is a useful
companion to a static verifier for separation logic
specifications.
[ bib ]
Back