Compiling Concurrency Correctly: Cutting Out the Middle Man
Liyang HU and Graham Hutton. Submitted to the Symposium on Trends in Functional Programming, 2009.
The standard approach to proving compiler correctness for concurrent languages requires the use of multiple translations into an intermediate process calculus. We present a simpler approach that avoids the need for such an intermediate language, using a new method that allows us to directly establish a bisimulation between the source and target languages. We illustrate the technique on two small languages, using the Agda system to present and formally verify our compiler correctness proofs.