Stepwise refinement of heap-manipulating code in Chalice
Author(s)
Leino, K. Rustan M.; Yessenov, Kuat T
Download165_2012_Article_254.pdf (584.4Kb)
PUBLISHER_POLICY
Publisher Policy
Article is made available in accordance with the publisher's policy and may be subject to US copyright law. Please refer to the publisher's site for terms of use.
Terms of use
Metadata
Show full item recordAbstract
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.
Date issued
2012-06Department
Massachusetts Institute of Technology. Computer Science and Artificial Intelligence LaboratoryJournal
Formal Aspects of Computing
Publisher
Springer-Verlag
Citation
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.
Version: Author's final manuscript
ISSN
0934-5043
1433-299X