Skip to main content
QUICK REVIEW

[论文解读] Galois Connecting Call-by-Value and Call-by-Name

Dylan McDermott, Alan Mycroft|arXiv (Cornell University)|Jan 1, 2022
Polynomial and algebraic computation参考文献 34被引用 1
一句话总结

本文提出了一套通用框架,用于在存在计算效应的情况下,基于 Levy 的推-值调用(call-by-push-value, CBPV)演算作为统一基础,推理值调用(call-by-value, CBV)与名称调用(call-by-name, CN)之间的关系。研究表明,在某些关于效应的公理化条件下(如惰性化能力和可丢弃性),CBV 与 CN 解释之间的映射构成 Galois 连接,从而实现对可观测行为的系统性比较。其核心贡献是提出了一条通用推理原则(定理 6.2),用于关联不同求值顺序下程序的执行结果。

ABSTRACT

We establish a general framework for reasoning about the relationship between call-by-value and call-by-name. In languages with side-effects, call-by-value and call-by-name executions of programs often have different, but related, observable behaviours. For example, if a program might diverge but otherwise has no side-effects, then whenever it terminates under call-by-value, it terminates with the same result under call-by-name. We propose a technique for stating and proving these properties. The key ingredient is Levy’s call-by-push-value calculus, which we use as a framework for reasoning about evaluation orders. We construct maps between the call-by-value and call-by-name interpretations of types. We then identify properties of side-effects that imply these maps form a Galois connection. These properties hold for some side-effects (such as divergence), but not others (such as mutable state). This gives rise to a general reasoning principle that relates call-by-value and call-by-name. We apply the reasoning principle to example side-effects including divergence and nondeterminism.

研究动机与目标

  • 开发一种通用技术,用于推理在值调用与名称调用之间切换时,程序可观测行为的变化。
  • 识别计算效应的公理化属性,以实现对不同求值顺序的系统性比较。
  • 通过 CBPV 演算中的逻辑关系与 Galois 连接,形式化值调用与名称调用之间的关系。
  • 通过抽象效应特异性语义,构建一个可重用框架,适用于多种效应,包括发散与非确定性。

提出的方法

  • 使用 Levy 的推-值调用(CBPV)演算作为共同语义框架,将表达式翻译为值调用与名称调用形式。
  • 定义一组集合论逻辑关系,用于比较不同类型(CBV 与 CN)项的可观测行为。
  • 建立一个定理(定理 4.7),在计算效应满足特定条件(如可丢弃性与可重排性)时,关联一个表达式的 CBV 与 CN 翻译。
  • 构造类型在值调用与名称调用解释之间的映射,证明在更强条件(如惰性化能力)下,这些映射构成 Galois 连接。
  • 将这些 Galois 映射与 CBPV 翻译组合,以实现不同求值顺序下项的直接比较。
  • 推导出一条通用推理原则(定理 6.2),可用于证明诸如“若 M 在 CBV 下终止,则其在 CN 下也以相同结果终止”等性质。

实验结果

研究问题

  • RQ1在何种计算效应条件下,同一表达式的值调用与名称调用求值会表现出相关的可观测行为?
  • RQ2是否可以建立值调用与名称调用类型解释之间的 Galois 连接,以反映表达式的执行行为?
  • RQ3如何利用 CBV 与 CN 翻译之间的逻辑关系,推导出关于求值顺序变化的一般定理?
  • RQ4哪些效应的公理化属性(如惰性化能力、可丢弃性)是通过 Galois 连接关联 CBV 与 CN 所必需且充分的?
  • RQ5该框架是否能统一应用于发散、非确定性及其组合等多样化效应?

主要发现

  • 本文证明,在效应具备可丢弃性与可重排性等条件下,表达式的值调用与名称调用翻译通过集合论关系实现逻辑关联(定理 4.7)。
  • 对于发散效应,该推理原则表明:若程序在值调用下终止,则其在名称调用下也以相同结果终止。
  • 对于非确定性效应,该原则表明:值调用执行的每一个可能结果,都是对应名称调用执行的可能结果之一。
  • 当效应具备惰性化能力时,值调用与名称调用类型解释之间的映射构成 Galois 连接,从而在两种求值策略之间建立正式对偶。
  • 通用推理原则(定理 6.2)允许通过比较不同求值顺序下的行为,推导出程序的顺序敏感性质。
  • 该框架具有通用性,只要其公理化属性满足,即可适用于发散与非确定性等效应的组合。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。