Stepwise refinement of heap-manipulating code in Chalice
Author(s)Leino, K. Rustan M.; Yessenov, Kuat T
MetadataShow full item record
Stepwise refinement is a well-studied technique for developing a program from an abstract description to a concrete implementation. This paper describes a system with automated tool support for refinement, powered by a state-of-the-art verification engine that uses an SMT solver. Unlike previous refinement systems, users of the presented system interact only via declarations in the programming language. Another aspect of the system is that it accounts for dynamically allocated objects in the heap, so that data representations in an abstract program can be refined into ones that use more objects. Finally, the system uses a language with familiar imperative features, including sequential composition, loops, and recursive calls, offers a syntax with skeletons for describing program changes between refinements, and provides a mechanism for supplying witnesses when refining non-deterministic programs.
DepartmentMassachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory
Formal Aspects of Computing
Leino, K. Rustan M., and Kuat Yessenov. “Stepwise Refinement of Heap-Manipulating Code in Chalice.” Formal Aspects of Computing 24.4–6 (2012): 519–535.
Author's final manuscript