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

This program is tentative and subject to change.

Wed 15 Oct 2025 14:05 - 14:30 at Orchid Plenary Ballroom - Separation Logic

<p>To study the semantics of a programming language, it is useful to consider different specification forms—<em>e.g.</em>, a substitution-based small-step operational semantics and an environment-based interpreter—because they have mutually exclusive benefits. Developing these specifications and proving correspondences is challenging for ‘dynamic’/‘scripting’ languages such as JavaScript, PHP and Bash. We study this challenge in the context of the Nix expression language, a dynamic language used in the eponymous package manager and operating system. Nix is a Turing-complete, untyped functional language designed for the manipulation of JSON-style attribute sets, with tricky features such as overloaded use of variables for lambda bindings and attribute members, subtle shadowing rules, a mixture of evaluation strategies, and tricky mechanisms for recursion.</p>

<p>We show that our techniques are applicable beyond Nix by starting from the call-by-name lambda calculus, which we extend to a core lambda calculus with dynamically computed variable names and dynamic binder names, and finally to Nix. Our key novelty is the use of a form of <em>deferred substitutions</em>, which enables us to give a concise substitution-based semantics for dynamic variable binding. We develop corresponding environment-based interpreters, which we prove to be sound and complete (for terminating, faulty and diverging programs) w.r.t. our operational semantics based on deferred substitutions.</p>

<p>We mechanize all our results in the Rocq prover and showcase a new feature of the Rocq-std++ library for representing syntax with maps in recursive positions. We use Rocq’s extraction mechanism to turn our Nix interpreter into executable OCaml code, which we apply to the official Nix language tests.
Altogether this gives rise to the most comprehensive formal semantics for the Nix expression language to date.</p>

This program is tentative and subject to change.

Wed 15 Oct

Displayed time zone: Perth change

13:40 - 15:20
13:40
25m
Talk
Formal Semantics and Program Logics for a Fragment of OCaml
ICFP Papers
DOI
14:05
25m
Talk
Verified Interpreters for Dynamic Languages with Applications to the Nix Expression Language
ICFP Papers
Rutger Broekhoff Radboud University Nijmegen, Robbert Krebbers Radboud University Nijmegen
DOI Pre-print
14:30
25m
Talk
Verifying Graph Algorithms in Separation Logic: A Case for an Algebraic Approach
ICFP Papers
Marcos Grandury IMDEA Software Institute; Universidad Politécnica de Madrid, Aleksandar Nanevski IMDEA Software Institute, Alexander Gryzlov IMDEA Software Institute
DOI
14:55
25m
Talk
Reasoning about Weak Isolation Levels in Separation Logic
ICFP Papers
Anders Alnor Mathiasen Aarhus University, Léon Gondelman Aalborg University, Léon Ducruet Aarhus University, Amin Timany Aarhus University, Lars Birkedal Aarhus University
DOI