Aarhus University Seal

The C standard formalized in Coq, what's next?

Friday, September 2, 2016 at 14:00 - 15:00
Place: 5335-016 Nygaard Peter Bøgh Auditorium


The C programming language is among the most widely used programming languages in the world due to its performance and portability benefits.

Unfortunately, many programs written in C suffer from bugs.  To remedy these issues, one could prove that programs written in C behave well.

However, to prove properties about C programs, one needs a mathematically precise specification of C.

As part of my PhD thesis, I have therefore developed CH2O: a mathematically precise specification of a large part of the C programming language based on the official ISO C11 standard.  CH2O consists of three versions of the C specification: a (small step) operational semantics, an executable semantics, and an axiomatic semantics based on separation logic.  Soundness and completeness theorems connecting these semantics, as well as numerous important properties validating the formal definitions, have all been proven using the Coq proof assistant.

In this talk I will give an overview of CH2O, and discuss the challenges that we have faced while scaling up formalization to large programming languages such as C.  Furthermore, I will discuss the importance of formalization of programming languages, and will talk about prospects for future research.


Robbert Krebbers received a PhD from Radboud University Nijmegen on developing a mathematically precise specification of the C programming language. He currently works as a postdoctoral researcher at Aarhus University on logics for reasoning about concurrent programs. His research interests include semantics of realistic programming languages, program verification, separation logic, type theory, proof assistants, and verified real number arithmetic.