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.
Sang ngôn ngữ khác
từ nội dung nguồn
arxiv.org
Thông tin chi tiết chính được chắt lọc từ
by Matias Schar... lúc arxiv.org 05-06-2024
https://arxiv.org/pdf/2405.01687.pdfYêu cầu sâu hơn