I am interested in using recent results in computer science theory to make real programming easier. In particular using resource reasoning to reason about web programs. Most recently, I have been working with Philippa Gardner and Sergio Maffeis on program reasoning for JavaScript.
We introduce a program logic for reasoning about a broad
subset of JavaScript, including challenging features such
as prototype inheritance and with. We adapt
ideas from separation logic to provide tractable reasoning
about JavaScript code: reasoning about easy programs is
easy; reasoning about hard programs is possible. We prove
a strong soundness result. All libraries written in our
subset and proved correct with respect to their
specifications will be well-behaved, even when called by
arbitrary JavaScript code.
DOM. Every modern web browser contains a DOM implementation which allows JavaScript programs to read and alter the web page that the user is currently viewing. JavaScript and DOM are extremely successful, and this success may be in part due to their highly dynamic and tightly integrated nature. However, this very nature hinders formal program analysis and tool development. Even the implementation independent specification that defines DOM is largely written in the English language, and not using any formal system.
While client-side web programming was once a simple
discipline of form validation and interface trickery, it
is fast becoming a far more serious business encompassing
application development for the emerging ubiquitous
cloud
. As this evolution gains pace there is an
increasing demand for client-side tool support of the sort
commonly enjoyed by enterprise
programmers, working in
more easily analysed languages such as Java.
This thesis makes use of recent developments in program reasoning using context logic to provide the first formal, compositional specification for the Fundamental Interfaces of DOM Core Level 1. It presents both a big-step operational semantics for the necessary operations of the library and a context logic for reasoning about programs which use the library. Finally, it presents example programs that use the library and shows how context logic can be used to prove useful properties of those programs.
In January 2012, I presented my JavaScript work at several venues in the US. At Mozilla, the talk was recorded. You can watch that talk here, and follow along with the slides here.
I am a Research Associate working in Professor Philippa Gardner's group. You can find my CV here and my research interests and publication list above.