A Compositional Natural Semantics and Hoare Logic for Low-Level Languages
Ando Saabas, Tarmo Uustalu · Electronic Notes in Theoretical Computer Science · 2006
The advent of proof-carrying code has generated significant interest in reasoning about low-level languages. It is widely believed that low-level languages with jumps must be difficult to reason about by being inherently non-modular. We argue that this is untrue. We take it seriously that, differently from statements of a high-level language, pieces of low-level code are multiple-entry and multiple-exit. And we define a piece of code to consist of either a single labelled instruction or a finite union of pieces of code. Thus we obtain a compositional natural semantics and a matching Hoare logic for a basic low-level language with jumps. By their simplicity and intuitiveness, these are comparable to the standard natural semantics and Hoare logic of While . The Hoare logic is sound and complete wrt. the semantics and allows for compilation of proofs of the Hoare logic of While .