Skip to search boxSkip to navigationSkip to main content

Calculating Certified Compilers for Non-deterministic Languages

  • University of Copenhagen
Research Output:
Conference Article in Proceeding or Book/Report chapter
Book chapter
Peer-review

Open access

Publication Information

Output type

Research Output:
Conference Article in Proceeding or Book/Report chapter
Book chapter
Peer-review

Original language

Undefined/Unknown

Pages from-to (Number of pages)

Pages 159-186 (28 pages)

Publication milestones

  • Published - 01/06/2015

Publication status

Published - 01/06/2015

Volume

9129

Publisher

Springer, United States, Germany
978-3-319-19796-8

Publication IDs

  • Scopus: 84937510940

Host publication title

Mathematics of Program Construction

Host publication editors

  • Ralf Hinze
  • Janis Voigtländer

Abstract

Reasoning about programming languages with non-deterministic semantics entails many difficulties. For instance, to prove correctness of a compiler for such a language, one typically has to split the correctness property into a soundness and a completeness part, and then prove these two parts separately. In this paper, we present a set of proof rules to prove compiler correctness by a single proof in calculational style. The key observation that led to our proof rules is the fact that the soundness and completeness proof follow a similar pattern with only small differences. We condensed these differences into a single side condition for one of our proof rules. This side condition, however, is easily discharged automatically by a very simple form proof search. We implemented this calculation framework in the Coq proof assistant. Apart from verifying a given compiler, our proof technique can also be used to formally derive -- from the semantics of the source language -- a compiler that is correct by construction. For such a derivation to succeed it is crucial that the underlying correctness argument proceeds as a single calculation, as opposed to separate calculations of the two directions of the correctness property. We demonstrate our technique by deriving a compiler for a simple language with interrupts.

Publication metrics

PlumX, opens in new tab

Captures
5
Citations
1