×

通过线性化约束Horn子句来证明命令式程序的正确性。 (英语) Zbl 1379.68093号

摘要:我们提出了一种基于规范自动转换的命令式程序正确性验证方法。给定一个程序掠夺,我们考虑形式为(\{\phi\}{\mathit prog}\{\psi\})的部分正确性规范,其中断言\(\phi\)和\(\psi\)是由集合定义的谓词规格可能递归的Horn子句,前提中有线性算术(LA)约束(也称为约束Horn子句)。验证方法包括构造一组约束Horn子句,其可满足性意味着\(\{\phi\}{\mathit prog}\{\psi\}\)是有效的。我们强调了最先进的约束Horn子句求解方法的一些局限性,这里称为LA求解方法,它通过寻找谓词的线性算术解释来证明子句的可满足性。特别地,我们证明了存在一些规范,这些规范不能被任何一种LA-求解方法证明是有效的。这些规范要求证明一组约束Horn子句的可满足性,其中包含非线性子句(即,前提中包含多个原子的子句)。然后,我们提出一个转换,称为线性化,它将PC转换为一组线性的子句(即前提中最多包含一个原子的子句)。我们表明,一些用LA求解方法无法证明有效的规范,可以在线性化后证明有效。我们还提出了一种自动线性化的策略,并报告了使用我们的方法的初步实现获得的一些实验结果。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
68N17号 逻辑编程
第68季度第60季度 规范和验证(程序逻辑、模型检查等)
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] 阿尔伯塔省。,戈梅斯·扎马洛亚。,休伯特州。,和PueblaG.2007。使用逻辑程序分析和转换验证Java字节码。在《陈述语言的实践方面》中,M.Hanus,编辑。计算机科学讲义4354。弹簧,124-139.10.1007/978-3-540-69611-7·doi:10.1007/978-3-540-69611-7
[2] 公寓K。R.、de BoerF。美国和OlderogE-2009年3月。顺序和并发程序的验证,第三版,Springer。
[3] 贝诺伊。和KingA.1997。用CLP(R)推断参数大小关系。1996年8月28日至30日,瑞典斯德哥尔摩,第六届逻辑程序合成与转换国际研讨会,LOPSTR’96,会议记录,J.P.Gallagher,Ed.计算机科学讲义1207。施普林格,204-223。
[4] 比约纳、麦克米兰、。,和RybalchenkoA.2012。程序验证作为可满足性模理论。第十届满意度模理论国际研讨会论文集,SMT-COMP’12。3-11.
[5] Cimatti公司。,格里吉奥。,沙夫斯马布。,和SebastianiR.2013。MathSAT5 SMT求解器。在《TACAS会议录》中,N.Piterman和S.Smolka,Eds.计算机科学讲稿7795。施普林格,93-107·Zbl 1381.68153号
[6] 库索普。和CousotR.1977。抽象解释:通过构造不动点近似值对程序进行静态分析的统一格模型。第四届ACM-SIGPLAN编程语言原理研讨会论文集,POPL’77。美国医学会,238-252。
[7] 库索普。和HalbwachsN.1978。程序变量之间线性约束的自动发现。第五届ACM程序设计语言原理研讨会论文集,POPL'78。美国医学会,84-96。
[8] De Angelis东部。,菲奥拉万提法。,Pettorosi公司。,和ProiettiM.2014a。通过迭代专门化进行程序验证。计算机程序设计科学95,第2部分,149-175。2013年部分评估和程序操作的精选和扩展论文。
[9] De Angelis东部。,FioravantiF公司。,佩特罗西A。,和ProiettiM.2014b。VeriMAP:通过转换验证程序的工具。《第20届系统构建与分析工具与算法国际会议论文集》,TACAS’14。计算机科学课堂讲稿8413。施普林格,568-574。网址:http://www.map.uniroma2.it/VeriMAP。
[10] 穆拉。M.和BjörnerN.2008。Z3:一个高效的SMT求解器。《第14届系统构建与分析工具与算法国际会议论文集》,TACAS’08。计算机科学课堂讲稿4963。施普林格,337-340。
[11] 德施雷耶德。,格吕克。,约根森法官。,路易斯安那州。,马滕斯银行。,和瑟伦森。H.1999年。关联部分演绎:基础、控制、算法和实验。逻辑编程杂志41,2-3,231-277.10.1016/S0743-1066(99)00030-8·Zbl 0944.68025号 ·doi:10.1016/S0743-1066(99)00030-8
[12] 埃塔尔斯。和GabbrielliM.1996。CLP模块的转换。理论计算机科学166,101-146.10.1016/0304-3975(95)00148-4·Zbl 0872.68021号 ·doi:10.1016/0304-3975(95)00148-4
[13] 费尔辛德。,格雷宾S。,克莱巴诺夫。,吕末。,和UlbrichM.2014。自动化回归验证。第29届ACM/IEEE自动化软件工程国际会议论文集,ASE’14。ACM,349-360。
[14] 菲奥拉万提法。,佩特罗西A。,项目。,和SenniV.2013。无限状态系统验证的推广策略。逻辑程序设计理论与实践。GULP第25届年会特刊13、2、175-199·Zbl 1267.68080号
[15] 格雷本希科夫斯。,洛佩斯。P.、PopeeaC.、。,和RybalchenkoA.2012。根据证明规则合成软件验证器。《ACM SIGPLAN编程语言设计与实现会议论文集》,PLDI’12。405-416.
[16] HoareC.1969年。计算机程序设计的公理基础。CACM2,10(10月),576-580,583.10.1145/363235.363259·Zbl 0179.23105号 ·doi:10.1145/363235.363259
[17] JaffarJ.和MaherM.1994年。约束逻辑编程:一项调查。《逻辑程序设计杂志》19/20503-581。
[18] Jaffar J.、MuraliV、。,纳瓦斯J。A.和SantosaA。2012年12月。TRACER:用于验证的符号执行工具。第24届计算机辅助验证国际会议论文集,CAV’12。计算机科学课堂讲稿7358。斯普林格,758-766。http://paella.d1.comp.nus.edu.sg/tracer/网站。
[19] 卡夫勒B。和Gallagher J.P.2015。Horn子句验证中的约束专业化。2015年1月15日至17日,印度孟买,PEPM’15,《2015年部分评估和程序操纵研讨会会议记录》。美国医学会,85-90。
[20] 劳埃德银行。W.1987年。逻辑编程基础。柏林施普林格。第2版·Zbl 0668.68004号
[21] LeuschelM公司。和MassartT.2000。通过抽象解释和程序专门化进行无限状态模型检查。第九届基于逻辑的程序合成与转换国际研讨会(LOPSTR'99)会议记录,意大利威尼斯,A.Bossi,Ed.1817年计算机科学讲稿。施普林格,63-82。
[22] Lisitsa公司。和奈米提卡。第2008页。通过超级编译进行验证时的可达性分析。发现的国际期刊。计算。科学19、4、953-969.10.1142/S0129054108006066·Zbl 1162.68477号 ·doi:10.1142/S0129054108006066
[23] 马蒂亚塞维奇。1970年5月。可枚举集是丢番图。Doklady Akademii Nauk SSSR(俄语)191、279-282。
[24] 佩拉塔J。C.、GallagherJ.P.和SaglamH.1998年。通过约束逻辑程序分析对命令程序进行分析。第五届国际静态分析研讨会论文集,SAS’98,G.Levi,Ed.计算机科学讲稿1503。施普林格,246-261。
[25] 波多尔斯基。和RybalchenkoA.2007。ARMC:抽象精化软件模型检查的逻辑选择。《声明语言的实践方面》,PADL’07,M.Hanus,Ed.计算机科学课堂讲稿4354。施普林格,245-259.10007/978-3-540-69611-7·doi:10.1007/978-3-540-69611-7
[26] 雷诺兹公司。1998年期刊。程序设计语言理论。剑桥大学出版社·Zbl 0972.68507号
[27] 罗德里格斯-卡博内尔。和KapurD.2007a。使用抽象解释自动生成有界度多项式不变量。科学。计算。程序64,1,54-751.10.1016/j.scico.2006.03.003·Zbl 1171.68555号 ·doi:10.1016/j.scico.2006.03.003
[28] 罗德里格斯·卡博内尔。和KapurD.2007b。在简单循环中生成所有多项式不变量。J.塞姆。计算42,4,443-476.10.1016/j.jsc.2007.01.002·Zbl 1121.13034号 ·doi:10.1016/j.jsc.2007.01.002
[29] 吕末。,霍贾特。,和KuncakV.2013。Horn-子句验证的析取插值。2013年7月13日至19日,俄罗斯圣彼得堡CAV’13第25届计算机辅助验证国际会议记录,N.Sharygina和H.Veith编辑,计算机科学讲稿8044。施普林格,347-363。
[30] 西伯利克J。和StepánekP.1982。递归函数的Horn子句程序。《逻辑编程》,K.L.Clark和S.A.Tärnlund,Eds.学术出版社,325-340。
此参考列表基于出版商或数字数学图书馆提供的信息。它的项目与zbMATH标识符启发式匹配,并且可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。