arXiv · 1004.2884
HMC: Verifying Functional Programs Using Abstract Interpreters
Abstract
We present Hindley-Milner-Cousots (HMC), an algorithm that allows any interprocedural analysis for first-order imperative programs to be used to verify safety properties of typed higher-order functional programs. HMC works as follows. First, it uses the type structure of the functional program to generate a set of logical refinement constraints whose satisfaction implies the safety of the source program. Next, it transforms the logical refinement constraints into a simple first-order imperative program that is safe iff the constraints are satisfiable. Thus, in one swoop, HMC makes tools for invariant generation, e.g., based on abstract domains, predicate abstraction, counterexample-guided refinement, and Craig interpolation be directly applicable to verify safety properties of modern functional languages in a fully automatic manner. We have implemented HMC and describe preliminary experimental results using two imperative checkers -- ARMC and InterProc -- to verify OCaml programs. Thus, by composing type-based reasoning grounded in program syntax and state-based reasoning grounded in abstract interpretation, HMC opens the door to automatic verification of programs written in modern programming languages.
Explore related subjects
Keep this discovery
Ranjit Jhala, Rupak Majumdar, Andrey Rybalchenko. 2010-12-30. HMC: Verifying Functional Programs Using Abstract Interpreters. https://arxiv.org/abs/1004.2884
Cite the original work for its findings. Save a collection to share your selection of sources.