[论文解读] Certified proofs in programs involving exceptions
本文通过在Moggi的单子方法中引入装饰性等式推理,提出了一套针对涉及异常的程序的认证证明系统。该系统支持两步验证:首先在纯计算环境中证明性质,然后通过语义装饰引入异常,其正确性已得到证明,并通过Coq验证的示例展示了异常的传播与处理。
Exception handling is provided by most modern programming languages. It allows to deal with anomalous or exceptional events which require special processing. In computer algebra, exception handling is an efficient way to implement the dynamic evaluation paradigm: for instance, in linear algebra, dynamic evaluation can be used for applying programs which have been written for matrices with coefficients in a field to matrices with coefficients in a ring. Thus, a proof system for computer algebra should include a treatement of exceptions, which must rely on a careful description of a semantics of exceptions. The categorical notion of monad can be used for formalizing the raising of exceptions: this has been proposed by Moggi and implemented in Haskell. In this paper, we provide a proof system for exceptions which involves both raising and handling, by extending Moggi's approach. Moreover, the core part of this proof system is dual to a proof system for side effects in imperative languages, which relies on the categorical notion of comonad. Both proof systems are implemented in the Coq proof assistant.
研究动机与目标
- 为了以一种支持动态求值形式化验证的方式形式化异常处理,特别是在计算机代数领域。
- 提供一个证明系统,将纯计算的推理与异常等计算效应的推理分离开来。
- 扩展Moggi的单子方法,以同时支持异常的抛出与处理,并通过余单子与状态效应形成对偶。
- 通过在语法和等式中引入装饰,以支持Coq中的机器可检查证明,从而追踪异常行为。
- 通过子类型与强制转换支持分层异常类型,将该框架扩展至支持现实编程语言的特性。
提出的方法
- 作者引入了一种装饰性语法,其中表达式被标注了效应信息(例如:纯、异常或两者兼有),从而能够根据其与异常的交互行为对表达式进行分类。
- 他们基于单子 X + Exc 定义了一个核心异常语言,其中值可以是正常结果或异常,并定义了用于标记、取消标记和处理异常的操作。
- 装饰性等式区分了弱等价(允许效应差异)与强等价(保留效应),从而支持模块化证明构建。
- 该证明系统建立在异常单子的Kleisli范畴之上,并通过状态余单子的coKleisli范畴进行对偶化,利用范畴论的对偶性。
- 该框架通过强制转换操作支持异常类型的子类型化,其语义被定义为保持类型安全与子类型不变性。
- 所有证明均在Coq证明助手中形式化并机器检查,且同一框架中也提供了状态效应的对偶实现。
实验结果
研究问题
- RQ1如何组织形式化证明,以验证包含异常的程序,同时保持纯计算与效应计算推理之间的模块化?
- RQ2能否设计一种证明系统,将纯程序逻辑的验证与异常等计算效应的推理分离开来?
- RQ3装饰性等式推理如何在异常存在的情况下支持弱等价与强等价?
- RQ4状态与异常效应之间的对偶性在设计统一证明框架中起什么作用?
- RQ5如何将分层异常类型与强制转换形式化地整合进异常证明系统中?
主要发现
- 该证明系统在语义上是正确的,其正确性已通过定理5.5正式确立。
- 该框架支持两步验证:第一步,通过移除装饰在纯片段中检查证明;第二步,重新激活装饰以验证对效应敏感的性质。
- 一个Coq验证的证明展示了传播器通过组合正确地传递异常,使用了弱等价与强等价规则。
- 该系统通过强制转换操作支持异常类型的子类型化,其语义保持了类型安全与组合性。
- 该方法与状态效应的证明系统对偶,从而实现了使用单子与余单子统一处理计算效应。
- 该框架已在Coq中实现,并可通过 http://coqeffects.forge.imag.fr 获取,展示了其实际适用性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。