×

从大步骤到小步骤语义,再到解释器专业化。 (英语) Zbl 07453190号

Fribourg,Laurent(ed.)等人,第八届核查与程序转换国际研讨会和第七届霍恩条款核查与合成研讨会会议记录,VPT/HCVS 2020,爱尔兰都柏林,2020年4月25日至26日。滑铁卢:开放出版协会(OPA)。电子。程序。西奥。计算。科学。(EPTCS)320,50-64(2020)。
摘要:我们研究命令式程序作为约束Horn子句的表示。从操作语义转换规则开始,我们将解释器编写为直接编码规则的约束Horn子句程序。然后,我们针对给定的源程序专门指定了一个解释器,以将源语言编译为Horn子句(第一个Futamura投影的实例)。对C子集的解释器的过程进行了详细描述,直接编码C的大步操作语义规则。可以基于小步语义进行类似的翻译,但我们展示了一种使用大步Horn子句的线性解释器获得小步表示的方法。这名口译员再次被专门用于实现从大步到小步的翻译。线性小步程序可以使用第三个解释器转换回大型非线性程序。使用Tarjan算法为线性程序计算正则路径表达式,然后该正则表达式引导解释器计算程序路径。转换是通过路径解释器的专业化实现的。在所有转换阶段,我们使用已建立的部分求值器并利用标准逻辑程序转换来删除谓词中的冗余数据结构和参数,并重命名谓词,以明确它们与原始源程序中的语句的链接。
关于整个系列,请参见[兹比尔1466.68013].

MSC公司:

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

参考文献:

[1] N.Björner、A.Gurfinkel、K.L.McMillan和A.Rybalchenko(2015):《程序验证的Horn子句求解器》。L.D.Beklemishev,A.Blass,N.Dershowitz,B.Finkbeiner&W.Schulte,编辑:逻辑与计算领域II,LNCS 9300,Springer,第24-51页,doi:10.1007/978-3319-23534-92·Zbl 1465.68044号 ·doi:10.1007/978-3-319-2334-92
[2] S.Blazy和X.Leroy(2009):C语言Clight子集的机械化语义。J.汽车。推理43(3),第263-288页,doi:10.1007/s10817-009-9148-3·Zbl 1185.68136号 ·doi:10.1007/s10817-009-9148-3
[3] E.De Angelis、F.Fioravanti、A.Pettorossi和M.Proietti(2014):通过迭代特殊化进行程序验证。科学。计算。程序。95,第149-175页,doi:10.1016/j.scico.2014.05.017·doi:10.1016/j.scico.2014.05.017
[4] E.De Angelis、F.Fioravanti、A.Pettorossi和M.Proietti(2015):通过程序专业化基于语义的验证条件生成。M.Falaschi和E.Albert,编辑:《第17届国际声明性编程原则与实践研讨会论文集》,意大利锡耶纳,2015年7月14日至16日,ACM,第91-102页,doi:10.1145/2790449.2790529·doi:10.1145/2790449.2790529
[5] B.Demoen(1992):关于Prolog程序向更高效二进制程序的转换。K.Lau和T.Clement主编:《逻辑程序合成与转换》,LOPSTR 92论文集,英国曼彻斯特大学逻辑程序合成和转换国际研讨会,1992年7月2日至3日,Springer计算机研讨会,第242-252页,doi:10.1007/978-1-4471-3560-917·doi:10.1007/978-1-4471-3560-917
[6] T.Despeyroux(1984):静态语义的可执行规范。G.Kahn、D.B.MacQueen和G.Plotkin主编:《数据类型的语义》,LNCS 173,Springer-Verlag,第215-233页,doi:10.1007/3-540-13346-11 11·Zbl 0541.68003号 ·doi:10.1007/3-540-13346-1_11
[7] V.Donzeau-Gouge、G.Huet、G.Kahn和B.Lang(1984):基于结构化编辑器的编程环境:MENTOR经验。D.Barstow、E.Sandewall和H.Shrobe主编:《交互式编程环境》,ISBN=978-0070038851,McGraw-Hill,第128-140页。
[8] Y.Futamura(1971):计算过程的部分评估——编译程序的一种方法。系统、计算机、控制2(5),第45-50页。
[9] J.P.Gallagher、M.Hermenegildo、B.Kafle、M.Klemen、P.L.García和J.Morales(2020):口译员知识库。http://webhotel4.ruc.dk/●jpg/软件/语义。
[10] G.Gange、J.A.Navas、P.Schachte、H.Søndergaard和P.J.Stuckey(2015):Horn子句作为程序分析和转换的中间表示。理论实践。日志。程序。15(4-5),第526-542页,doi:10.1017/S1471068415000204·Zbl 1379.68089号 ·doi:10.1017/S1471068415000204
[11] M.Gómez-Zamalloa、E.Albert和G.Puebla(2009):通过部分评估将Java字节码解码到Prolog。Inf.柔软。Technol公司。51(10),第1409-1427页,doi:10.1016/j.infsof.2009.04.010·doi:10.1016/j.infsof.2009.04.010
[12] S.Grebenshchikov、N.P.Lopes、C.Popeea和A.Rybalchenko(2012):从证明规则合成软件验证器。J.Vitek、H.Lin和F.Tip编辑:ACM SIGPLAN编程语言设计与实现会议,PLDI’12,ACM,第405-416页,doi:10.1145/2254064.2254112·doi:10.1145/2254064.2254112
[13] A.Gurfinkel、T.Kahsai、A.Komuravelli和J.A.Navas(2015):《SeaHorn验证框架》。D.Kroening和C.S.Pasareanu主编:《计算机辅助验证——第27届国际会议》,2015年7月18日至24日,加利福尼亚州旧金山,美国,《计算机科学学报》,第一部分,《9206年计算机科学讲稿》,Springer,第343-361页,doi:10.1007/978-3-319-21690-420·数字对象标识代码:10.1007/978-3-319-21690-4-20
[14] K.S.Henriksen和J.P.Gallagher(2006):通过逻辑粗粒度对PIC程序的抽象解释。摘自:第六届IEEE源代码分析和操作国际研讨会(SCAM 2006),2006年9月27日至29日,美国宾夕法尼亚州费城,IEEE计算机学会,第184-196页,doi:10.1109/SCAM.2006.1·doi:10.1109/SCAM.2006.1
[15] M.V.Hermenegildo、F.Bueno、M.Carro、P.López-García、R.Haemmerlé、E.Mera、J.F.Morales和G.Puebla(2011):Ciao系统概述。N.Bassiliades、G.Governatori和A.Paschke主编:基于规则的推理、编程和应用——第五届国际研讨会,RuleML 2011——欧洲,西班牙巴塞罗那,2011年7月19-21日。《计算机科学论文集》6826,Springer,第2页,doi:10.1007/978-3642-22546-8 2·doi:10.1007/978-3-642-22546-82
[16] M.V.Hermenegildo、G.Puebla、F.Bueno和P.López-García(2005):使用抽象解释的集成程序调试、验证和优化(以及Ciao系统预处理器)。《计算机编程科学》58(1-2),doi:10.1016/j.scico.2005.02.006·Zbl 1076.68540号 ·doi:10.1016/j.scico.2005.02.006
[17] C.A.R.Hoare(1969):计算机编程的公理基础。Commun公司。ACM 12(10),第576-580页,doi:10.1145/363235.363259·Zbl 0179.23105号 ·doi:10.1145/363235.363259
[18] H.Hojjat&P.Rummer(2018):ELDARICA Horn Solver。N.Björner&A.Gurfinkel,编辑:《2018计算机辅助设计中的形式方法》,FMCAD 2018,美国德克萨斯州奥斯汀,2018年10月30日至11月2日,IEEE,第1-7页,doi:10.23919/FMCAD.2018.8603013·doi:10.23919/FMCAD.2018.8603013
[19] B.Kafle&J.P.Gallagher(2017):Horn子句验证中的约束专业化。科学。计算。程序。137,第125-140页,doi:10.1016/j.scico.2017.01.002·doi:10.1016/j.scico.2017.01.002
[20] B.Kafle,J.P.Gallagher&P.Ganty(2018):约束Horn子句验证中的树维度。TPLP 18(2),第224-251页,doi:10.1017/S1471068418000030·Zbl 1478.68165号 ·doi:10.1017/S1471068418000030
[21] B.Kafle、J.P.Gallagher和J.F.Morales(2016):RAHFT:使用抽象解释和有限树自动机验证Horn子句的工具。收录于:计算机辅助验证-第28届国际会议,2016年7月17日至23日,加拿大安大略省多伦多市,CAV 2016,会议记录,第一部分,第261-268页,doi:10.1007/978-3319-41528-4 14·数字对象标识代码:10.1007/978-3-319-41528-4_14
[22] G.Kahn(1987):自然语义学。在F.Brandenburg,G.Vidal Naquet和M.Wirsing,编辑:STACS 87,第四届计算机科学理论方面年度研讨会,德国帕索,1987年2月19日至21日,《计算机科学论文集》247,施普林格,第22-39页,doi:10.1007/BFB039592·Zbl 0604.00016号 ·doi:10.1007/BFb0039592
[23] T.Kahsai、P.Rümmer、H.Sanchez和M.Schäf(2016):JayHorn:验证Java程序的框架。S.Chaudhuri&A.Farzan,编辑:《计算机辅助验证-第28届国际会议》,2016年7月17日至23日,加拿大安大略省多伦多市,2016年,会议记录,第一部分,计算机科学讲义9779,Springer,第352-358页,doi:10.1007/978-319-4128-4 19·文件编号:10.1007/978-3-319-41528-4_19
[24] Z.Kincaid、J.Breck、A.F.Boroujeni和T.W.Reps(2017):重新审视成分复发分析。A.Cohen&M.T.Vechev,编辑:《第38届ACM SIGPLAN编程语言设计与实现会议论文集》,2017年6月18日至23日,西班牙巴塞罗那,2017年,ACM,第248-262页,doi:10.1145/3062341.3062373·数字对象标识代码:10.1145/3062341.3062373
[25] M.Leuschel和J.Jörgensen(1999):使用手写编译器生成器LOGEN对Prolog进行高效专业化。电子票据。公司。科学。30(2),doi:10.1017/S1471068403001662·Zbl 1085.68020号 ·文件编号:10.1017/S1471068403001662
[26] M.Leuschel、D.Elphick、M.Varea、S.Craig和M.Fontaine(2006):Ecce和Logen部分时间评估器及其web界面。在J.Hatcliff&F.Tip中,编辑:PEPM,ACM,第88-94页,doi:10.1145/1111542.1111557·doi:10.1145/1111542.1111557
[27] M.Leuschel和M.H.Sörensen(1996):逻辑程序的冗余参数过滤。J.P.Gal-lagher,编辑:《逻辑编程合成与转换》,第六届国际研讨会,LOPSTR’96,瑞典斯德哥尔摩,1996年8月28日至30日,《论文集》,第83-103页,doi:10.1007/3-540-62718-9 6·doi:10.1007/3-540-62718-96
[28] J.Lloyd(1987):逻辑编程基础:第2版。Springer-Verlag,doi:10.1007/978-3-642-83189-8·兹比尔0668.68004 ·doi:10.1007/978-3-642-83189-8
[29] P.López-García,M.Klemen,U.Liqat&M.V.Hermenegildo(2016):参数资源使用静态分析的一般框架。理论实践。日志。程序。16(5-6),第849-865页,doi:10.1017/S1471068416000442·Zbl 1379.68097号 ·doi:10.1017/S1471068416000442
[30] K.Marriott、L.Naish和J.Lassez(1990):最具体的逻辑程序。安。数学。工件。智力。1,第303-338页,doi:10.1007/BF01531082·Zbl 0878.68036号 ·doi:10.1007/BF01531082
[31] M.Méndez-Lojo、J.A.Navas和M.V.Hermenegildo(2007):一种灵活的基于LP-的面向对象程序分析方法。在A.King中,编辑:《基于逻辑的程序合成与转换》,第17届国际研讨会,LOPSTR 2007,Kongens Lyngby,丹麦,2007年8月23日至24日,修订论文集,计算机科学讲座笔记4915,Springer,第154-168页,doi:10.1007/978-3-540-78769-3 11·Zbl 1179.68030号 ·doi:10.1007/978-3-540-78769-3_11
[32] H.R.Nielson&F.Nielson(1992):语义学与应用——正式介绍。威利专业计算,威利·Zbl 0875.68626号
[33] J.Peralta、J.P.Gallagher和H.Saglam(1998):通过分析约束逻辑程序分析强制程序。在G.Levi中,编辑:Static Analysis。第五届国际研讨会,SAS'98,比萨,Springer Verlag计算机科学讲座笔记1503,第246-261页,doi:10.1007/3-540-49727-7 15·doi:10.1007/3-540-49727-7_15
[34] A.Pettorossi和M.Proietti(1999):使用展开/折叠证明的逻辑程序的合成和转换。J.日志。程序。41(2-3),第197-230页,doi:10.1016/S0743-1066(99)00029-1·Zbl 0944.68024号 ·doi:10.1016/S0743-1066(99)00029-1
[35] G.D.Plotkin(1981):操作语义学的结构方法。技术报告DAIMI FN-19,奥胡斯大学计算机科学系。
[36] G.D.Plotkin(2004):结构操作语义学的起源。J.日志。阿尔盖布。程序。60-61,第3-15页,doi:10.1016/j.jlap.2004.03.009·Zbl 1072.68063号 ·doi:10.1016/j.jlap.2004.03.009
[37] G.D.Plotkin(2004):操作语义的结构方法。J.日志。阿尔盖布。程序。60-61,第17-139页,doi:10.1016/j.jlap.2004.03.009·Zbl 1072.68063号 ·doi:10.1016/j.jlap.2004.03.009
[38] R.E.Tarjan(1981):解决路径问题的快速算法。J.ACM 28(3),第594-614页,doi:10.1145/322261.322273·Zbl 0462.68042号 ·数字对象标识代码:10.1145/322261.322273
[39] T.Wei,J.Mao,W.Zou&Y.Chen(2007):一种识别反编译循环的新算法。H.R.Nielson和G.Filé,编辑:静态分析,第14届国际研讨会,SAS 2007,Kongens Lyngby,丹麦,2007年8月22日至24日,计算机科学论文集,4634,Springer,第170-183页,doi:10.1007/978-3-5406-74061-2 11·Zbl 1211.68078号 ·doi:10.1007/978-3-540-74061-2_11
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。