Stepwise refinement of heap-manipulating code in Chalice

K. Rustan M. Leino, Kuat Yessenov
2012 Formal Aspects of Computing  
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 stateof-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 novel aspect of the system is that it accounts for dynamically allocated objects in
more » ... e 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 object-oriented features, including sequential composition, loops, and recursive calls, offers a syntax with skeletons for describing program changes between refinements, and provides a mechanism for providing witnesses when using angelic non-determinism.
doi:10.1007/s00165-012-0254-3 fatcat:s5mgcqnkwbeupl2pilyvdjb524