×

用于程序验证的谓词配对。 (英语) Zbl 1478.68153号

摘要:众所周知,命令式程序部分正确性的验证可以归结为约束Horn子句的可满足性问题。然而,最先进的约束Horn子句求解器(或CHC求解器)基于谓词抽象有时无法验证可满足性,因为他们寻找在给定的约束类中可定义的模型,称为可定义模型。我们引入了一种转换技术,称为谓词配对在许多有趣的情况下,它能够将一组子句转换为一个等价可满足集,其可满足性可以通过找到一个(mathcal{a})可定义模型来证明,因此可以通过最先进的CHC求解器进行有效验证。特别地,我们证明了,在(mathcal{A})上的非常一般的条件下,展开/折叠转换规则保持了一个(mathcal{A}\)可定义模型的存在性,即,如果原始子句具有一个(mathcal{A}\)-可定义模型,那么转换的子句具有一种(mathcali{A}\\)-可确定模型。相反的情况一般不成立,我们提供了适当的条件,在这些条件下,转换的子句有一个可定义的模型当且仅当最初的模型有一个可定义的模型。然后,我们提出了一种策略,称为谓词配对,它指导转换规则的应用,目的是导出一组子句,这些子句的可满足性问题可以通过寻找\(\mathcal{a}\)可定义模型来解决。谓词配对(PP)策略引入了一个新的谓词,该谓词由原始子句集中出现的两个谓词的连词以及约束连词定义。我们将通过一些示例说明,即使新谓词的定义原子连词不存在(mathcal{A})可定义模型,也可能存在新谓词。我们还将提供一些案例研究,表明谓词配对在验证程序的关系属性也就是说,与两个程序相关的属性(例如程序等价性)或同一程序的两次执行(例如非干涉)。最后,我们对提出的技术进行了实验评估,以评估谓词配对在提高CHC求解能力方面的有效性。

MSC公司:

60年第68季度 规范和验证(程序逻辑、模型检查等)
03B70号 计算机科学中的逻辑
68N17号 逻辑编程
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] 尽管如此。,戈梅斯·扎马洛亚。,休伯特。和PueblaG.2007。使用逻辑程序的分析和转换验证Java字节码。程序中。《声明语言的实用方面》,M.Hanus编辑,《计算机科学讲义》,第4354卷。施普林格,124-139。
[2] 巴特。,克雷斯波。M.和KunzC.2011。使用产品程序进行关系验证。程序中。FM 2011:形式方法-第17届形式方法国际研讨会,爱尔兰利默里克,2011年6月20日至24日。计算机科学讲义,第6664卷。斯普林格,200-214。
[3] 贝诺伊。和KingA.1997。用CLP(R)推断参数大小关系。程序中。第六届逻辑程序合成与转换国际研讨会,LOPSTR’96,瑞典斯德哥尔摩,1996年8月28日至30日,J.P.Gallagher,Ed.,计算机科学讲稿,第1207卷。施普林格,204-223。
[4] 本顿,2004年。静态分析和程序转换的简单关系正确性证明。程序中。第31届ACM SIGPLAN-SIGACT编程语言原理研讨会,POPL 2004,意大利威尼斯,2004年1月14-16日。ACM,14-25岁·Zbl 1325.68057号
[5] 比约纳尔,吉尔芬克尔。,麦克米兰。L.和RybalchenkoA.2015年。用于程序验证的Horn子句求解器。在逻辑和计算领域II——尤里·古雷维奇75岁诞辰之际的论文,L.D.Beklemishev、A.Blass、N.Dershowitz、B.Finkbeiner和W.Schulte,Eds.,计算机科学讲稿,第9300卷。瑞士施普林格,24-51·Zbl 1465.68044号
[6] 布拉德利A。R.、MannaZ。和SipmaH。B.2006年。阵列的决定因素是什么?程序中。第七届国际验证、模型检验和抽象解释会议。2006年VMCAI。计算机科学讲义,第3855卷。施普林格,427-442·Zbl 1176.68116号
[7] 查基群岛。,格芬克尔A。和StrichmanO.2012。多线程程序的回归验证。程序中。验证、模型检查和抽象解释第13届国际会议,VMCAI 2012,费城,宾夕法尼亚州,美国,2012年1月22日至24日,V.Kuncak和A.Rybalchenko,编辑,计算机科学讲稿,第7148卷。施普林格,119-135·Zbl 1325.68060号
[8] CiobácáS。,卢卡努德。,鲁苏夫。和RosuG.2014。一个独立于语言的相互程序等价性证明系统。程序中。《形式方法和软件工程——第16届形式工程方法国际会议》,2014年11月3日至5日,卢森堡ICFEM,卢森堡,S.Merz和J.Pang编辑,计算机科学讲义,第8829卷。斯普林格,75-90。
[9] 库索特。和CousotR.1977。抽象解释:通过构造不动点近似值对程序进行静态分析的统一格模型。程序中。第四届ACM-SIGPLAN编程语言原理研讨会,POPL’77。美国医学会,238-252。
[10] De Angelis东部。,菲奥拉万提法。,佩特罗西A。和ProiettiM.2014a。通过迭代专门化进行程序验证。《计算机编程科学》95,第2部分,149-175。2013年部分评估和程序操作的精选和扩展论文。
[11] DeAngelis,E.,FioravantiF。,佩特罗西A。和ProiettiM.2014b。VeriMAP:通过转换验证程序的工具。程序中。第20届系统构建和分析工具和算法国际会议,TACAS’14。计算机科学讲义,第8413卷。施普林格,568-574。网址:http://www.map.uniroma2.it/VeriMAP。
[12] De Angelis东部。,菲奥拉万提法。,佩特罗西A。和ProiettiM.2015a。通过线性化约束Horn子句来证明命令式程序的正确性。逻辑程序设计的理论与实践15,4-5,635-650.1017/S1471068415000289S14710684150000289·Zbl 1379.68093号 ·doi:10.1017/S1471068415000289
[13] De Angelis东部。,菲奥拉万提法。,佩特罗西A。和ProiettiM.2015b。用于数组操作程序的基于规则的验证策略。基础信息140,3-4,329-355.10.3233/FI-2015-1257·兹比尔1348.68131 ·doi:10.3233/FI-2015-1257
[14] DeAngelis,E.,FioravantiF。,佩特罗西A。,和ProiettiM.2016。通过Horn子句转换进行关系验证。程序中。第23届静态分析国际研讨会,SAS 2016,英国爱丁堡,2016年9月8日至10日,X.Rival,Ed.,计算机科学讲稿,第9837卷。斯普林格,147-169·Zbl 1394.68227号
[15] DeAngelis,E.,FioravantiF。,佩特罗西A。和ProiettiM.2017。通过程序专门化基于语义的验证条件生成。计算机程序科学147,3-4,78-108.10.1016/j.scico.2016.11.002·doi:10.1016/j.scico.2016.111.002
[16] deMoura,L.M.和BjörnerN.2008年。Z3:高效的SMT求解器。程序中。第14届系统构建和分析工具和算法国际会议,TACAS’08。计算机科学讲义,第4963卷。施普林格,337-340。
[17] DeSchreye,D.,GlückR。,约根森法官。,路易斯安那州。,马滕斯B。和瑟伦森。H.1999年。关联部分演绎:基础、控制、算法和实验。逻辑编程杂志41,2-3,231-277.10.1016/S0743-1066(99)00030-8·兹比尔0944.68025 ·doi:10.1016/S0743-1066(99)00030-8
[18] 德布雷斯。K.和RamakrishnanR.1994。使用魔术变换对逻辑程序进行抽象解释。逻辑编程杂志18,149-176.10016/0743-1066(94)90050-7·Zbl 0795.68037号 ·doi:10.1016/0743-1066(94)90050-7
[19] 埃塔尔斯。和GabbrielliM.1996。CLP模块的转换。理论计算机科学166101-146.10.1016/0304-3975(95)00148-4·Zbl 0872.68021号 ·doi:10.1016/0304-3975(95)00148-4
[20] 费迪尤科维奇。,格芬克尔A。和SharyginaN.2016。通过抽象模拟实现属性定向等价。程序中。计算机辅助验证:第28届国际会议,CAV 2016,第二部分,加拿大多伦多,2016年7月17日至23日,S.Chaudhuri和A.Farzan,Eds.,计算机科学讲稿,第7792卷。施普林格国际出版公司·Zbl 1411.68065号
[21] 费尔辛德。,格雷宾S。,克莱巴诺夫。,吕末。和UlbrichM.2014。自动化回归验证。程序中。2014年9月15日至19日在瑞典瓦斯特拉斯举行的ACM/IEEE自动化软件工程国际会议,I.Crnkovic、M.Chechik和P.Grünbacher,Eds.,349-360。
[22] 甘特yP。,IosifR公司。和KonečníF.2013。整数程序的过程摘要近似不足。程序中。《用于系统构建和分析的工具和算法:第19届国际会议》,TACAS 2013,作为欧洲软件理论和实践联合会议的一部分举行,ETAPS 2013,罗马,意大利,2013年3月16日至24日,N.Piterman,Scott A.Smolka,Eds.,计算机科学讲稿,第7795卷。施普林格,245-259·Zbl 1381.68052号
[23] 戈德林B。和StrichmanO.2008。证明递归过程等价性的推理规则。信息学报45,6,403-439.10007/s00236-008-0075-2·Zbl 1161.68013号 ·doi:10.1007/s00236-008-0075-2
[24] Grebenshchikov股份有限公司。,洛佩斯。P.、PopeeaC。和RybalchenkoA.2012。根据证明规则合成软件验证器。程序中。ACM SIGPLAN编程语言设计与实现会议,PLDI’12。405-416.
[25] GurfinkelA公司。,KahsaiT。,Komuravelli公司。和NavasJ.2015。SeaHorn验证框架。计算机辅助验证:第27届国际会议,2015年7月18日至24日,美国加利福尼亚州旧金山,CAV 2015。计算机科学讲义9206。施普林格,343-361。
[26] 囤积C.1969。计算机编程的公理基础。ACM12通讯,10(10月),576-580.10.1145/363235.363259·Zbl 0179.23105号 ·doi:10.1145/363235.363259
[27] 霍德克、比约纳和德穆拉。2011年3月。μZ-具有约束的固定点的有效引擎。程序中。《计算机辅助验证》,第23届国际会议,CAV’11,美国犹他州雪鸟,2011年7月14日至20日,G.Gopalakrishnan和S.Qadeer编辑,《计算机科学讲义》,第6806卷。施普林格,457-462。
[28] 霍贾特。,科内克·F。,加里尔·F·。,碘自由基。,昆卡kV。和RümmerP.2012。数字转换系统的验证工具包。程序中。《FM’12:形式方法》,第18届国际研讨会,法国巴黎,2012年8月27日至31日,D.Giannakopoulou和D.Méry编辑,计算机科学讲义,第7436卷。施普林格,247-251。
[29] JaffarJ.和MaherM.1994年。约束逻辑编程:一项调查。《逻辑程序设计杂志》19/20503-581·Zbl 0900.68127号
[30] Jaffar J.,桑托萨。和VoicuR.2009。CLP遍历的一种插值方法。《约束程序设计的原理与实践》,CP'09,I.Gent编辑,《计算机科学讲义》,第5732卷。施普林格,454-469。
[31] 卡夫勒B。和GallagherJ.P.2017a。Horn子句验证中的约束专业化。计算机程序科学137,125-140.10.1016/j.scico.2017.01.002·doi:10.1016/j.scico.2017.01.002
[32] 卡夫勒B。和GallagherJ.P.2017b。使用凸多面体抽象和基于树自动机的细化进行Horn子句验证。计算机语言、系统和结构47,2-18.10.1016/j.cl.2015.11.001·兹比尔1379.68239 ·doi:10.1016/j.cl.2015.11.001
[33] 卡夫勒B。,加拉赫J.P.和莫拉莱斯J。2016年6月。RAHFT:使用抽象解释和有限树自动机验证Horn子句的工具。程序中。2016年7月17日至23日,加拿大安大略省多伦多市,2016年CAV第一部分,计算机辅助验证第28届国际会议。计算机科学讲义,第9779卷。施普林格,261-268。
[34] LahiriS.K.和McMillanK。L.、SharmaR。和HawblitzelC.2013。差异断言检查。程序中。欧洲软件工程会议和ACM SIGSOFT软件工程基础研讨会联席会议,ESEC/FSE’13,俄罗斯联邦圣彼得堡,2013年8月18-26日,B.Meyer,L.Baresi和M.Mezini,Eds.,ACM,345-355。
[35] 勒罗伊X.2009。真实编译器的形式验证。ACM52,7,107-115.10.1145/1538788.1538814的通信·doi:10.1145/1538788.1538814
[36] LeuschelM公司。和BruynoogheM.2002。通过部分演绎实现逻辑程序专业化:控制问题。逻辑程序设计理论与实践2,4&5,461-515.10.1017/S147106840200145X·Zbl 1105.68331号 ·文件编号:10.1017/S147106840200145X
[37] 劳埃德J。W.1987年。逻辑编程基础。柏林斯普林格·弗拉格。第2版·Zbl 0668.68004号
[38] 洛佩斯。P.和MonteiroJ.,2016年。具有未解释函数和整数算法的程序的自动等价性检查。国际技术转让软件工具杂志18,4,359-374.10.1007/s10009-015-0366-1·doi:10.1007/s10009-015-0366-1
[39] 麦克米兰。L.和RybalchenkoA.2013年。使用插值求解约束Horn子句。MSR技术报告2013-6,微软报告。
[40] 门德尔松E.1997。数学逻辑导论。查普曼和霍尔出版社,英国伦敦,第4版·Zbl 0915.03002号
[41] 梅恩德斯·洛约姆。,纳瓦斯J。A.和HermenegildoM。2008年5月。一种灵活的、基于(C)LP的面向对象程序分析方法。程序中。第17届基于逻辑的程序合成与转换国际研讨会,2007年8月23日至24日,丹麦Kongens Lyngby,LOPSTR’07。计算机科学讲义,第4915卷。施普林格,154-168·Zbl 1179.68030号
[42] MinéA.2006年。八角形抽象域。高阶和符号计算19,1,31-100.1007/s10990-006-8609-1·Zbl 1105.68069号 ·doi:10.1007/s10990-006-8609-1
[43] 佩拉塔J。C.、GallagherJ.P.和SaglamH.1998年。通过分析约束逻辑程序分析命令式程序。程序中。第五届国际静态分析研讨会,SAS’98,G.Levi,Ed.,计算机科学讲稿,第1503卷。施普林格,246-261。
[44] 佩特罗西A。和ProiettiM.1994。逻辑程序的转换:基础和技术。逻辑编程杂志19,20,261-320·Zbl 0942.68528号
[45] 波多尔斯基。和RybalchenkoA.2007。ARMC:通过抽象精化进行软件模型检查的逻辑选择。程序中。声明语言的实践方面,PADL’07,M.Hanus,编辑,计算机科学讲义,第4354卷。施普林格,245-259。
[46] 吕末。,霍贾特。和KuncakV.2013。Horn子句验证的析取插值。程序中。第25届计算机辅助验证国际会议,2013年7月13日至19日,俄罗斯圣彼得堡CAV’13,N.Sharygina和H.Veith编辑,计算机科学讲稿,第8044卷。施普林格,347-363。
[47] 斯特里赫马诺。和VeitsmanM.2016。非平衡递归函数的回归验证。程序中。FM 2016:正式方法-第21届国际研讨会,塞浦路斯利马索尔,2016年11月9日至11日。计算机科学讲义,第9995卷。施普林格国际出版社,645-658·Zbl 1427.68055号
[48] 塔马基。和SatoT.1984。逻辑程序的展开/折叠转换。程序中。第二届逻辑程序设计国际会议,ICLP’84,S。Tärnlund,Ed.,乌普萨拉大学,乌普巴拉,瑞典,127-138。
[49] VerdoolaegeS公司。,詹森斯G。和BruynoogheM.2012。使用加宽处理循环的静态仿射程序的等价性检查。ACM事务处理。程序。语言系统34、3、11·Zbl 1242.68076号
[50] 扎克萨。和PnueliA.2008。CoVaC:通过交叉积的程序分析进行编译器验证。程序中。第十五届形式方法国际研讨会(FM 2008),芬兰图尔库,2008年5月26日至30日。J.Cuéllar、T.S.E.Maibaum和K.Sere,Eds.,《计算机科学讲义》,第5014卷。施普林格,35-51岁。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。