Adam Chlipala

Harvard University

Is there anything to be done about the low reliability of software systems?  Formal verification has already become part of standard practice in some domains where the cost of failure is especially high. 

Can the cost of verification be brought low enough that we can make it part of the standard development process for our servers, desktops, and so on?  This talk summarizes my experience addressing this question through formal, machine-checked proof about some of the key low-level pieces of software systems.


I will discuss work in verifying the correctness of compilers and of low-level software like memory management and thread scheduling libraries.  In each case, practical solutions have required both the "science" of choosing the right mathematical abstractions to frame the problem and the "art" of proof engineering to support code re-use and automation in proofs.  Both of the examples I will discuss rely critically for their "science" pieces on higher-order logic, which allows logical quantifiers to range over functions and predicates, rather than just the basic mathematical objects supported by first-order logic.  The "art" piece applies in dealing with the undecidability of the very expressive theories that are natural for these problems.  My work has demonstrated the practicality of verification using expressive higher-order specifications, lowering the human cost of verification by an order of magnitude or more for several important kinds of software infrastructure.



Adam Chlipala's research applies computer theorem-proving and type systems to problems throughout the software stack, from assembly to high-level, higher-order languages.  His focus is reducing the human cost of mathematically rigorous assurance about software.  He finished his PhD at Berkeley in 2007, with a thesis on compiler verification for higher-order source languages.  Since starting as a postdoc at Harvard, he has continued that line of work, as well as getting involved with semi-automated correctness verification for imperative programs via separation logic, first with the Ynot project, which focuses on high-level functional programs, and more recently with the Bedrock project, which deals with assembly-level reasoning.  Adam also has a longstanding interest in web application programming, including the development of several domain-specific languages.  Through his company Impredicative LLC, he has recently gotten involved in consulting based on his latest web language Ur/Web.


B17 Upson Hall

Tuesday, April 19, 2011

Refreshments at 3:45pm in the Upson 4th Floor Atrium


Computer Science


Spring 2011

Formal Verification of Software Infrastructure:

From Science to Engineering