证明助手中的“策略”如何工作?


44

问题:“策略”在证明助手中如何工作?它们似乎是指定如何将术语重写为等效术语的方法(对于“等效”的某些定义)。大概有正式的规则,我如何才能知道它们是什么以及它们如何工作?他们所涉及的不仅仅是减少Beta的顺序选择吗?

关于我的兴趣的背景:几个月前,我决定想学习形式数学。我之所以选择类型理论,是因为从初步研究来看,它看起来像《做事的正确方法》(tm Way to Do Things,tm),并且因为它似乎使编程和数学统一起来非常有趣。我认为我最终的目标是能够使用和理解像Coq这样的证明助手(我认为特别是能够使用依赖类型,因为我对表示矩阵类型之类的东西感到好奇)。我开始了解的很少,甚至不了解基本的函数式编程,但是我的进展缓慢。我已阅读并理解了大量的类型和编程语言(Pierce),并了解了一些Haskell和ML。


1
这是我的Coq视频教程math.andrej.com/2011/02/22/…
Andrej Bauer

Answers:


36

基本策略是向前或向后运行推理规则(例如,将假设和转换为或将目标转换为两个目标和ABABABAB具有相同的假设),应用引理(〜函数应用程序),将关于某种归纳类型的引理分解为每个构造函数的案例,依此类推。基本策略可能会成功或失败,具体取决于应用策略的上下文。更高级的策略就像运行基本策略的小功能程序一样,在目标和/或假设中对术语进行模式匹配,根据策略的成败做出选择,等等。更高级的策略涉及算术和其他特定种类的理论。有关Coq战术语言的主要论文如下:

  • D.德拉海 系统Coq的一种战术语言。在《编程和自动推理逻辑》(LPAR),留尼汪岛,《计算机科学讲义》 1955年第85-95页中。施普林格出版社,2000年11月。

构成基本策略实质的形式规则在此处的Coq用户指南或pdf的第4章中定义。

关于实施策略和战术(实际上是将其他策略作为论点的策略)的很有启发性的论文是:

Coq的战术语言具有局限性,即使用Coq编写的证明几乎不像手工制作的证明。为了使证据更清晰,已经进行了几次尝试。其中包括Isar(适用于Isabelle / HOL)和Mizar的证明语言。

另外: 您是否还知道ML最初是为实现LCF定理证明者的策略而设计的?为ML开发的许多思想(例如类型推断)已经影响了现代编程语言。


3
好答案。Adam Chlipala的带依赖类型的认证编程(adam.chlipala.net/cpdt)是在Coq中使用战术的另一个很好的资源。
jbapple 2011年

16

LCF确实是所有这些系统的祖父:Coq,Isabelle,HOL,包括ML编程语言(我们今天将其称为OCaml,SML以及F#)。是的,我将Coq纳入更大的LCF家族。相较于美国的美国举证助理(尤其是ACL2)或完全不相关的Mizar,Coq在文化上与伊莎贝尔(Isabelle)和HOL相当接近,这主要是由于战术的共同思想。

那么,从偶然的观察中剔除关于重写,转换,引入或消除连接词的策略是什么呢?

这里的主要分层原理继承自Milner的LCF:

  • 核心推理(正向推理),可以作为thm原始LCF方法中的抽象数据类型,也可以通过家族的Type-Theory分支(Coq,Matita)中的证明术语进行单独检查。这为证明者认为定理的结果提供了一定的逻辑基础。因此,您可能有一个采用⊢A和⊢B并得到gives A∧B的原始推论。另一个原始推论可以使您⊢t = u,其中u是t的β正规形式。这些机制都不是战术,但是,它们是标准逻辑中的推理规则

  • 目标导向的证明(向后推理)。这个想法是通过对“目标状态”进行细化,将其细分为越来越多的子目标,关闭子目标,直到全部解决,您才能对其进行操作。完成目标状态,将使定理从过程中弹出。LCF为目标引入了某些额外的逻辑基础结构,而这些基础结构仍然存在于HOL中:策略是一些ML功能,用于细化目标,并为细化提供理由。在证明的最后,根据上面概述的原始推论,以相反的顺序重放证明,以向前的方式生成证明。

Coq和Matita仍非常接近LCF原则。伊莎贝尔在这里与众不同:早在1989年,拉里·保尔森(Larry Paulson)就目标和战术的概念进行了改革,使它们更接近逻辑,这就是伊莎贝尔在这里的“纯粹”逻辑框架。Isabelle / Pure提供了含蕴含==>和量词!!的最小高阶逻辑!表示自然演绎规则的结构和目标状态。

例如,⊢A ==> B ==>A∧B是作为逻辑框架定理的(对象逻辑的)合取引入规则。

目标状态也只是定理,对于初始声明C,以⊢C ==> C开头,在中间状态(其中X,Y,Z为C)中,目标状态细化为⊢X ==> Y ==> Z ==> C是当前的子目标,该过程以⊢C结尾(无子目标)。

现在回到对所有这些证明更为统一的策略:给定一些目标状态的概念(例如上面的Isabelle),策略是一种将目标状态映射到(0、1或更多)后续行动的功能目标状态。而且,战术是这种战术功能的组合器,例如表达顺序组成,选择,重复等。实际上,战术和战术的语言与解析器组合器的“成功列表”方法有关。

策略允许系统地描述目标细化的某些策略。自从1970/80年代在LCF中发明以来,他们就取得了相当大的成功,但是它们却出了名的难以理解的证明脚本。

A. Asperti等人在PLMMS 2009中对该策略语言的某些方面进行了最新概述,请参见第22页的研讨会论文集

人们已经提到Mizar和Isabelle / Isar是人类可读的结构化推理的替代方法,但它们并不是基于这种意义上的策略。Mizar与LCF家族无关,因此它不知道该战术术语。Isabelle / Isar在某种程度上融合了战术传统,但是其证明方法的概念更加结构化(具有明确的Isar证明上下文,明确的链式事实指示以及在推理过程中避免了内部目标攻击)。

在过去的几十年中,对战术语言进行了更多的改革和重新考虑。例如,Coq社区的一个新分支更喜欢SSReflect(由G. Gonthier设计),而不是传统的Ltac。


12

证明助手中的“策略”如何工作?

我怀疑这个答案会有些混乱。

首先,仅仅问“策略在证明助手中如何工作”是不够的,因为它们在不同的证明助手中的工作方式不同。今天使用的助手主要有两类:从原始LCF派生的助手,例如Isabelle,HOL和HOL light,以及基于类型论的证明助手,例如Coq和Matita。在这两类不同的证明助手中,策略的工作方式不同,这反映出例如Isabelle的引擎盖下发生的事情与Matita的引擎盖下发生的事情完全不同。

问自己:当我们尝试证明Matita中的命题P时,发生了什么?我们引入类型为P的元变量X。可以说,我们玩一个游戏,对X进行细化,为不完全项添加越来越多的结构,直到得到一个完整的lambda项(即不包含任何更多的元变量)。一旦我们拥有一个完整的lambda项,我们就对P进行类型检查,确保它位于所需的类型中。然后我们看到,在Coq和Matita中,策略仅仅是从不完全证明条款到不完全证明条款的一种功能,希望可以在应用后为该术语添加一些结构(这种观察激发了Jojgov等人的近期工作) ,Pientka等)。

例如,Matita策略“简介”在现有术语上引入了lambda抽象,“案例”在术语中引入了match表达式,“应用”将一个术语的应用引入了另一个。这些基本策略可以使用高阶函数组合在一起,以创建更复杂的函数。但是,基本思想始终是相同的:一种策略始终旨在为不完整的证明条款添加一些结构。

请注意,实现者的目标是在每次战术应用后都提供一个再次进行类型检查的术语。严格来说,并不需要他们这样做,因为对于基于类型理论的证明助手而言,重要的是,当用户使用Qed证明时,我们拥有一个证明命题,该命题存在于命题P中。得出这个证明词基本上是无关紧要的。但是,Coq和Matita都旨在为用户提供一个(可能是不完整的)证明词,该词在每次战术应用后都会进行类型检查。但是,这种不变性可能(并且经常确实)会失败,特别是在基于CIC的证明助手必须执行的两个语法检查方面。

尤其是,我们可以采取一系列有效的方法来执行似乎有效的证明,直到没有悬而未决的目标为止。然后我们来到Qed假设的证明,只是发现Matita的终止检查器或其严格的积极性检查器抱怨,因为该策略生成的证明项使这些语法检查之一无效(即,参数位置的元变量实例化的递归调用的术语在语法上不小于原始参数)。这反映出CIC类型理论在某种意义上还不够“强壮”,并且没有反映其类型的积极性或大小句法要求(这种观点激发了Abel的大小类型,以及一些有关积极性类型的最新著作) )。

另一方面,LCF样式的证明助手则完全不同。在这里,内核由一个模块(通常在ML的变体中实现)组成,该模块包含抽象类型“ thm”,以及实现证明助手逻辑的推理规则,将“ thm”映射到“ thm”的函数,等等。向前。我们依靠ML的类型学来确保构造“ thm”类型值的唯一方法是通过这些推理规则(基本策略)。Isabelle的内核在这里

然后,证明由这些基本策略(或更复杂,更大的策略)的一系列应用组成,这些基本策略又是通过使用高阶函数将更简单的策略串在一起而制成的,在伊莎贝尔中,称为“战术”的高阶函数可以在这里看到)。与基于类型理论的证明助手不同,LCF样式的助手不需要保持明确的证明术语见证人在身边。构造的正确性保证了证明的正确性,我们对ML的打字纪律的信任(但是,许多助手,例如Isabelle确实会为其证明生成证明条款)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.