This research group focuses on mechanised language specification and program verification. We are exploring what it means to build, evaluate, and trust a fully mechanised language specification, using JavaScript as the real-world example language. We are developing library specifications which must be robust with respect to the environment: implementations should not leak; and specifications should be useful to the client. We are developing compositional program reasoning techniques that scale, leading to automatic tools for verifying properties of programs. Our current focus is on modern concurrent separation logics, the development of tools for compositional symbolic analysis using the multi-language platform Gillian, and the specification and verification of Web programs. Much of our work is based on Separation Logic. See details of our fourth-year/MSc course here.

Concurrency Compositional Symbolic Execution Gillian Web Programs

Recent Publications

  1. Gillian Debugging: Swinging Through the (Compositional Symbolic Execution) Trees

    Proceedings of the 32nd International Conference on Tools and Algorithms for the Construction and Analysis of Systems, held as part of the International Joint Conferences on Theory and Practice of Software (TACAS 2026), pp. 195–214

  2. Designing and Maintaining an Efficient WebAssembly Mechanisation

    Ph.D. Thesis, Imperial College London

  3. Compositional Symbolic Execution for the Next 700 Memory Models

    Proc. ACM Program. Lang., vol. 9(OOPSLA2)

  4. Progressful Interpreters for Efficient WebAssembly Mechanisation

    Proc. ACM Program. Lang., vol. 9(POPL)

  5. Matching Plans for Frame Inference in Compositional Reasoning

    38th European Conference on Object-Oriented Programming (ECOOP 2024), pp. 26:1–26:20