×

使用编译器IR进行关系程序推理。 (英语) Zbl 1426.68052号

摘要:关系程序推理涉及程序执行对的形式比较。关系推理的突出例子是程序等价性检查(考虑不同程序的执行)和检测非法信息流(考虑同一程序的两次执行)。到目前为止,关系推理的抽象逻辑基础已被充分理解。在本文中,我们讨论了进行推理所面临的一些挑战可行的两个主要问题是处理编程语言的功能丰富性,如\(\mathrm{C}\)和许多实际程序所展示的弱结构控制流。控制这种复杂性的一个流行方法是定义中间程序表示(IR)级别的分析比如现代编译器生成的。在本文中,我们描述了基于IR的关系验证背后的思想和见解。我们为在LLVM IR上运行的(mathrm{C})程序提供了一个程序等价性检查器。为了扩展该方法的范围并使其更有效,我们展示了如何使用动态分析来支持和加强静态验证。通过自动验证来自标准库不同实现的函数的等价性,证明了该方法的有效性。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
68N20型 编译与解释理论
60年第68季度 规范和验证(程序逻辑、模型检查等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Balliu,M.、Dam,M.和Guanciale,R.:自动化低级代码的信息流分析。2014年ACM SIGSAC计算机和通信安全会议记录,CCS’14,第1080-1091页。ACM(2014)
[2] Banerjee,A.,Naumann,D.A.,Nikouei,M.:具有框架和假设的关系逻辑。摘自:第36届IARCS软件技术和理论计算机科学基础年会,FSTTCS 2016,2016年12月13-15日,印度钦奈,第11:1-11:16页(2016)。doi:10.4230/LIPIcs。FSTTCS.2016.11版·Zbl 1391.68017号
[3] Barnett,M.,Chang,B.Y.E.,DeLine,R.,Jacobs,B.,Leino,K.R.M.:Boogie:面向对象程序的模块化可重用验证器。摘自:《第四届组件和对象形式方法国际会议论文集》,FMCO'05,第364-387页。施普林格,柏林(2006)
[4] Barthe,G.、Crespo,J.M.、Kunz,C.:使用产品程序进行关系验证。摘自:M.Butler,W.Schulte(编辑)《第17届形式方法国际研讨会论文集》,《计算机科学讲义》,第6664卷,第200-214页。施普林格(2011)·Zbl 0639.68054号
[5] Barthe,G.、Crespo,J.M.、Kunz,C.:超越2-安全:用于关系程序验证的非对称产品程序。收录于:《计算机科学的逻辑基础》,2013年1月6日至8日,美国加利福尼亚州圣地亚哥,2013年LFCS国际研讨会。《会议记录》,第29-43页(2013年)。doi:10.1007/978-3-642-35722-03·Zbl 1419.68063号
[6] Beringer,L.:关系分解。载:《第二届交互式定理证明国际会议论文集》,《计算机科学讲义》,第6898卷,第39-54页。施普林格,柏林(2011)·Zbl 1342.68070号
[7] Beyene,T.A.,Popeea,C.,Rybalchenko,A.:解决存在量化Horn子句。收录于:N.Sharygina,H.Veith(编辑)《计算机辅助验证——第25届国际会议》,CAV 2013,《计算机科学论文集》,第8044卷,第869-882页。柏林施普林格出版社(2013)
[8] Björner,N.,McMillan,K.L.,Rybalchenko,A.:关于解决普遍量化的Horn子句。摘自:F.Logozzo,M.Fähndrich(eds.)Static Analysis-20第20届国际研讨会,SAS 2013,《计算机科学论文集》,第7935卷,第105-125页。施普林格(2013)
[9] De Angelis,E.,Fioravanti,F.,Pettorossi,A.,Proietti,M.:通过Horn子句转换进行关系验证。摘自:《静态分析——第23届国际研讨会》,2016年9月8日至10日,英国爱丁堡,SAS 2016,会议记录,第147-169页(2016)。doi:10.1007/978-3-662-53413-78·Zbl 1394.68227号
[10] 达夫·T:请解释一下!在线发布。可在https://www.lysator.liu.se/c/duffs-device.html (1988)
[11] Ernst,M.D.,Perkins,J.H.,Guo,P.J.,McCamant,S.,Pacheco,C.,Tschantz,M.S.,Xiao,C.:动态检测可能不变量的daikon系统。科学。计算。程序。69(1-3), 35-45 (2007).https://homes.cs.washington.edu网站/mernst/pubs/daikon-tool-scp2007.pdf·Zbl 1161.68390号
[12] Falke,S.,Kapur,D.,Sinz,C.:使用位向量算法对命令式程序进行终止分析。摘自:《第四届国际验证软件会议论文集:理论、工具、实验》(VSTTE’12),第261-277页。柏林施普林格出版社(2012)
[13] Felsing,D.,Grebing,S.,Klebanov,V.,Rümmer,P.,Ulbrich,M.:自动化回归验证。摘自:《第29届ACM/IEEE自动化软件工程国际会议论文集》,ASE’14,第349-360页。ACM(2014)
[14] Giesl,J.、Thiemann,R.、Schneider-Kamp,P.、Falke,S.:使用AProVE的自动终端证明。收录于:V.van Oostrom(编辑)《重写技术与应用》,第15届国际会议(RTA 2004),《计算机科学论文集》,第3091卷,第210-220页。斯普林格(2004)
[15] GNU C库。https://www.gnu.org/software/libc/ (2016)
[16] Godlin,B.,Strichman,O.:回归验证。载:第46届设计自动化年会论文集,DAC’09,第466-471页。ACM(2009)
[17] Gurfinkel,A.,Kahsai,T.,Komuravelli,A.,Navas,J.A.:SeaHorn验证框架。收录:D.Kroening,C.S.Pasareanu(eds.)计算机辅助验证(CAV),《计算机科学学报》,第9206卷,第343-361页。斯普林格(2015)
[18] Hawblitzel,C.,Kawaguchi,M.,Lahiri,S.K.,Rebélo,H.:相互总结:统一程序比较技术。摘自:《第一届中级验证语言国际研讨会(BOOGIE)论文集》(2011年)。可在http://research.microsoft.com/en-us/um/people/moskal/boogie2011/boogie2012_pg40.pdf
[19] Hawblitzel,C.,Kawaguchi,M.,Lahiri,S.K.,Rebélo,H.:使用自动定理证明程序进行模块化比较。收录于:M.P.Bonacina(编辑)《自动扣减——CADE-24——第24届自动扣减国际会议》,2013年。《计算机科学讲义》,第7898卷,第282-299页。施普林格(2013)·Zbl 1381.68054号
[20] Hoder,K.,Björner,N.:广义属性定向可达性。摘自:《第十五届满意度测试理论与应用国际会议论文集》,SAT’12,第157-171页。柏林施普林格出版社(2012)·Zbl 1273.68229号
[21] Lahiri,S.K.,Hawblitzel,C.,Kawaguchi,M.,Rebélo,H.:SymDiff:命令式程序的语言无关语义差异工具。摘自:《第24届计算机辅助验证国际会议记录》,CAV’12,第712-717页。柏林施普林格出版社(2012)·Zbl 0639.68054号
[22] Lattner,C.,Adve,V.:LLVM:终身程序分析和转换的编译框架。摘自:2004年CGO代码生成与优化:反馈定向与运行时优化国际研讨会论文集。IEEE计算机学会(2004)
[23] 冯·莱特纳(von Leitner),F.:饮食习惯。https://www.fefe.de/dietlibc/ (2016)
[24] McMillan,K.,Rybalchenko,A.:使用插值计算关系不动点。技术代表MSR-TR-2013-6,Microsoft Research(2013)。http://research.microsoft.com/apps/pubs/default.aspx?id=180055
[25] Merz,F.,Falke,S.,Sinz,C.:LLBMC:使用编译器IR对C和C++程序进行有界模型检查。在:第四届验证软件国际会议论文集:理论、工具、实验,VSTTE’12,第146-161页。施普林格·弗拉格,柏林,海德堡(2012)
[26] Myers,E.W.:O(ND)差分算法及其变体。算法1(2),251-266(1986)·Zbl 0639.68054号 ·doi:10.1007/BF01840446
[27] Necula,G.C.:优化编译器的翻译验证。SIGPLAN注释35(5),83-94(2000)。doi:10.1145/358438.349314·doi:10.1145/358438.349314
[28] Nguyen,T.、Kapur,D.、Weimer,W.、Forrest,S.:Dig:多项式和数组不变量的动态不变量生成器。ACM事务处理。柔和。工程方法。23(4), 30:1-33:30 (2014). doi:10.1145/2556782·doi:10.1145/2556782
[29] OpenBSD库。http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/ (2016)
[30] Partush,N.,Yahav,E.:通过推测关联进行抽象语义差异。摘自:《2014年ACM面向对象编程系统语言与应用国际会议论文集》,OOPSLA’14,第811-828页。ACM(2014)。doi:10.1145/2660193.2660245
[31] Rakamaric,Z.,Emmi,M.:SMACK:从验证器实现中分离源语言细节。参加:2014年7月18日至22日在奥地利维也纳举行的计算机辅助验证第26届国际会议,CAV 2014,作为维也纳逻辑夏季的一部分。诉讼记录,第106-113页(2014年)。doi:10.1007/978-3-319-08867-97
[32] Rümmer,P.,Hojjat,H.,Kuncak,V.:Horn子句验证的析取插值。摘自:《第25届计算机辅助验证国际会议记录》,CAV’13,第347-363页。柏林施普林格出版社(2013)
[33] Sharma,R.,Aiken,A.:从不变量检查到使用随机搜索的不变量推理。摘自:A.Biere,R.Bloem(编辑)《计算机辅助验证:2014年第26届国际会议》,CAV,2014年,维也纳逻辑夏令营,VSL 2014,奥地利维也纳,2014年7月18-22日。会议记录,第88-105页。Springer International Publishing,Cham(2014)。doi:10.1007/978-3-319-08867-96·Zbl 1358.68197号
[34] Sharma,R.,Gupta,S.,Hariharan,B.,Aiken,A.,Liang,P.,Nori,A.V.:代数循环不变量的数据驱动方法。M.Felleisen,P.Gardner(编辑)《编程语言和系统:第22届欧洲编程研讨会》,ESOP 2013,作为欧洲软件理论与实践联合会议的一部分,ETAPS 2013,意大利罗马,2013年3月16-24日。会议记录,第574-592页。施普林格-柏林-海德堡,柏林,海德堡(2013)。doi:10.1007/978-3-642-37036-6_31·Zbl 1381.68061号
[35] Smith,E.W.,Dill,D.L.:分组密码实现的自动形式验证。载:《2008年计算机辅助设计形式化方法国际会议论文集》,FMCAD'08,第6:1-6:7页。IEEE出版社,美国新泽西州皮斯卡塔韦(2008)。http://dl.acm.org/citation.cfm?id=1517424.1517430
[36] Stepp,M.、Tate,R.、Lerner,S.:LLVM的基于平等的翻译验证器。摘自:第23届计算机辅助验证国际会议记录,第737-742页。柏林施普林格(2011)。网址:http://www.cs.cornell.edu/罗斯/出版物/eqsat/
[37] Tristan,J.B.,Govereau,P.,Morrisett,G.:评估llvm的值-图形翻译验证。SIGPLAN注释46(6),295-305(2011)。数字对象标识代码:10.1145/1993316.1993533·数字对象标识代码:10.1145/1993316.1993533
[38] Ulbrich,M.:中间语言的动态逻辑:验证、交互和细化。卡尔斯鲁厄理工学院博士论文(2013)。http://nbn-resolving.org/urn:nbn:de:swb:90-411691
[39] Verdoolaege,S.,Janssens,G.,Bruynooghe,M.:使用加宽处理循环的静态仿射程序的等价性检查。ACM事务处理。程序。语言系统34(3),11:1-11:35(2012)。数字对象标识代码:10.1145/2362389.2362390·Zbl 1242.68076号 ·数字对象标识代码:10.1145/2362389.2362390
[40] Verdoolaege,S.、Palkovic,M.、Bruynooghe,M.,Janssens,G.、Catthoor,F.:现实多媒体系统中基于扩展的等价性检查的经验。《电子杂志》。测试。26(2),279-292(2010)·doi:10.1007/s10836-009-5140-4
[41] Welsch,Y.,Poetzsch-Heffter,A.:使用Boogie验证面向对象库的向后兼容性。摘自:《第14届类Java程序形式化技术研讨会论文集》,《FTfJP’12》,第35-41页。ACM(2012年)
[42] Zaks,A.,Pnueli,A.:Covac:通过交叉积的程序分析进行编译器验证。收录于:FM 2008:形式方法,第15届形式方法国际研讨会,芬兰图尔库,2008年5月26日至30日,会议记录,第35-51页(2008)。doi:10.1007/978-3-540-68237-05·Zbl 0639.68054号
[43] Zaks,A.,Pnueli,A.:编译器验证的程序分析。摘自:第八届ACM SIGPLAN-SIGSOFT软件工具和工程程序分析研讨会论文集,PASTE’08,第1-7页。ACM,美国纽约州纽约市(2008年)。数字对象标识代码:10.1145/1512475.1512477
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。