×

逻辑+控制:关于程序构建和验证。 (英语) Zbl 1425.68051号

摘要:本文给出了一个关于具有实际意义的Prolog程序(Howe和King的SAT求解器)语义的形式化推理示例。该程序被视为带有附加控制的定子句逻辑程序。逻辑程序是通过逐步求精的方法构造的,并对其正确性和完整性进行了证明。这些证明是声明性的——它们不涉及任何操作语义。逻辑程序构造的每一步都遵循一种系统方法来构造可证明正确和完整的程序。我们还证明了逻辑程序的正确性和完整性在最终的Prolog程序中得到了保持。此外,我们还证明了终止、发生-危险自由和非挣扎。
我们的示例显示了如何将处理“逻辑”和处理“控制”分开。大多数证明都可以在“逻辑”级别完成,从任何操作语义中抽象出来。
示例使用了近似规格;它们对于简化逻辑程序的推理至关重要。它还表明,语义表示程序转换的范式可能不够。我们建议考虑相对于近似规范保持正确性和完整性的转换。

MSC公司:

68N17号 逻辑编程
60年第68季度 规范和验证(程序逻辑、模型检查等)

软件:

SICStus公司
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] 英国公寓。R.1997年。从逻辑编程到Prolog。计算机科学国际丛书。普伦蒂斯·霍尔。
[2] 英国公寓。R.和Luitjes1995。用延迟声明验证逻辑程序。程序中。代数方法论和软件技术,AMAST’95,V.S.Alagar和M.Nivat,计算机科学讲义编辑,第936卷。施普林格,66-90.10.1007/3-540-60043-4·doi:10.1007/3-540-60043-4
[3] 公寓K。R.和Pedreschi 1993年。关于终止纯Prolog程序的推理。信息与计算106,1,109-157.10.1006/inco.1993.1051·Zbl 0786.68021号 ·doi:10.1006/inco.1993.1051
[4] BezemM.1993年。逻辑程序的强终止。逻辑编程杂志15,1&2,79-97.10.1016/0743-1066(93)90014-8·Zbl 0787.68016号 ·doi:10.1016/0743-1066(93)90014-8
[5] 卡尔森。和MildnerP.2012。SICStus Prolog–前25年。TPLP12,1-2,35-66·Zbl 1244.68016号
[6] 克拉克。L.1979年。谓词逻辑是计算形式主义。技术报告79/59,伦敦帝国理工学院。12月。
[7] 戴维斯。,洛格曼G。和Loveland D。W.1962年。用于理论证明的机器程序。ACM5的通信,7394-397.10.1145/368273.368557·Zbl 0217.54002号 ·数字对象标识代码:10.1145/368273.368557
[8] DeransartP.1993年。定程序声明性的证明方法。理论计算机科学118,2,99-166.10.1016/0304-3975(93)90107-5·Zbl 0783.68078号 ·doi:10.1016/0304-3975(93)90107-5
[9] 德兰萨特。和MałuszyáskiJ.1993。逻辑程序设计的语法观点。麻省理工学院出版社·Zbl 0849.68010号
[10] 魔鬼1990年。逻辑编程:系统程序开发。艾迪森·韦斯利。
[11] DrabentW.2012年。逻辑+控制:一个例子。在第28届逻辑程序设计国际会议(ICLP'12)的技术交流中,A.Dovier和V.S.Costa,Eds.Leibniz International Proceedings In Informatics(LIPIcs),Schloss Dagstuhl-Leibniz-Zentrum für Informatik GmbH,Dagstull Publishing,Saarbrücken/Watern,Germany,vol.17,301-311。http://drops.dagstuhl.de/opus/volltexte/2012/3631。 ·Zbl 1281.68078号
[12] DrabentW.2015。逻辑程序的完整性。《基于逻辑的程序合成和转换》,LOPSTR 2014。修订论文集。计算机科学讲义,第8981卷。斯普林格。CoRR abs/1411.3015(2014)中的扩展版本。http://arxiv.org/abs/1411.3015。 ·Zbl 1353.68034号
[13] DrabentW.2016a。逻辑程序的正确性和完整性。美国计算机学会计算逻辑学报17,3,18:1-18:32·Zbl 1367.68030号
[14] DrabentW.2016b。关于明确的程序答案和最少的Herbrand模型。TPLP16,4498-508·Zbl 1379.68056号
[15] DrabentW.2017。用割证明逻辑程序的完整性。计算的形式方面29,1,155-172.1007/s00165-016-0392-0·Zbl 1355.68033号 ·doi:10.1007/s00165-016-0392-0
[16] DrabentW公司。和MiłkowskaM.2005。证明正常程序的正确性和完整性——一种声明性方法。TPLP5,669-711·Zbl 1083.68018号
[17] 杰奈姆斯。和KingA.2008。用动态调度推断逻辑程序的非暂停条件。美国计算机学会计算逻辑学报9,3,17:1-17:43·Zbl 1367.68033号
[18] 国美电器公司。P.、KautzH.等人。,SabharwalA。和SelmanB.2008。可满足性求解器。在《知识表示手册》中,F.van Harmelen、V.Lifschitz和B.Porter,Eds.第2章,Elsevier,89-134。
[19] 豪·J。M.和KingA.2012。Prolog中SAT和SMT解决方案的一颗明珠。理论计算机科学435,43-55.10.1016/j.tcs.2012.02.024·Zbl 1248.68455号 ·doi:10.1016/j.tcs.2012.02.024
[20] KingA.2012年。私人通信。
[21] 科瓦尔斯基。A.1979年。算法=逻辑+控制。ACM22、7、424-436.1145/359131.359136的通信·Zbl 0404.68010号 ·doi:10.1145/359131.359136
[22] MaherM.J.1988年。逻辑程序的等效性。《演绎数据库和逻辑编程基础》,J.Minker,Ed.Morgan Kaufmann,627-658。
[23] NguyenM。T.、SchreyeD。D.、GieslJ。和施耐德KampP.2011。多项式:作为逻辑程序终止分析基础的多项式解释。TPLP11,1,33-63·Zbl 1222.68064号
[24] 佩德雷希德。和RuggierisS.1999。逻辑程序验证。逻辑编程杂志39,1-3,125-176.10016/S0743-1066(98)10035-3·Zbl 0947.68026号 ·doi:10.1016/S0743-1066(98)10035-3
[25] 佩德雷希德。,RuggieriS S.和SmausJ-2002年8月。终止逻辑程序的类。TPLP2,3,369-418·兹比尔1069.68537
[26] Pettorosi公司。,普罗埃蒂姆。和SenniV.2010。项目开发的转型方法。《逻辑编程25年展望:意大利逻辑编程协会的成就》,GULP,A.Dovier和E.Pontelli,Eds.计算机科学讲稿,第6125卷。施普林格,112-135.10.1007/978-3642-14309-0·Zbl 1191.68008号 ·doi:10.1007/978-3642-14309-0
[27] PfenningF.、。,1992年版。逻辑编程中的类型。麻省理工学院出版社。
[28] 夏皮罗E.1983。算法程序调试。麻省理工学院出版社。
[29] SmausJ.、。,山坡。M.和KingA.1998a。使用块声明防止多模式逻辑程序的实例化错误和循环。程序中。逻辑编程综合与转换,LOPSTR'98,P.Flener,Ed.计算机科学讲义,第1559卷。施普林格,289-307。
[30] SmausJ.、。,山坡。M.和KingA.1998b。以多种模式运行的块声明终止逻辑程序。程序中。《声明性编程原理》,PLILP’98,C.Palamidessi,H.Glaser和K.Meinke主编,《计算机科学讲义》,第1490卷,第73-88页。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。