Jules Jacobs

Assistant Professor of Computer Science, ETH Zürich

I work on programming languages and formal verification: type systems, program logics and automated verifiers for systems code, concurrent programs, computer networks and probabilistic programs. I'm looking for PhD students.

Before ETH, I was a visiting researcher at Jane Street and a postdoc at Cornell with Alexandra Silva and Nate Foster, and did my PhD at Radboud with Robbert Krebbers and Stephanie Balzer.

Some of my favourite things are: type theory, parametricity, SSA as a dataflow lattice, generating functions & Kirchhoff's matrix-tree theorem, differential forms & the Gauss-Bonnet theorem, star semirings, Lagrangian mechanics.

News: a preprint on dataflow analysis by pattern matching, with a video that explains it · papers on mode crossing in OxCaml (ICFP'26), exact inference for probabilistic programs (OOPSLA'26), network-enforced session types (ECOOP'26) and deciding serializability (TACAS'26) · the IPA Dissertation Award for my thesis · teaching the Software Engineering Seminar at ETH.

Jules Jacobs

Research projects

What Vox adds to OxCaml's modes: a totality axis (partial, total) for specs and lemmas, a ghostliness axis (ghost, real) for erased proofs, and the void layout for free ghost data. Below it, three stable patterns: loop(?i, 1), loop(?i, (?s, u)) and app(inc⟨u⟩), one analysis for fast code.

Safe and verified systems programming

The goal is systems code that is fast, safe, and checked against its specification. As AI agents write more of our code, checked specifications let people stay in charge of what that code does.

  • Mode Crossing ICFP'26PDFtalkcodeLets OxCaml strengthen the modes of values automatically when their type makes it safe, as for immutable data.
  • Stable patterns preprintPDFvideodemoOne analysis that finds what constant propagation, unboxing and closure analysis find separately.
  • Vox toolslidescodeChecks specifications at compile time on top of OxCaml, with refinement types and ghost proofs that are erased before code generation.
  • OxCaml languageplaygroundcourseJane Street's extension of OCaml for safe, fast systems programming; its modes track whether a value can escape its stack frame or be shared between threads.
  • Eggstract toolExtracts shared, acyclic DAGs from e-graphs, with a Rust library, a command-line tool and an optional CP-SAT backend.
A symbolic packet program from the KATch paper (Fig. 3): a decision diagram over the header fields a, b and c, with dashed edges for the default case.

Network verification and automata

We build verifiers that answer questions about networks, such as reachability and isolation, typically in well under a second, and the automata algorithms that they rest on.

  • KATch PLDI'24PDFtalkslidesdemocodeChecks NetKAT network specifications for properties like reachability and isolation, often in under a second.
  • StacKAT PLDI'25PDFvideoslidesdemocodeExtends NetKAT with a packet stack, with a decision procedure and complete axioms for program equivalence.
  • NEST ECOOP'26PDFcodeEnforces application protocols inside the network, with packet-level monitors generated from session types.
  • SER TACAS'26PDFcodeDecides whether programs in the SER language are serializable, giving a certificate or a counterexample.
  • Boa POPL'23PDFvideoslidescodeOne generic algorithm that minimizes many kinds of automata up to bisimilarity, also on large systems.
  • Petra toolA Petri-net reachability solver.
A connectivity graph from the paper (Fig. 1): threads T, T1 and T2 and channels C1 and C2, with red triangles showing which endpoint each blocked party is waiting on.

Deadlock freedom and verified concurrency

Programs that communicate over channels or share locks can deadlock. We design type systems and separation logics in which well-typed or verified programs never deadlock, and later work also verifies that programs follow their protocols and compute the right results. All proofs are mechanized in Coq/Rocq using Iris.

Discretization from the Slice paper (Fig. 2): a Gaussian sample compared against 0.1, 0.8 and 2.0 becomes a discrete distribution over four intervals.

Probabilistic programming

What a probabilistic program means, and how to compute its distribution exactly.

  • Slice OOPSLA'26PDFslidescodeRewrites continuous probabilistic programs into equivalent discrete ones that exact inference engines can run.
  • Paradoxes POPL'21PDFvideoslidescodeRemoves paradoxes of conditioning on measure-zero events by tracking infinitesimal probabilities.

Some of this work has found its way into industry:

If your company has software or infrastructure where stronger guarantees would help, I'd be glad to talk about working together, for example on a joint project or by hosting one of my students as an intern. Email me.

Students

Current PhD students. Fabian Lukas Grubmüller.

Prospective PhD students. Want to build proof assistants, verifiers, type systems or programming languages as a PhD student? Email me first, with [PhD] in the subject, your CV, a few lines about what you would like to work on and why, and one thing you have made or done that you are proud of: a program, a proof, a project or a piece of writing, with a link if there is one. The formal application goes through the department's doctoral program, or through the Direct Doctorate if you have a bachelor's degree.

Master's theses and semester projects. If you are a student at ETH, I supervise theses and projects in these areas. Email me with [Thesis] in the subject.

A strong mathematical background helps, as does experience with proof assistants, compilers or verification tools.

Publications

BibTeX for all papers: publications.bib

Preprint Dataflow Facts as Stable Patterns
One analysis that finds what constant propagation, unboxing and closure analysis find separately.
PDF video demo
OOPSLA'26 Type-Directed Discretization of Probabilistic Programs
Rewrites continuous probabilistic programs into equivalent discrete ones that exact inference engines can run.
PDF slides code
ICFP'26 Mode Crossing
Lets OxCaml strengthen the modes of values automatically when their type makes it safe, as for immutable data.
PDF talk code
ECOOP'26 NEST: Network Enforced Session Types
Enforces application protocols inside the network, with packet-level monitors generated from session types.
PDF code
TACAS'26 Deciding Serializability in Network Systems
Decides whether programs in the SER language are serializable, giving a certificate or a counterexample.
PDF code
PLDI'25 StacKAT: Infinite State Network Verification
Extends NetKAT with a packet stack, with a decision procedure and complete axioms for program equivalence.
PDF video slides demo code
OOPSLA'24 Multris: Functional Verification of Multiparty Message Passing in Separation Logic
A separation logic for proving programs correct that mix multiparty message passing with shared memory.
PDF code
PLDI'24 KATch: A Fast Symbolic Verifier for NetKAT
Checks NetKAT network specifications for properties like reachability and isolation, often in under a second.
PDF talk code
PhD Thesis Guarantees by Construction
Jules Jacobs
Languages and logics in which deadlock freedom, leak freedom and other guarantees follow by construction.
PDF talk code VERSEN 2025 award IPA Dissertation Award 2024
POPL'24 Deadlock-Free Separation Logic: Linearity Yields Progress for Dependent Higher-Order Message Passing
A separation logic for message passing in which deadlock and leak freedom follow from linearity alone.
PDF talk slides code
ICFP'23 Dependent Session Protocols in Separation Logic from First Principles
Builds dependent session protocols in separation logic on one-shot channels, in under 1000 lines of Coq.
PDF talk slides code
POPL'23 Higher-Order Leak and Deadlock Free Locks
Jules Jacobs, Stephanie Balzer
A λ-calculus with higher-order locks in which well-typed programs cannot deadlock or leak memory.
PDF video slides code POPL'23 distinguished paper
POPL'23 Fast Coalgebraic Bisimilarity Minimization
Jules Jacobs, Thorsten Wißmann
One generic algorithm that minimizes many kinds of automata up to bisimilarity, also on large systems.
PDF video slides code
ICFP'22 Multiparty GV: Functional Multiparty Session Types With Certified Deadlock Freedom
A functional language with multiparty session types in which well-typed programs are deadlock free.
PDF talk slides code
ECOOP'22 A Self-Dual Distillation of Session Types
Jules Jacobs
Adds only a fork construct to linear λ-calculus: enough to encode session types, and deadlock free.
PDF talk slides code
POPL'22 Connectivity Graphs: A Method for Proving Deadlock Freedom Based on Separation Logic
A method, mechanized in Coq, for proving that concurrent languages are free of deadlocks and memory leaks.
PDF talk slides code
Neurobiology of Aging Long-term ovarian hormone deprivation alters functional connectivity, brain neurochemical profile and white matter integrity in the Tg2576 amyloid mouse model of Alzheimer's disease
POPL'21 Paradoxes of Probabilistic Programming
And How to Condition on Events of Measure Zero with Infinitesimal Probabilities
Jules Jacobs
Removes paradoxes of conditioning on measure-zero events by tracking infinitesimal probabilities.
PDF video slides code

Teaching

ETH Zürich Research Topics in Software Engineering (2026), with Michalis Kokologiannakis and Ralf Jung.
Jane Street OxCaml Basics (2026), a three-hour course for interns and engineers.
Cornell Co-taught Certified Software Systems (2024) with Nate Foster.
Earlier Helped teach Program Verification (2022, 2023), Type Theory (2020–2022) and the MFOCS seminar (2021, 2022) at Radboud; and Software Verification at TU Delft (2020). Helped develop materials for a verification and separation logic course at Radboud. Co-supervised Menzo van Kessel's bachelor thesis on a type checker and interpreter for MPGV (2022) and Edoardo Putti's master thesis on mechanizing incorrectness separation logic in Coq (2020).

Academic Service

Organizing Iris Workshop 2026 at ISTA, with Michael Sammler
Program committees POPL'27, CSL'27, TFP'26, ICFP'25, PLDI'25, ECOOP'25, PLACES'25, HOPE'24; PLDI'27 and OOPSLA'26 Review Committees
Website chair ICFP'27 (co-chair), PLDI'27 (co-chair), ICFP'26, ICFP/SPLASH'25 (co-chair), ICFP'25 (co-chair), ICFP'24 (co-chair)
PLMW Social media chair since 2024; created the PLMW website (2025); committee of PLMW @ SPLASH/ISSTA'26
Mentoring SIGPLAN-M mentor (2023–2026)
Artifact evaluation ESOP'23, PLDI'22, ESOP'22
Reviewing OOPSLA'27, TOPLAS (2026), ECOOP'24, PLDI'23, ITP'23, LICS'23, POPL'23, OOPSLA (2022), CSL (2022), LMCS (2022), ESOP'21, ICFP'20
Software PL deadline calendar, upcoming deadlines for programming languages conferences; Review tool, for writing paper reviews next to the PDF
Other VCA for Behavioural Types: Bridging Theory and Practice (2021)

Talks

2026 Guarantees by construction, revisited
IPA Fall Days 2026 · Dissertation Award talk
2026 Vox: Verified OxCaml
September 2026
2025 StacKAT: Infinite State Network Verification
PLDI'25
2025 Reasoning about Equivalence
HKUST · 31 March 2025
2025 Deadlock and Resource Leak Free Languages
University of Washington · 27 February 2025
2024 Deadlock-Free Separation Logic: Linearity Yields Progress for Dependent Higher-Order Message Passing
EPFL · POPL'24
2024 Probabilistic Programming Session Preview
POPL'24 (session preview)
2024 Verified Message-Passing Concurrency in Iris: Separation Logic Meets Session Types
POPL'24 (tutorial, with Jonas Kastberg Hinrichsen and Robbert Krebbers)
2023 The Iris Masterplan
PL Retreat, Cornell University
2023 Higher-Order Leak and Deadlock Free Locks
Cornell University · Carnegie Mellon University · POPV seminar Boston · LFCS seminar Edinburgh · POPL'23
2022–23 Fast Coalgebraic Bisimilarity Minimization
Cornell University · LIP ENS Lyon · POPL'23 · SWS Seminar, Radboud University
2023 Dependent Session Protocols in Separation Logic from First Principles
Iris Workshop 2023
2022 Multiparty GV: Functional Multiparty Session Types With Certified Deadlock Freedom
ICFP'22
2022 A Simple Concurrent Lambda Calculus for Encoding Session Types
TYPES'22
2020–22 Paradoxes of Probabilistic Programming
PLDI'22 SIGPLAN Track · VeriProP'21 · POPL'21 · PL Seminar, TU Delft · PPLV, University College London · SWS Seminar, Radboud University
2022 A Self-Dual Distillation of Session Types
ECOOP'22
2022 Connectivity Graphs: A Method for Proving Deadlock Freedom Based on Separation Logic
Iris Workshop · CMU plunch · Imperial College London · POPL'22
2021 Mechanized Deadlock Freedom for Session Types
FCG, University of Groningen · VEST'21
2021 Deadlock Freedom for Session Types Using Separation Logic
SWS Seminar, Radboud University

Notes

I sometimes write up my notes because it makes me think a bit more carefully and helps me remember. If you have any comments, questions, or ideas, don't hesitate to send me an email :) Posts from before 2018 are on my blog.

Photos

Some of my photos. There are more in the gallery.

A clear turquoise mountain lake with a large boulder Wild horses at a pond in a nature reserve A mountain ridge with reddish grass under a blue sky Flowering heather under a cloudy sky A castle behind its moat Frosted trees along a path on a cold morning Rocky mountain slopes above a forest A branch with red berries in front of a lake A rock arch over clear green water Small mushrooms growing on a mossy log

This site counts page views without cookies; no personal data is stored.