✦ Twentieth meeting of the series

S-REPLS 20

The South of England Regional Programming Languages Seminar returns for its twentieth meeting — a free, informal gathering for anyone with a professional or academic interest in the design, semantics, and implementation of programming languages.

📅
Date
Wednesday 4 November 2026
📍
Venue
Queen's Lecture Theatre, Royal Holloway
🎟️
Cost
Free to attend
🎤
Invited speakers
Stephen Kell, King's College London  ·  Jeremy Gibbons, University of Oxford
About S-REPLS

Twenty meetings of a South-of-England PL community

S-REPLS is a regular, informal meeting for anyone in the South of England with a professional interest — academic or commercial — in programming language theory, semantics, and implementation. It moves around the region from host to host and is always free to attend.

For our twentieth edition, S-REPLS comes to Royal Holloway, University of London, hosted by the Department of Computing, Security and Mathematics, and supported by the EPSRC-funded project INDIMO.

Programme

Wednesday 4 November 2026

Queen's Lecture Theatre, Royal Holloway.

10:00–10:50
Invited talk

Programming language implementation: out of the "existential" crisis

Stephen Kell · King's College London
Show abstractHide abstract
The experience of using any programming language is shaped by its "implementation design" as much as the language design. Recurringly, programmers find that they and their code are unhelpfully fragmented into tribes, that the tools are seldom good enough, and that dealing with communication or persistent storage is unreasonably painful. In this talk I'll trace these difficulties to certain prevailing implementation design traits, which I'll label "existential". I'll describe an alternative approach that can be seen by contrast as "universal". The core idea is to accommodate heterogeneity, by working within common meta-level abstractions -- some already existing in the wild, others yet to be devised, and in all cases ripe for research. I'll illustrate with examples around debugging, interoperability and (time permitting) persistence, drawing in part on work done jointly with my students Ryan Stinnett, Zoltán Meszárós and Harry Dilnot.
10:50–11:20☕ Coffee break
Session 1
11:20–11:45

An End-to-end Theory for Compositional Symbolic Execution

Shiva Tamil Kumaran · Imperial College London
Show abstractHide abstract

Compositional symbolic execution (CSE) is a powerful technique for program verification and bug-finding, yet existing formal theories of CSE do not sufficiently bridge the gap between idealised models and real-world tools. We present mechanised progress towards a foundational, realistic, and end-to-end theory of CSE in the Rocq proof assistant. Our theory advances realism at both ends of the CSE pipeline: it supports an expressive frontend with algebraic data types, logical functions, and lemmas; it also provides a verified connection to SMT-LIB compliant SMT solvers. Our contributions include: (1) a CSE theory that captures practical verification patterns; (2) a standalone, reusable Rocq mechanisation of the SMT-LIB standard; (3) a proven-correct encoding from CSE backend queries to SMT-LIB queries that accounts for semantic discrepancies and optimises using type information; and (4) empirical evidence for the backend by extracting our verified SMT encoding and routing a sizeable fragment of solver queries from the CSE tool Gillian through it.

11:45–12:10

You Only Get One Shot: Reasoning About One-Shot Undelimited Continuations in Separation Logic

Paulo de Vilhena · University of Surrey
Show abstractHide abstract

Continuations are a powerful programming concept: cooperative concurrency, coroutines, Python-style generators, and many other features can be implemented as libraries rather than being built into the language. Although delimited continuations have experienced renewed interest particularly because of the success of effect handlers, undelimited continuations, as offered by control operators in the call/cc family, fell out of fashion because of efficiency concerns and difficulty of reasoning. In this talk, we revisit undelimited continuations through the modern perspective of separation logic. We will see that this exploration indicates an alternative semantics of call/cc that is efficient, is compatible with powerful reasoning principles and itself enjoys surprisingly simple separation-logic reasoning rules, and can still be used to implement the usual applications of continuations. This is joint work with Xavier Leroy. It has been recently been conditionally accepted for publication at POPL 2027.

12:10–12:35

Message in a Bottle: Behavioural Types for Communication Safety

Danielle Marshall · Royal Holloway, University of London
Show abstractHide abstract

Message-passing concurrency is a common and well-explored approach to structuring programs that involve communication, but ensuring that communicating processes interact safely remains a challenging task. Behavioural type systems allow us to make progress towards this goal by describing not only the values communicated between processes but also the structure and format of the communication itself.

In this talk, I will compare and contrast two approaches to typing concurrent programs: mailbox types and session types. Mailbox types describe actor-based communication as in languages like Erlang and Elixir, describing messages that can be sent to or received from an actor’s mailbox using commutative regular expressions. In contrast, session types describe channel-based communication as in languages such as Go and Rust, and describe protocols of communication over a channel as a sequence of sends or receives. Traditionally, session types are linear, but we will also briefly look at graded session types which carefully relax this restriction to allow the programmer to encode non-linear communication patterns.

By examining these two models of communication and their respective typing disciplines, I aim to shed some light on their similarities and differences, and illustrate some of the contrasting challenges of precisely typing programs in each setting.

12:35–13:00

Speak Now: Safe Actor Programming with Multiparty Session Types

Raymond Hu · Queen Mary, University of London
Show abstractHide abstract

To be announced.

13:00–14:00🍽️ Lunch
14:00–14:50
Invited talk

Patterns in Functional Programming

Jeremy Gibbons · University of Oxford
Show abstractHide abstract

Many programs that are apparently very different on the surface turn out to be very similar underneath: they are varying instances of a common pattern. Sometimes we can capture the pattern as a generic program scheme, and obtain the instances by instantiating parameters of the scheme. This is a beneficial situation to be in, since any effort spent in understanding, refining, debugging, or verifying the pattern can be exploited for all of the instances.

One particular such situation arises from the well known insight that program structure often follows data structure. In that case, the generic program scheme is a pattern of computation induced by the shape of the data it manipulates, and the parameter is the datatype. Each instantiation to a specific data structure induces a corresponding program structure instance. The program schemes and parameters typically arise from standard algebraic and order-theoretic concepts such as monoids, semirings, and preorders, and more generally from constructions in category theory.

I had the privilege of a sabbatical year 2024-25, which I spent writing a book "Patterns in Functional Programming" about this phenomenon. It has taken me the subsequent year to tidy up, but I have sent the book off to Cambridge University Press and expect it to appear in early 2027. I will describe the premise of the book, and present some pretty examples.

14:50–15:20☕ Coffee break
Session 2
15:20–15:45

Design Considerations for Named Parameters

Maxwell Heiber · Meta
Show abstractHide abstract

The design space for named parameters varies significantly between languages. Python, Scala, Swift, OCaml, etc. all make wildly different choices. We explore the design space, weigh trade-offs, and converge on best solutions for various goals (ergonomics, safety, ease of adoption).

15:45–16:10

Memory-Aware Verification of Remote Direct Memory Access (RDMA) Systems

Florian Furbach · University of Surrey
Show abstractHide abstract

RDMA provides fast communication by allowing machines to access remote memory directly, but its interaction with CPU weak memory and network ordering can produce subtle behaviours. For example, nodes may observe stale values even after polling for remote-write completion. The RDMA-TSO model formalises these behaviours.

This talk presents an extension of Dartagnan, an SMT-based bounded model checker for weak-memory programs, to support distributed RDMA systems. We add node-aware programs, RDMA events and relations, and the RDMA-TSO memory model. A two-node litmus test and tool demonstration show how Dartagnan can identify permitted RDMA behaviours and produce concrete witness executions.

We also discuss LOCO, a framework for building composable distributed objects over RDMA. LOCO specifies library correctness by relating implementations to memory-model specifications. We introduce Rochefort, a tool that build on Dartagnan to automate these soundness arguments, which are otherwise established through pen-and-paper reasoning, using litmus tests and SMT-based verification.

16:10–16:35

Mechanised Verification of Program Security With Speculative Execution

Daniel Wright · University of Surrey
Show abstractHide abstract

In transient execution attacks, such as Meltdown and Spectre, divergences from a program's expected control flow during execution can cause privileged information to be loaded and left in the microarchitectural state, which can be exploited by an attacker.

We present a semantic approach for detecting Spectre V1-type vulnerabilities (i.e. transient out-of-bounds loads) by taking a base language with established support for formal verification of epistemic predicates and adding support for speculative execution.

We apply program-to-program transformations to represent speculative execution and microarchitectural traces, and the leakiness of the resulting program can be automatically checked via an epistemic weakest precondition generator, mechanised epistemic to first-order translation, and SMT solver.

16:35–17:00

A Verification Framework For Rocq Featuring Semi-automatic Bisimilarity Proofs

Jonah Pears · University of Kent
Show abstractHide abstract

Reasoning about behavioural equivalence is key to the verification of reactive and infinite-state systems. A common pattern in proofs of correctness is to establish a simulation or abstraction relation between a rich, potentially unbounded source semantics and a finite transition system that captures its observable behaviour. Once such an abstraction is obtained, the remaining verification task often reduces to proving properties in the finite-state domain. Often, verification amounts to establishing (weak) bisimilarity between an abstraction of the source system and its specification. In practice, however, this final bisimulation step can still be unexpectedly demanding and rely on complex external tool support or substantial manual reasoning. We present a verification framework in Rocq, based on augmenting a standard bisimilarity-checking algorithm to produce (weak) bisimilarity proof terms in Gallina, directly applied to the proof through the Rocq API. Our automated bisimilarity proof is split into two parts: (1) extracting a graph from Rocq inductive propositions that represent the underlying (finite-state) abstraction of the system and its specification, and (2) running a proof-term generating bisimilarity-checking algorithm on these graphs. Together, these two steps correspond to a form of type-inhabitation procedure for statements of (weak) bisimilarity in Rocq. We implement these steps as a Rocq plugin, "rocq-mebi".

Attendance

Attendance

As with every S-REPLS meeting, attendance is free. Please register your interest in attending so we can plan numbers.

Register to attend

Registration is quick and helps us plan catering and room capacity. We'll email you closer to the date with the full programme and any joining instructions. Deadline: Wednesday 21 October 2026.

Register to attend

Stay in the loop

Prefer to just hear about future meetings? Join the low-traffic S-REPLS mailing list.

Subscribe via JISCMail →

Venue

Queen's Lecture Theatre, Royal Holloway

DateWednesday 4 November 2026
RoomQueen's Lecture Theatre, Queen's Building
AddressRoyal Holloway, University of London
Egham Hill, Egham, Surrey TW20 0EX
By trainEgham station is on the mainline from London Waterloo (~40 minutes), roughly a 15–20 minute walk from campus.
By carRoyal Holloway is just off the M25 (Junction 13); parking on campus is free.

Organisers

Hosted by the Department of Computing, Security and Mathematics

S-REPLS 20 is organised by Julien Lange, Reuben Rowe, Francisco Ferreira, David Castro Perez, and Danielle Marshall — Royal Holloway, University of London.

Questions about the event, talks, or accessibility needs? Get in touch.