首页> 外文学位 >Sequent Calculus: A Logic and a Language for Computation and Duality
【24h】

Sequent Calculus: A Logic and a Language for Computation and Duality

机译:后续微积分:计算和对偶的逻辑和语言

获取原文
获取原文并翻译 | 示例

摘要

Truth and falsehood, questions and answers, construction and deconstruction; most things come in dual pairs. Duality is a mirror that reveals the new from the old via opposition. This idea appears pervasively in logic, where duality inverts "true" with "false" and "and" with "or." However, even though programming languages are closely connected to logics, this kind of strong duality is not so apparent in practice. Sum types (disjoint tagged unions) and product types (structures) are dual concepts, but in the realm of programming, natural biases obscure their duality.;To better understand the role of duality in programming, we shift our perspective. Our approach is based on the Curry-Howard isomorphism which says that programs following a specification are the same as proofs for mathematical theorems. This thesis explores Gentzen's sequent calculus, a logic steeped in duality, as a model for computational duality. By applying the Curry-Howard isomorphism to the sequent calculus, we get a language that combines dual programming concepts as equal opposites: data types found in functional languages are dual to co-data types (interface-based objects) found in object-oriented languages, control flow is dual to information flow, induction is dual to co-induction. This gives a duality-based semantics for reasoning about programs via orthogonality : checking safety and correctness based on a comprehensive test suite.;We use the language of the sequent calculus to apply ideas from logic to issues relevant to program compilation. The idea of logical polarity reveals a symmetric basis of primitive programming constructs that can faithfully represent all user-defined data and co-data types. We reflect the lessons learned back into a core language for functional languages, at the cost of symmetry, with the relationship between the sequent calculus and natural deduction. This relationship lets us derive a pure lambda-calculus with user-defined data and co-data which we further extend by bringing out the implicit control-flow in functional programs. Explicit control-flow lets us share and name control the same way we share and name data, enabling a direct representation of join points, which are essential for tractable optimization and compilation.
机译:真与假,问题与答案,建构与解构;大多数东西成对出现。二元性是一面镜子,通过对立面从旧事物中揭示了新事物。这个想法普遍存在于逻辑中,其中二元性将“ true”与“ false”转换为“ and”与“ or”。但是,即使编程语言与逻辑紧密相连,但这种强二元性在实践中并没有那么明显。总和类型(不带标签的联合)和产品类型(结构)是双重概念,但是在编程领域,自然偏差掩盖了它们的双重性。为了更好地理解双重性在编程中的作用,我们改变了看法。我们的方法基于Curry-Howard同构,即遵循规范的程序与数学定理的证明相同。本文探讨了根特森的演算学(一种浸入对偶性的逻辑)作为计算对偶性的模型。通过将Curry-Howard同构应用于后续演算,我们得到了一种将双重编程概念等同地结合在一起的语言:功能语言中的数据类型与面向对象语言中的共同数据类型(基于接口的对象)是双重的。 ,控制流对信息流是双重的,归纳对共归纳是双重的。这给出了通过正交性进行程序推理的基于对偶性的语义:基于全面的测试套件检查安全性和正确性。我们使用顺序演算的语言将逻辑思想应用于与程序编译相关的问题。逻辑极性的概念揭示了原始编程构造的对称基础,该构造可以忠实地表示所有用户定义的数据和共同数据类型。我们以对称性为代价,将所学到的课程反映回功能语言的核心语言中,并具有后续演算与自然演绎之间的关系。这种关系使我们可以导出具有用户定义数据和协数据的纯lambda微积分,并通过在函数程序中引入隐式控制流来进一步扩展。显式的控制流使我们可以像共享和命名数据一样共享和命名控件,从而实现对连接点的直接表示,这对于可控的优化和编译至关重要。

著录项

  • 作者

    Downen, Paul.;

  • 作者单位

    University of Oregon.;

  • 授予单位 University of Oregon.;
  • 学科 Computer science.
  • 学位 Ph.D.
  • 年度 2017
  • 页码 466 p.
  • 总页数 466
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类
  • 关键词

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号