Adam Chlipala
E-mail: adamc@hcoop.net

I finished my PhD in Computer Science at Berkeley in 2007. My research interests center on programming languages and computer theorem proving. I received a Master of Science degree in CS from Berkeley in 2004 and a Bachelor of Science in CS from CMU in 2003.

I'm currently doing a part-time postdoc with Greg Morrisett at Harvard. In the other half of my time, I'm working on a stealth-mode Internet start-up company built around type theory.

Certified Compilers Now!

Starting with my thesis research, I've been developing the Lambda Tamer library for programming language formalization in Coq. I'm working towards a certified compiler for core ML; that is, a compiler with a machine-checked proof that it preserves program meanings. I follow a somewhat unusual style, including a few key elements:

  1. Using dependently-typed abstract syntax to combine syntax with typing rules, so that program transformations can be verified as type-preserving through simple type checking
  2. Formalizing abstract syntax using a new technique called parametric higher-order abstract syntax, which represents object language variable binders with meta language binders, while still making it possible to write a variety of useful recursive, pattern-matching functions over syntax
  3. Using foundational type-theoretic semantics instead of the more popular operational semantics, so that formalized object languages can inherit almost all of their dynamic semantics from Coq's Calculus of Inductive Constructions
  4. Performing semantic preservation proofs using proof by decision procedure, where manual specification of the details of proofs is avoided in favor of writing custom proof-producing decision procedures in Coq's Turing-complete Ltac language

Relevant recent papers:

  1. Parametric Higher-Order Abstract Syntax for Mechanized Semantics, ICFP'08
  2. A Certified Type-Preserving Compiler from Lambda Calculus to Assembly Language, PLDI'07

Other Research

The Standard Stuff

Software

...and All the Rest