🤖 AI Summary
This work addresses the inefficiency of convertibility checking for lambda terms in proof assistants and dependently typed languages, where heuristic approaches often trigger redundant computation. We propose a novel algorithm that integrates lazy evaluation with concurrent execution, modeled in a process-calculus style. The algorithm achieves efficient equivalence checking through shared subcomputation, parallel exploration of reduction paths, and fair interleaving scheduling. To our knowledge, this is the first approach to deeply couple laziness and concurrency for convertibility checking, guaranteeing discovery of any simple (i.e., shortest) normalizing derivation. We formally verify its partial correctness and provide theoretical complexity analysis. Lightweight experiments demonstrate that, in typical scenarios, the algorithm significantly avoids large-scale spurious reductions, thereby improving decision efficiency.
📝 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 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 presents the algorithm in process calculus style and discusses its mechanized proof of partial correctness, its complexity, and its lightweight experimental evaluation.