The paper discusses the compactness lemma in programming language theory, which states that any recursive function can be simulated by a finite unrolling of the function. This lemma is important for logical relations proofs, such as proving strong normalization.
The key idea is that within a terminating program, the recursive function must have called itself up to a finite recursive depth, so replacing the function with a finite unrolling with the same behavior up to that recursive depth should result in the same outcome.
The paper presents a new proof technique using a "pattern stepping bisimulation" approach. This involves:
This approach avoids the need for excessive bookkeeping on the depth of function unrollings during execution, and extends the compactness lemma to a wider range of programming languages, including those with control flow effects.
The paper also presents a formal verification of the compactness lemma in the Coq theorem prover, including extensions to handle explicit control flow.
Іншою мовою
із вихідного контенту
arxiv.org
Ключові висновки, отримані з
by Matias Schar... о arxiv.org 05-06-2024
https://arxiv.org/pdf/2405.01687.pdfГлибші Запити