当前位置: X-MOL 学术J. Funct. Program. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Not by equations alone: Reasoning with extensible effects
Journal of Functional Programming ( IF 1.1 ) Pub Date : 2021-01-29 , DOI: 10.1017/s0956796820000271
OLEG KISELYOV , SHIN-CHENG MU , AMR SABRY

The challenge of reasoning about programs with (multiple) effects such as mutation, jumps, or IO dates back to the inception of program semantics in the works of Strachey and Landin. Using monads to represent individual effects and the associated equational laws to reason about them proved exceptionally effective. Even then it is not always clear what laws are to be associated with a monad—for a good reason, as we show for non-determinism. Combining expressions using different effects brings challenges not just for monads, which do not compose, but also for equational reasoning: the interaction of effects may invalidate their individual laws, as well as induce emerging properties that are not apparent in the semantics of individual effects. Overall, the problems are judging the adequacy of a law; determining if or when a law continues to hold upon addition of new effects; and obtaining and easily verifying emergent laws. We present a solution relying on the framework of (algebraic, extensible) effects, which already proved itself for writing programs with multiple effects. Equipped with a fairly conventional denotational semantics, this framework turns useful, as we demonstrate, also for reasoning about and optimizing programs with multiple interacting effects. Unlike the conventional approach, equational laws are not imposed on programs/effect handlers, but induced from them: our starting point hence is a program (model), whose denotational semantics, besides being used directly, suggests and justifies equational laws and clarifies side conditions. The main technical result is the introduction of the notion of equivalence modulo handlers (“modulo observation”) or a particular combination of handlers—and proving it to be a congruence. It is hence usable for reasoning in any context, not just evaluation contexts—provided particular conditions are met. Concretely, we describe several realistic handlers for non-determinism and elucidate their laws (some of which hold in the presence of any other effect). We demonstrate appropriate equational laws of non-determinism in the presence of global state, which have been a challenge to state and prove before.

中文翻译:

不仅仅通过方程式:具有可扩展效果的推理

对具有(多种)效果(例如突变、跳转或 IO)的程序进行推理的挑战可以追溯到 Strachey 和 Landin 作品中程序语义的开始。使用单子来表示个体效应和相关的等式定律来推理它们被证明是非常有效的。即便如此,也不总是清楚哪些法律与单子相关联——这是有充分理由的,正如我们为非确定性所展示的那样。使用不同效果组合表达式不仅给不组合的单子带来挑战,而且给等式推理也带来挑战:效果的相互作用可能会使它们的个别规律无效,并引发在个别效果的语义中不明显的新兴属性。总体而言,问题在于判断法律的充分性;确定法律是否或何时在增加新效果时继续有效;并获得并轻松验证紧急法律。我们提出了一个依赖于(代数,可扩展)效果框架的解决方案,该框架已经证明了自己可以编写具有多种效果的程序。正如我们所展示的,配备了相当传统的指称语义,该框架变得有用,也可用于推理和优化具有多种交互效果的程序。与传统方法不同,等式定律不是强加于程序/效果处理程序,而是由它们导出:因此,我们的出发点是一个程序(模型),它的指称语义除了直接使用外,还建议和证明等式定律并澄清附带条件. 主要的技术成果是引入了 并获得并轻松验证紧急法律。我们提出了一个依赖于(代数,可扩展)效果框架的解决方案,该框架已经证明了自己可以编写具有多种效果的程序。正如我们所展示的,配备了相当传统的指称语义,该框架变得有用,也可用于推理和优化具有多种交互效果的程序。与传统方法不同,等式定律不是强加于程序/效果处理程序,而是由它们导出:因此,我们的出发点是一个程序(模型),它的指称语义除了直接使用外,还建议和证明等式定律并澄清附带条件. 主要的技术成果是引入了 并获得并轻松验证紧急法律。我们提出了一个依赖于(代数,可扩展)效果框架的解决方案,该框架已经证明了自己可以编写具有多种效果的程序。正如我们所展示的,配备了相当传统的指称语义,该框架变得有用,也可用于推理和优化具有多种交互效果的程序。与传统方法不同,等式定律不是强加于程序/效果处理程序,而是由它们导出:因此,我们的出发点是一个程序(模型),它的指称语义除了直接使用外,还建议和证明等式定律并澄清附带条件. 主要的技术成果是引入了 我们提出了一个依赖于(代数,可扩展)效果框架的解决方案,该框架已经证明了自己可以编写具有多种效果的程序。正如我们所展示的,配备了相当传统的指称语义,该框架变得有用,也可用于推理和优化具有多种交互效果的程序。与传统方法不同,等式定律不是强加于程序/效果处理程序,而是由它们导出:因此,我们的出发点是一个程序(模型),它的指称语义除了直接使用外,还建议和证明等式定律并澄清附带条件. 主要的技术成果是引入了 我们提出了一个依赖于(代数,可扩展)效果框架的解决方案,该框架已经证明了自己可以编写具有多种效果的程序。正如我们所展示的,配备了相当传统的指称语义,该框架变得有用,也可用于推理和优化具有多种交互效果的程序。与传统方法不同,等式定律不是强加于程序/效果处理程序,而是由它们导出:因此,我们的出发点是一个程序(模型),它的指称语义除了直接使用外,还建议和证明等式定律并澄清附带条件. 主要的技术成果是引入了 正如我们所展示的,配备了相当传统的指称语义,该框架变得有用,也可用于推理和优化具有多种交互效果的程序。与传统方法不同,等式定律不是强加于程序/效果处理程序,而是由它们导出:因此,我们的出发点是一个程序(模型),它的指称语义除了直接使用外,还建议和证明等式定律并澄清附带条件. 主要的技术成果是引入了 正如我们所展示的,配备了相当传统的指称语义,该框架变得有用,也可用于推理和优化具有多种交互效果的程序。与传统方法不同,等式定律不是强加于程序/效果处理程序,而是由它们导出:因此,我们的出发点是一个程序(模型),它的指称语义除了直接使用外,还建议和证明等式定律并澄清附带条件. 主要的技术成果是引入了 它的指称语义除了直接使用外,还暗示和证明了等式定律并阐明了附带条件。主要的技术成果是引入了 它的指称语义除了直接使用外,还暗示和证明了等式定律并阐明了附带条件。主要的技术成果是引入了等价模处理程序(“模观察”)或处理程序的特定组合——并证明它是一致. 因此,只要满足特定条件,它就可用于任何上下文中的推理,而不仅仅是评估上下文。具体来说,我们描述了几个现实的非确定性处理程序并阐明了它们的规律(其中一些在存在任何其他影响的情况下成立)。我们在存在全局状态的情况下证明了适当的非确定性方程定律,这在之前一直是对状态和证明的挑战。
更新日期:2021-01-29
down
wechat
bug