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.
Til et annet språk
fra kildeinnhold
arxiv.org
Viktige innsikter hentet fra
by Matias Schar... klokken arxiv.org 05-06-2024
https://arxiv.org/pdf/2405.01687.pdfDypere Spørsmål