自动推理(四)

例如,要了解从多伦多到罗马的航班,请询问Prolog先驱,看看条款航班(多伦多,罗马)是否从给定的计划中遵循。 要做到这一点,通过SLD解决方案,该箴言将~flight(多伦多,罗马)添加到计划条款,并尝试派生空子句[],

1。航班(多伦多,伦敦)程序条款

2。航班(伦敦,罗马)程序条款

3。航班(芝加哥,伦敦)程序条款

4。飞行(x,y)∨~flight〜vlight(x,z)∨~flight~flight(z,y)程序条款

5。~flight(多伦多,罗马)否定的结论

6。〜~flight(多伦多,z)∨~flight~flight(z,罗马)res 5 4

7。~flight(伦敦,罗马)res 6 1

8。[] res 7 2

Prolog计划中的条件形式的规则增加了他们的可读性,并且还可以以更友好的方式推理底层透露:证明多伦多和罗马之间的航班(多伦多,罗马),统一这个条款随后的飞行(X,Y)第四个条款中的第四个条款本身就可以证明飞行(多伦多,Z)和飞行(Z,罗马)。 这可以被视为在替代{z←伦敦}以来的情况下的情况(多伦多,伦敦)和飞行(伦敦,罗马)本身可以提供。 请注意,定理箴言不仅建立了多伦多和罗马之间存在的航班,而且还可以通过从证据中使用的统一提取来提取Toronto-London-Rome的实际行程。

Prolog必须解决至少两个广泛的问题,以实现逻辑编程语言的理想。 逻辑计划由描述是真实的事实和规则组成; 任何不可提供的任何程序都被认为是假的。 关于我们前面的例子,由于不能从计划推导出来,因此航班(多伦多,波士顿)不是真的。 通过纳入运算符 根据定义,如果文字L本身无法推断,则L不是成功。 这种称为否定失败的机制一直是批评的目标。 否定失败不会完全捕获否定的标准概念,两者之间存在显着的逻辑差异。 标准逻辑包括喇叭逻辑,是单调的,这意味着通过添加新的公理扩大AxioM,简单地扩大了从中衍生的定理集; 然而,否定失败是非单调的,并向现有的Prolog计划添加新的程序条款可能会导致一些目标停止成为定理。 第二个问题是控制问题。 目前,如果计划是实现可接受的效率水平,程序员需要提供公平的控制信息。 例如,程序员必须小心,其中条款在程序中列出的顺序,或者文字如何在子句中排序。 未能执行合适的工作可能导致效率低下或更差,不终止程序。 程序员还必须在程序条款中嵌入提示,以防止递送在搜索空间中的某些路径(通过使用剪切运算符)或完全修剪它们(通过使用失败。最后但并非最不重要的,以提高他们的效率,许多实现Prolog不完全实施统一并绕过耗时的尚未致力于关键的测试 - 所谓的检查负责检查统一机的适用性进行检查。这导致了非疑问的微积分,可能导致Prolog程序所需的目标(来自a计算的观点)实际上它不应该(从逻辑的角度来看)。

有旨在扩展其范围的prolog的变化。 通过实施模型消除程序,Prolog技术定理箴言(PTTP)(Stickel 1992)将Prolog延伸到完整的一阶逻辑中。 实施实现了健全和完整性。 超越一阶逻辑,λprolog(miller&nadathur 1988)基于高阶建设性逻辑的语言。

4.2 SAT溶剂

确定逻辑公式可靠性的问题因其在工业中的重要适用性而受到自动推理社区的许多关注。 如果将真实值分配给其变量,则命题公式是满意的。 例如,分配(P←TRUE,Q←TRUE,R←FALSE)不会使(p∨r)&~Q TRUE(P←TRUE,Q←FALSE,R←FALSE)确实如此,因此,公式是满意的。 确定是否是一个公式是满足的或不称为布尔满足性问题-S SAT的短路,并且对于N个变量的公式,可以解决:检查每个可能的分配,以查看是否存在满足公式的至少一个分配,即,即这是真的。 这种方法显然是完整的:如果原始公式是满足的,那么我们最终将找到一个这样的令人满意的作业; 但如果配方是矛盾的(即,不可满意),我们也能够确定这一点。 就像清楚一样,特别是在后一种情况下,这个搜索采取指数级的时间,并且想象更有效的算法的愿望是完全合理的,特别是因为许多计算问题,如图形 - 理论问题,网络设计,存储和检索等很多。调度,节目优化和许多其他(Garey&Johnson 1979)可以表示为SAT实例,即作为某些命题公式的SAT问题代表问题。 鉴于SAT是NP-COMPLED(COOK 1971),它非常不太可能存在多项式算法; 然而,这并不排除存在足够高效的饱和算法的存在问题。

Davis-Putnam-Logemann-Loveland(DPLL)算法是第一个SAT搜索算法之一(Davis&Putnam 1960; Davis,Logemman&Loveland 1962),并且仍被认为是最好的完整卫星索盘之一; 今天存在的许多完整的SAT程序可以被视为DPLL的优化和概括。 从本质上讲,DPLL搜索过程通过考虑可以选择分配的方式进行,以使原始公式成为真实。 例如,考虑CNF中的公式

p&~q&(~p∨q∨r)和(p∨~s)

由于P是一个结合,但也必须是一个单位子句,如果整个公式是真的,则P必须是真的。 此外,~p的值与~p∨q∨r的真相没有贡献,并且不管s如何都是如此。因此,整个公式减少到

~q&(q∨r)

同样,~Q必须是真的,公式进一步减少到

r

哪个力量是真的。 从这个过程中,我们可以恢复分配(P←真,q←false,r←true,s←false)证明原始公式是满足的。 公式可能导致算法到分支; 通过分支的搜索达到了一个死胡议,当时一个条款被视为假的误判子句 - 可以丢弃已经部分构造的突出条款的所有常量所在的所有变化。 为了说明:

1 r&(p∨q)和(~p∨q)和(~p∨~q)给定

2。(p∨q)&(~p∨q)&(~p∨~q)通过让←真

3。问答。通过让p←真实

4? 冲突:Q和~q不能既有真实

5。(p∨q)&(~p∨q)&(~p∨~q)回溯到(2):←真实仍然持有

6。~p。通过让Q←为真

7。真。通过让~p为真,即,p←false

因此,通过存在(P←FALSE,Q←TRUE,R←TRUE)的公式是满意的。 DPLL算法由诸如术语索引(以有利的方式排序的公式变量排序)进行更有效,则按时间回溯(如果该过程导致冲突条款,则撤消对先前分支点的撤消工作),以及冲突驱动学习(确定要保留的信息和返回的信息)。 这些策略的组合导致搜索空间的大修剪; 对于更广泛的讨论,感兴趣的读者被引导到Zhang&Malik 2002。

快速的背包络计算揭示了由公式代表的(算法)的惊人的计算时间(算法),其与60变量很少。 智能机智:一个问题表示为带有10个变量的布尔公式,提供了一个带有10个百分之一秒的线性解决方案,只需四个百分之四个,如果公式分别具有40和60个变量,则六百分之一秒即可完成。 在戏剧性的对比中,如果对问题的解决方案是指数的(例如,2N),那么时间要完成10,40和60变量的时间将分别为千分之一,13天和365世纪。 这证明了自动推理社区的聪明才智和当前基于SAT的搜索算法的力量,即可以用合理的效率来处理数千个变量的现实世界问题。 Küchlin&Sinz 2000讨论了在工业汽车产品数据管理领域的SAT应用,其中18,000(基本)布尔公式和17,000个变量用于表达客户订单的约束。 作为另一个例子,Massacci&Mararo 2000讨论了逻辑密码分析的应用,即,验证作为SAT问题的加密算法的性质。 他们展示了如何找到密码攻击的关键是类似于找到模型分配 - 用于布尔公式; 其应用程序中的公式编码U.S数据加密标准(DES)的商业版本,其编码需要60,000个条款和10,000个变量。

虽然SAT在概念上非常简单,但它的内心性质并不是很好地理解 - 没有标准,通常可以应用于回答为什么一个SAT问题比另一个问题更难。 然后应该毫不奇怪地令人遗憾的是,在某些SAT实例上往往良好的算法不对别人表现不佳,并且在设计混合算法解决方案时努力结合了互补方法的强度 - 见Prasad,BIERE&Gupta 2005在验证硬件设计中的应用。

SAT混合策略的最新进展与超级计算能力相结合,允许三个计算科学家团队解决布尔毕达哥拉斯三元问题,在Ramsey理论中是一个长期的开放问题:可以将{1,2,...}的自然数是分为两部分,没有含有三倍(a,b,c)的部分,使得a2 + b2 = c2? Heule,Kullmann&Marek 2016证明这无法通过显示集合{1,2,...,n}来实现这一点,因为n = 7824,但这是不可能的n≥7825。 表达这种粗略简单的问题作为靠近38,000个条款和13,000个变量的SAT问题,其中大约一半的变量表示当n = 7824时,问题是满足的,而另一半代表它不是n = 7825; 在这两者中,证明后者更具挑战性,因为它要求不可起理的证据,即,没有存在这样的分区。 考虑到所有27825个可能的两部分分区的天真蛮力方法显然是出现问题,并且在基于多阶段的SAT的框架内使用“巧妙”算法来解决组合中的难题,由五个阶段解决困难问题而攻击问题:编码(将问题作为SAT公式编码),转换(使用子句消除和对称性断开技术优化编码),拆分(使用拆分启发式将问题划分为子问题),解决(搜索满足分配或者使用快速处理的缺乏),并验证(验证前期阶段的结果)。 特别重要的是立方体和征服的应用,一个混合SAT策略对硬组合问题特别有效。 该策略与冲突驱动的条款学习(CDCL)相结合,前者旨在使用全球启发式和后者构建小型的二元搜索树,其旨在找到使用当地启发式的短属反驳。

将问题分成106个硬子问题(称为“立方体”)后,这些被交给了800个并行工作的踩踏超级计算机上的800个核心,这是在进一步分裂和CDCL条款嘎吱嘎吱的2天后,解决问题并交付了200个-terabyte证明验证工作。 在当之无愧地庆祝自动推理的这一重大成就之后,并且在娱乐增强的SAT方法的所有新应用程序之后(特别是在硬件和软件验证领域),我们应该向数学家询问一些特别重要的问题:还有更多建立这个结果的有洞察力的方式,将涉及更传统和智力令的数学证明方法? 或者,据我国对给定场的理解(在这种情况下,组合学),当没有人类可以检查证明时,解决问题的值是什么?因此没有见解? 即使是负责结果的团队也承认,“来自SAT求解器的不可起理的证明是从人类的角度来看,巨大的随机信息(没有直接理解)”。 猜想已经解决,但我们基本上没有潜在的想法是什么让7825如此特别。 也许来自这些考虑因素的真正价值是他们导致我们思考更深层次的问题:关于特定问题的结构是什么,使其成为标准数学治疗的特定问题,而不是要求无意识的蛮力方法? 虽然正在考虑这个问题,但是SAT可以在某些数学问题上提供最佳攻击线。

DPLL搜索过程已扩展到量化逻辑。 MACE是一种基于DPLL算法的流行程序,可搜索具有平等的一阶公式的有限模型。 作为示例(McCune 2001),表明并非所有组都是换向器,可以直接指导MACE寻找组件的模型,也可以伪造换向法则,也可以等效地查找:

e⋅x= x。(左上身份)

i(x)⋅x= e。(左)

x(⋅y)⋅z=x⋅(y⋅z)(相关性)

a⋅b≠b⋅a。(拒绝换向)

MEACE找到这些公理的六个元素模型,其中⋅被定义为:

⋅0 1 2 3 4 5

0 0 1 2 3 4 5

1 1 0 4 5 2 3

2 2 3 0 1 5 4

3 3 2 5 4 0 1

4 4 5 1 0 3 2

5 5 4 3 2 1 0

在哪里我被定义为:

x 0 1 2 3 4 5

我(x)0 1 2 3 4 5

该示例还再次示出了使用自动扣除系统的好处:将人类研究人员提出上述或类似型号多久? 对于更具挑战性的问题,该计划被用作对基于分辨率的定理箴言PROVER9(以前的OTTER)的实际补充,PROVER9搜索联合寻找(计数器)模型的证明和均衡。 要查找此类模型,Mace将一阶问题转换为一组“扁平”条款,用于增加模型大小,将其实例化为命题条款并作为SAT问题解决。 该方法已经在其他自动化推理系统中实施,最值得注意的是在悖论模型发现器中,术术方法已经通过四种额外的技术提高了一些显着的效率改进(Claessen&Sörensson2003):术语定义(为了减少扁平条款中的变量数量),静态对称减少(为减少同构模型的数量),对推断进行排序(以更精细的级别应用对称减少)和增量sat(以在连续模型之间重用搜索信息大小)。 与Isabelle / Hol(Blanchette&Nipkow 2010)的反例,也适用于单独自动推理系统的互补能力的策略也适用于高阶逻辑,例如由Nitpick(Blanchette&Nipkow2010)的Conderexample发电机。 Brown 2013描述了用于高阶逻辑的定理证明程序,该程序使用SAT解决方案做大部分工作; 该程序是一个完整的无缺陷的地面驳回正验,它纳入了实例化的限制,并已在Satallax定理箴言(棕色2012)中实施。

在一阶逻辑中解决SAT问题的极大兴趣的方法是满足性模拟理论(SMT),其中问题的制剂中的符号的解释受到背景理论的限制。 例如,在线性算术中,函数符号仅限于+和 - 。 作为另一个例子,在阵列的扩展理论中(McCarthy 1962)读取(a,i)读取(a,i)在索引i处返回阵列a的值,并写入(a,i,x)返回与a的值相同的数组,但是在i处的值是x。 更正式,

(读写Axiom 1)

∀a:array.∀i,j:index.∀x:value.i = j→读(写(a,i,x),j)= x

(读写Axiom 2)

∀a:array.∀i,j:index.∀x:value.i≠→读(写(a,i,x),j)=读取(a,j)

(extensionality)

∀a,b:array.∀i:index.a = b→读(a,i)=读取(b,i)

在这些公理的上下文中,SMT求解器将尝试建立给定的一阶公式的可靠性(或,双方,有效性),或者为此重要的数千种公式,例如

我-j = 1&f(读(写(一个,我,2),j + 1)=读(写(一个,我,f(我-j + 1)),我)

(Ganzinger等人2004)讨论了一种用于SMT称为DPLL(t)的方法,该方法包括一般的DPLL(X)发动机,该发动机与背景理论T. Bofill等人一起配合使用。 (2008)在阵列理论的设置中呈现方法,其中DPLL发动机负责给定公式列举命题模型,而SOLVERT检查这些模型是否与阵列理论一致。 他们的方法是声音和完整的,并且可以顺利地扩展到多维阵列。

SMT在验证应用中特别成功,最符合的软件验证。 通过SWT改进了SAT求解器的效率,现在正在设计更高效的SMT溶剂(De Moura 2007)。 还需要进行全面的比较和潜在的整合,提供基于SMT的验证方法,包括有界模型检查,K-Excuction,Precate抽象和与Interpolants(Beyer,Dangl&Wendler 2018和2021)。

4.3扣除电脑代数

即使是最简单的数学事实也需要大量的域知识来证明。 作为一项规则,自动定理普查缺乏如此丰富的知识,并试图通过应用基本扣除规则来构建第一原理的证据。 这种方法导致非常冗长的证据(假设找到了证据),每个步骤都以最基本的逻辑级别合理。 可以获得较大的推理步骤和数学推理能力的显着改进,然而,通过与计算机代数系统相互作用,也可以称为象征性计算系统。 计算机代数系统是一种计算机程序,可帮助用户进行数学表达式的符号操作和数字评估。 例如,当被要求计算不正确的积分时

0

e-a2t2cos(2bt)dt

一位能力的计算机代数系统会很快回复答案

π

2a的

e-b2的/的a2

基本上,计算机代数系统通过拍摄用户输入的输入表达式来操作,并连续应用于它一系列转换规则,直到结果不再更改(有关更多详细信息,请参阅术语重写部分)。 这些转变规则编码了大量的域名(数学)知识,使符号系统在应用数学家,科学家和工程师手中制作强大的工具,试图攻击从微积分的各种各样的字段中的问题以及对组合和数字理论的求解方程的解决方程。

在数学中解决问题涉及扣除和计算的相互作用,决策程序是两者之间的模糊分裂; 因此,我们在此作为演绎计算机代数(DCA)的演绎和符号系统的整合势必是一种富有成效的组合。 Analytica(Bauer,Clarke&Zhao 1998)是一个专内装饰在Mathematica的定理谚语,一种强大而流行的计算机代数系统。 除了提供演绎引擎外,AmaryTica还通过定义多个重写规则来扩展Mathematica的功能 - 更确切地说,关于Summation和Inequalities的身份 - 在系统中缺少,以及提供GOSPer的实施用于查找无限度过度尺度综合的封闭形式的算法。 配备这一扩展知识,Analytica可以证明来自真实分析的半自动定理,包括一系列LEMMAS直接导致伯尼斯坦近似定理证明。 以下是定理的声明只是让读者提供我们正在处理的数学丰富程度的感觉:

(本章完)

相关推荐