首页> 外文学位 >Automatically proving the termination of functional programs.
【24h】

Automatically proving the termination of functional programs.

机译:自动证明功能程序的终止。

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

摘要

Establishing the termination of programs is a fundamental problem in the field of software verification. For transformational programs, termination is used to extend partial correctness to total correctness. For reactive systems, termination reasoning is used to establish liveness properties. In the context of theorem proving, termination is used to establish the consistency of definitional axioms and to automate proofs by induction. Of course, termination is an undecidable problem, as Turing himself proved. However, the question remains: how automatic can a general termination analysis be in practice?;In this dissertation, we develop two new general frameworks for reasoning about termination and demonstrate their effectiveness in automating the task of proving termination in the domain of applicative first-order functional languages.;The foundation of the first framework is the development of the first known complete set of algorithms for ordinal arithmetic over an ordinal notation. We provide algorithms for ordinal ordering (<), addition, subtraction, multiplication, and exponentiation on the ordinals up to epsilon0. We prove correctness and complexity results for each algorithm. We also create a library for automating arithmetic reasoning over epsilon0 in the ACL2 theorem proving system. This ordinal library enables new termination proofs that were previously not possible in previous versions of ACL2.;The foundation of the second framework is an algorithm for fully automating termination reasoning with no user assistance. This algorithm uses a combination of theorem proving and static analysis to create a Calling Context Graph (CCG), a novel abstraction that captures the looping behavior of the program. Calling Context Measures (CCMs) are then used to prove that no infinite path through the CCG can be an actual computation of the program. We implement this algorithm in the ACL2, and empirically evaluate its effectiveness on the regression suite, a collection of over 11,000 user-defined functions from a wide variety of applications.
机译:建立程序的终止是软件验证领域中的一个基本问题。对于转换程序,终止用于将部分正确性扩展到总体正确性。对于反应系统,使用终止推理来建立活动性。在定理证明的上下文中,终止用于建立定义公理的一致性,并通过归纳自动证明。当然,正如图灵本人所证明的那样,终止是一个无法确定的问题。但是,问题仍然存在:通用终止分析如何在实践中实现自动化?;本文中,我们开发了两个新的通用框架来进行终止推理,并展示了它们在应用优先领域自动完成终止任务的有效性。顺序功能语言。;第一个框架的基础是针对序数符号的序数算术的第一个已知的完整算法集的开发。我们提供了在epsilon0之前的序数上的序数排序(<),加法,减法,乘法和乘幂的算法。我们证明每种算法的正确性和复杂性结果。我们还创建了一个库,用于在ACL2定理证明系统中针对epsilon0自动进行算法推理。该序数库启用了以前的ACL2版本以前不可能提供的新的终止证明。;第二个框架的基础是一种无需用户协助即可完全自动化终止推理的算法。该算法结合了定理证明和静态分析来创建“调用上下文图”(CCG),它是一种新颖的抽象,可以捕获程序的循环行为。然后,使用调用上下文度量(CCM)来证明通过CCG的无限路径都不能成为程序的实际计算。我们在ACL2中实现了该算法,并在回归套件上进行了经验评估,该套件包括来自各种应用程序的超过11,000个用户定义的函数。

著录项

  • 作者

    Vroon, Daron.;

  • 作者单位

    Georgia Institute of Technology.;

  • 授予单位 Georgia Institute of Technology.;
  • 学科 Computer Science.
  • 学位 Ph.D.
  • 年度 2007
  • 页码 189 p.
  • 总页数 189
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类
  • 关键词

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号