SPLASH 2025
Sun 12 - Sat 18 October 2025 Singapore
co-located with ICFP/SPLASH 2025

This program is tentative and subject to change.

Thu 16 Oct 2025 14:45 - 15:00 at Orchid West - Reasoning

Many imperative programming languages offer global variables to implement common functionality such as global caches and counters. Global variables are typically initialized by module initializers (e.g., static initializers in Java), code blocks that are executed automatically by the runtime system. When or in what order these initializers run is typically not known statically and modularly. For instance in Java, initialization is triggered dynamically upon the first use of a class, while in Go, the order depends on all packages of a program. As a result, reasoning modularly about global variables and their initialization is difficult, especially because module initializers may perform arbitrary side effects and may have cyclic dependencies. Consequently, existing modular verification techniques either do not support global state or impose drastic restrictions that are not satisfied by mainstream languages and programs.

In this paper, we present the first practical verification technique to reason formally and modularly about global state and its initialization. Our technique is based on Separation Logic and uses module invariants to specify ownership and values of global variables. A partial order on modules and methods allows us to reason modularly about when a module invariant may be soundly assumed to hold, irrespective of when exactly the module initializer establishing it runs. Our technique supports both thread-local and shared global state. We formalize it as a program logic in Iris and prove its soundness in Rocq. We make only minimal assumptions about the initialization semantics, making our technique applicable to a wide range of programming languages. We implemented our technique in existing verifiers for Java and Go and demonstrate its effectiveness on typical uses cases of global state as well as a substantial codebase implementing an Internet router.

This program is tentative and subject to change.

Thu 16 Oct

Displayed time zone: Perth change

13:45 - 15:30
ReasoningOOPSLA at Orchid West
13:45
15m
Talk
Characterizing Implementability of Global Protocols with Infinite States and Data
OOPSLA
Elaine Li NYU, Felix Stutz University of Luxembourg, Luxembourg, Thomas Wies New York University, Damien Zufferey SonarSource
14:00
15m
Talk
Checking Observational Correctness of Database Systems
OOPSLA
Lauren Pick The Chinese University of Hong Kong, Amanda Xu University of Wisconsin-Madison, Ankush Desai Amazon Web Services, Sanjit A. Seshia University of California, Berkeley, Aws Albarghouthi University of Wisconsin-Madison
14:15
15m
Talk
Correct Black-Box Monitors for Distributed Deadlock Detection: Formalisation and Implementation
OOPSLA
Radosław Jan Rowicki Technical University of Denmark, Adrian Francalanza University of Malta, Alceste Scalas Technical University of Denmark
DOI Pre-print
14:30
15m
Talk
Correct-By-Construction: Certified Individual Fairness through Neural Network Training
OOPSLA
Ruihan Zhang Singapore Management University (SMU), Jun Sun Singapore Management University
14:45
15m
Talk
Modular Reasoning about Global Variables and Their Initialization
OOPSLA
João Pereira ETH Zurich, Isaac van Bakel ETH Zurich, Patricia Firlejczyk ETH Zurich, Marco Eilers ETH Zurich, Peter Müller ETH Zurich
15:00
15m
Talk
P³: Reasoning about Patches via Product Programs
OOPSLA
Arindam Sharma Imperial College London, Daniel Schemmel Imperial College London, Cristian Cadar Imperial College London
15:15
15m
Talk
Reasoning about External Calls
OOPSLA
Julian Mackay Kry10 Ltd, Sophia Drossopoulou Imperial College London, James Noble Independent. Wellington, NZ, Susan Eisenbach Imperial College London