Formal Verification of the Correspondence Between Call-by-Need and Call-by-Name
Formal Verification of the Correspondence Between Call-by-Need and Call-by-Name
复制标题
DOI:
10.1007/978-3-319-90686-7_1
复制
发表时间:
2018-05
期刊:
影响因子:
--
通讯作者:
Masayuki Mizuno;Eijiro Sumii
中科院分区:
文献类型:
--
作者:
Masayuki Mizuno;Eijiro Sumii
We formalize the call-by-need evaluation of-calculus (with no recursive bindings) and prove its correspondence with call-by-name, using the Coq proof assistant.It has been long argued that there is a gap between the high-level abstraction of non-strict languages—namely,call-by-nameevaluation—and their actualcall-by-needimplementations. Although a number of proofs have been given to bridge this gap, they are not necessarily suitable for stringent, mechanized verification because of the use of a global heap, “graph-based” techniques, or “marked reduction”. Our technical contributions are twofold: (1) we give a simpler proof based on two forms of standardization, adopting de Bruijn indices for representation of (non-recursive) variable bindings along with Ariola and Felleisen’s small-step semantics, and (2) we devise a technique to significantly simplify the formalization by eliminating the notion of evaluation contexts—which have been considered essential for the call-by-need calculus—from the definitions.