A Lazy, Concurrent Convertibility Checker
Nathanaëlle Courant, Xavier Leroy
Abstract
Convertibility checking — determining whether two lambda-terms are equal up to reductions — is a crucial component of proof assistants and dependently-typed languages. Practical implementations often use heuristics to quickly conclude that two terms are convertible, or are not convertible, without reducing them to normal form. However, these heuristics can backfire, triggering huge amounts of unnecessary computation. This paper presents a novel convertibility-checking algorithm that relies crucially on laziness and concurrency . Laziness is used to share computations, while concurrency is used to explore multiple convertibility subproblems in parallel or via fair interleaving. Unlike heuristics-based approaches, our algorithm always finds an easy solution to the convertibility problem, if one exists. The paper describes the algorithm in process calculus style, discusses its complexity, and reports on its mechanized proof of partial correctness and its lightweight experimental evaluation.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext 8f394cc3-206a-4485-a794-de5dede9e085Builds on1
Related papers
- Algorithmic Conversion with Surjective Pairing: A Syntactic and Untyped ApproachYiyun Liu, Stephanie WeirichPOPL 2026
- Commuting Conversions and Join Points for Call-by-Push-ValueJonathan Chan, Madi Gudin, Annabel Levy, Stephanie WeirichOOPSLA 2026
- Commutativity for Concurrent Program Termination ProofsDanya Lette, Azadeh FarzanCAV 2023 · 3 citations
- Sound sequentialization for concurrent program verificationAzadeh Farzan, Dominik Klumpp, Andreas PodelskiPLDI 2022 · 24 citations
- Normalization for Multimodal Type TheoryDaniel GratzerLICS 2022 · 23 citations
