Wed 26 Aug 2026 10:48 - 11:06 at IP126 Auditorium - Languages and DSLs Chair(s): Benjamin Delaware

Compiler calculation is a technique for deriving a correct-by-construction compiler from the specification of the compiler’s correctness. In this setting, the compiler specification typically states that the semantics of each compiled program is bisimilar to the semantics of the original source program, i.e. both programs have the same behaviour. However, full bisimilarity for all source programs is too strong a requirement for complex source languages with unsafe behaviour for which the compiler need not make any guarantees, e.g. because programs that exhibit unsafe behaviour are ruled out by the type checker. This has long been recognised and exploited in compiler verification, but to date no calculation technique can handle such partial specifications. To address this, we propose a generalisation of bisimilarity, called skew bisimilarity, that allows us to weaken the compiler specification so that we may safely ignore unsafe behaviour when calculating a compiler for the specification. We demonstrate that skew bisimilarity enables us to derive compilers that produce more efficient code compared to previous compiler calculation techniques, all while maintaining the same strong correctness guarantees for safe source programs.

We further show that – even for languages without unsafe behaviour – skew bisimilarity provides a powerful generalisation of bisimilarity that enables a novel calculation technique for reasoning about register machines. This improves on existing compiler calculation techniques for register machines, which are currently limited to terminating source languages without effects. To demonstrate the effectiveness of skew bisimilarity as a proof technique for compiler calculation, we have fully formalised it in Agda and used this formalisation to calculate compilers for a variety of languages, including the first calculation of a compiler for a typed concurrent lambda calculus that targets a register machine.

Wed 26 Aug

Displayed time zone: Eastern Time (US & Canada) change

10:30 - 12:00
Languages and DSLsICFP Papers at IP126 Auditorium
Chair(s): Benjamin Delaware Purdue University
10:30
18m
Talk
QuickChecking Convergence of Rewriting Systems (Functional Pearl)Remote
ICFP Papers
Koen Claessen Chalmers University of Technology
DOI
10:48
18m
Talk
Safety First: How to Safely Disregard Unsafe Behaviour in Compiler CalculationsRemote
ICFP Papers
Patrick Bahr IT University of Copenhagen
DOI Pre-print
11:06
18m
Talk
Assertions for Free: Transferring Invariants from Algorithm to Implementation Proofs (Functional Pearl)
ICFP Papers
Shushu Wu Shanghai Jiao Tong University, Chengxi Yang Shanghai Jiao Tong University, Xiwei Wu Shanghai Jiao Tong University, Qinxiang Cao Shanghai Jiao Tong University
DOI
11:24
18m
Talk
Package Managers à la Carte
ICFP Papers
Ryan Gibb University of Cambridge, Patrick Ferris University of Cambridge, UK, David Allsopp Jane Street, Thomas Gazagnaire Tarides, Anil Madhavapeddy University of Cambridge, UK
DOI
11:42
18m
Talk
Compositional Generator Equivalence
ICFP Papers
Anthony Vandikas University of Toronto, Kiarash Sotoudeh University of Toronto, Marsha Chechik University of Toronto
DOI