Seminar 17 August 10:00, 2012

Type Theory, Certifi ed Programming and Compiler Veri fication

 

The goal of this talk is to show how modern theorem provers can be used to reason about programming languages in general and compilers in particular. I introduce Coq, an interactive theorem prover that implements a higher order lambda calculus suited for both programming and proving. Using the example of a simple imperative programming language, I discuss two approaches to operational semantics and show how they can be mechanized in Coq. I then present a Coq implementation of a simple compiler to virtual machine code and a mechanized proof of its correctness based on the formalized semantics.