Generally, my work is on finding the right mathematical
frameworks to concisely, correctly and easily define sound,
precise and efficient program analyses for modern programming
languages. There are three (or four) dimensions of
challenge for scaling such analyses.

Efficiency

Verifiability

Precision

(Grokability)

There is a promising approach to systematically and easily
construct provably sound and precise analyses by
transforming abstract machines into abstract abstract
machines, but the method lacks maturity. My work seeks to
extend this method by importing innovations in both worlds of
abstract machines (programming language interpreters) and
unproven, but "works in practice" methods for improving
analysis performance (or proven, but only for first-order
languages). A primary constraint is maintaining the systematic
and intuitive methods for derivation. The power is behind the
intuitions, so a secondary goal in my work is to bring
powerful analysis to a larger audience.

Model-checking as contract checking:
Temporal contracts allow programmers to separately specify temporal properties their programs should satisfy by imposing a runtime monitor for enforcing these safety properties.
Abstract interpretation of a language with temporal contracts is (sound) model-checking that language (ongoing)

The essence of summarization-based analysis:
Pushdown flow analysis for higher-order languages has two
combating formalisms that are both unfortunately
complex. There is a systematic approach to derive pushdown
analyses that is simple and does not
need expert knowledge on reachability queries for
context-free languages to implement.

Logic & Computation 2800 (Fall 2009)

My interests are mostly in the realm of semantics and formal methods,
dealing with flow analysis, interactive theorem proving and
satisfiability modulo theories (SMT). I have done work with macros and
binding specification. A pie in the sky very nice thing to see done
would be a theorem prover built in the tower of languages style, with
varying levels of abstraction as the tower grows, and an accompanying
theory of how one reasons about macros. In my free time, I enjoy
playing the piano and continuing my studies in algebra and
combinatorics. I also speak Japanese and enjoy movies and video
games. I cook and bake very tasty food.

I maintain a blog that is sporadically updated with theorems I find
interesting, or how I have hacked around a sparsely documented or buggy
API/application so that others may use the power of Google to solve
their problems.