Reasoning About Multi-Stage Programs
2012 (English)In: Programming Languages and Systems: 21st European Symposium on Programming, ESOP 2012, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2012, Tallinn, Estonia, March 24 - April 1, 2012. Proceedings / [ed] Helmut Seidl, Berlin: Springer Publishing Company, 2012, 357-376 p.Conference paper (Refereed)
We settle three basic questions that naturally arise when verifying multi-stage functional programs. Firstly, does adding staging to a language compromise any equalities that hold in the base language? Unfortunately it does, and more care is needed to reason about terms with free variables. Secondly, staging annotations, as the name “annotations” suggests, are often thought to be orthogonal to the behavior of a program, but when is this formally guaranteed to be true? We give termination conditions that characterize when this guarantee holds. Finally, do multi-stage languages satisfy useful, standard extensional facts—for example, that functions agreeing on all arguments are equivalent? We provide a sound and complete notion of applicative bisimulation, which establishes such facts or, in principle, any valid program equivalence. These results greatly improve our understanding of staging, and allow us to prove the correctness of quite complicated multi-stage programs. © 2012 Springer-Verlag.
Place, publisher, year, edition, pages
Berlin: Springer Publishing Company, 2012. 357-376 p.
, Lecture Notes in Computer Science, ISSN 0302-9743 ; 7211
Multi-stage programming, verification, bisimulation
Engineering and Technology
IdentifiersURN: urn:nbn:se:hh:diva-17088DOI: 10.1007/978-3-642-28869-2_18ISI: 000310871200018ScopusID: 2-s2.0-84859129520ISBN: 978-3-642-28868-5OAI: oai:DiVA.org:hh-17088DiVA: diva2:488415
21st European Symposium on Programming, ESOP 2012, held as part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2012, Tallinn 24 March-1 April, 2012