Publications - Adam Chlipala
Refereed journal articles
Refereed conference papers
Adam Chlipala.
A Verified Compiler for an Impure Functional Language.
Proceedings of the
37th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'10).
January 2010.
A case study in verifying a compiler to an idealized assembly language from an untyped source language with most of the key dynamic features of ML: functions, products, sums, mutable references, and value-carrying exceptions. Syntax is encoded with parametric higher-order abstract syntax (PHOAS), which makes it possible to avoid almost all bookkeeping having to do with binders and fresh name generation. The semantics of the object languages are encoded in a new substitution-free style. All of the proofs are automated with tactic programs that can keep working even after changing the definitions of the languages.
Adam Chlipala.
Parametric Higher-Order Abstract Syntax for Mechanized Semantics.
Proceedings of the
13th ACM SIGPLAN International Conference on Functional Programming (ICFP'08).
September 2008.
A new trick for encoding variable binders in Coq, along with an exploration of its consequences: almost trivial syntax and type-theoretic semantics for languages including such features as polymorphism and complicated binding structure (e.g., ML-style pattern matching); almost trivial type preservation proofs for compiler passes that don't need intensional analysis of variables; mostly-automated semantic correctness proofs about those passes, by way of adding an axiom to make the parametricity of CIC usable explicitly in proofs; and the ability to drop down to more traditional syntactic representations for more arduous but feasible proofs of the same properties, when intensional variable analysis is needed.
Adam Chlipala.
Modular Development of Certified Program Verifiers with a Proof Assistant.
Proceedings of the
11th ACM SIGPLAN International Conference on Functional Programming (ICFP'06).
September 2006.
I report on an experience using the Coq proof assistant to develop a program verification tool with a machine-checkable proof of full correctness. The verifier is able to prove memory safety of x86 machine code programs compiled from code that uses algebraic datatypes. The tool's soundness theorem is expressed in terms of the bit-level semantics of x86 programs, so its correctness depends on very few assumptions. I take advantage of Coq's support for programming with dependent types and modules in the structure of my development. The approach is based on developing a library of reusable functors for transforming a verifier at one level of abstraction into a verifier at a lower level. Using this library, it's possible to prototype a verifier based on a new type system with a minimal amount of work, while obtaining a very strong soundness theorem about the final product.
Bor-Yuh Evan Chang,
Adam Chlipala,
George C. Necula.
A Framework for Certified Program Analysis and Its Applications to Mobile-Code Safety.
Proceedings of the
7th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI'06).
January 2006.
We propose a new technique in support of the construction of efficient Foundational Proof-Carrying Code systems. Instead of suggesting that pieces of mobile code come with proofs of their safety, we instead suggest that they come with executable verifiers that can attest to their safety, as in our previous work on the Open Verifier. However, in contrast to that previous work, here we do away with any runtime proof generation by these verifiers. Instead, we require that the verifier itself is proved sound. To support this, we present a novel technique for extracting proof obligations about ML programs. Using this approach, we are able to demonstrate the first foundational verification technique for Typed Assembly Language with performance comparable to that of the traditional, uncertified TAL type checker.
Refereed workshop papers
Refereed poster sessions
Invited conference papers
Technical reports
Adam Chlipala.
An Untrusted Verifier for Typed Assembly Language.
MS Project Report.
Technical Report UCB/ERL M04/41.
UC Berkeley EECS Department.
2004.
A summary of my experiences developing a proof-generating TAL type checker within the Open Verifier framework. In the style of Foundational PCC, the soundness of this verifier and the proofs it generates is based on no assumptions about the TAL type system. This was one of the first projects to consider the runtime performance of Foundational PCC-style verification.