×

使用经过验证的编译器实现多线程Java的类型安全模型。 (英语) Zbl 1451.68178号

摘要:本文介绍了JinjaThreads,它是多线程Java源代码和字节码的统一、类型安全模型,在证明助手Isabelle/HOL中进行了形式化。语义将顺序方面与多线程特性(如锁、分叉和联接、中断和等待通知机制)严格分开。这种分离产生了一个交错框架和独立于语言的死锁概念,并使类型安全证明模块化。JinjaThreads的非优化编译器将源代码转换为字节码。它的正确性证明保证了生成的字节码显示出与源代码完全相同的可观察行为,即使是在无限执行和Java内存模型下也是如此。语义和编译器是可执行的。JinjaThreads构建并重用了Nipkow小组的Java形式化Jinja、Bali、Java和Java。作为在Isabelle/HOL学习Java超过十五年的成果,它构成了一个大型且长期的案例研究。它表明,相当标准的形式化技术伸缩性很好,并突出了形式化重用的挑战、好处和缺点。

MSC公司:

60年第68季度 规范和验证(程序逻辑、模型检查等)
68甲15 编程语言理论
68N20型 编译与解释理论
68问题55 计算理论中的语义学
68伏15 定理证明(自动和交互式定理证明、演绎、解析等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] 丙酮,L;格拉贝克,RJ;福克,W;Ingólfsdóttir,A,带静默步骤的公理化前缀迭代,Inf.Comput。,127, 26-40, (1996) ·Zbl 0855.68030号 ·doi:10.1006/inco.1996.0047
[2] Alves-Foss,J.(编辑):《Java的形式语法和语义》,LNCS,第1523卷。斯普林格(1999)。https://doi.org/10.1007/3-540-48737-9 ·Zbl 0938.68559号
[3] Backes,M.,Busenius,A.,Hriţcu,C.:关于为真实安全协议开发和形式化可扩展代码生成器。收录于:Goodloe,A.E.,Person,S.(eds.)NFM 2012,LNCS,第7226卷,第371-387页。施普林格(2012)。https://doi.org/10.1007/978-3-642-28891-3_34
[4] Ballarin,C,《Locales:数学理论的模块系统》,J.Autom。原因。,52, 123-153, (2014) ·Zbl 1315.68218号 ·doi:10.1007/s10817-013-9284-7
[5] Barthe,G.,Crégut,P.,Grégoire,B.,Jensen,T.,Pichardie,D.:MOBIUS证明携带代码基础设施。收录于:de Boer,F.、Bonsangue,M.、Graf,S.、de Roever,W.P.(编辑)《组件和对象的形式方法》,LNCS,第5382卷,第1-24页。施普林格(2008)。https://doi.org/10.1007/978-3-540-92188-2_1
[6] Batty,M.、Memarian,K.、Nienhuis,K.,Pichon-Pharabod,J.、Sewell,P.:编程语言并发语义问题。收录于:Vitek,J.(编辑)《2015年员工持股计划》,LNCS,第9032卷,第283-307页。斯普林格(2015)。https://doi.org/10.1007/978-3-662-46669-8_12
[7] 北贝尔布利迪亚;Debbabi,M,《JVML的动态操作语义》,J.Object Technol。,6, 71-100, (2007) ·doi:10.5381/jo.2007.6.3.a2
[8] Berghofer,S.,Strecker,M.:从证明助手中提取正式验证的完全可执行编译器。收录于:COCV 2003,ENTCS,第82卷(2),第377-394页(2003)。https://doi.org/10.1016/S1571-0661(05)82598-8
[9] Bergstra,J.A.,Klop,J.W.,Olderog,E.R.:没有混乱的失败:公平抽象的新过程语义。在:编程概念的形式描述III(IFIP 1987),第77-103页。爱思唯尔科学出版社(1987)
[10] Blanchette,J.C.,Nipkow,T.:Nitpick:基于关系模型查找器的高阶逻辑反例生成器。收录于:Kaufmann,M.,Paulson,L.C.(编辑)ITP 2010,LNCS,第6172卷,第131-146页。施普林格(2010)。https://doi.org/10.1007/978-3642-14052-5_11 ·Zbl 1291.68326号
[11] 博格德纳什,D.,罗什u,G.:K-Java:Java的完整语义。收录于:POPL 2015,第445-456页。ACM(2015)。https://doi.org/10.1145/2676726.2676982 ·Zbl 1281.68072号
[12] Breitner,J.、Graf,J.,Hecker,M.、Mohr,M.和Snelting,G.:关于低确定性安全性的改进。摘自:Piessens,F.,Viganó,L.(编辑)《2016年邮报》,LNCS,第9635卷,第68-88页。施普林格,柏林(2016)。https://doi.org/10.1007/978-3-662-49635-0_4
[13] 连接有限设备配置(CLDC)规范1.1。http://jcp.org/aboutJava/communityprocess/final/jsr139/index.html
[14] Czarnik,P.,Schubert,A.:扩展Java字节码的操作语义。收录于:Barthe,G.,Fournet,C.(编辑)TGC 2008,LNCS,第4912卷,第57-72页。施普林格(2008)
[15] Dave,MA,《编译器验证:参考书目》,SIGSOFT Softw。工程注释,28,2-2,(2003)·doi:10.1145/966221.966235
[16] Drossopoulou,S.,Eisenbach,S.:描述Java的语义并证明类型的正确性。收录于:Alves-Foss,J.(编辑)《Java的形式语法和语义》,LNCS,第1523卷,第542-542页。斯普林格(1999)。https://doi.org/10.1007/3-540-48737-9_2
[17] Farzan,A.,Chen,F.,Meseguer,J.,Rošu,G.:JavaFAN中Java程序的形式化分析。收录于:Alur,R.,Peled,D.(编辑)CAV 2004,LNCS,第3114卷,第501-505页。斯普林格(2004)。https://doi.org/10.1007/978-3-540-27813-9_46 ·Zbl 1103.68611号
[18] Farzan,A.、Meseguer,J.、Rošu,G.:Java FAN中的形式化JVM代码分析。收录于:Rattray,C.,Maharaj,S.,Shankland,C.(编辑)AMAST 2004,LNCS,第3116卷,第132-147页。斯普林格(2004)。https://doi.org/10.1007/978-3-540-27815-3_14 ·Zbl 1214.68188号
[19] 弗拉纳根,C;弗伦德,SN;Lifshin,M;Qadeer,S,原子性类型:Java的静态检查和推理,ACM Trans。程序。语言系统。,30, 1-53, (2008) ·doi:10.1145/1377492.1377495
[20] Giffhorn,D.:并行程序的切片及其在信息流控制中的应用。卡尔斯鲁厄技术研究所Fakultät für Informatik博士论文(2012年)
[21] Gosling,J.、Joy,B.、Steele,G.、Bracha,G、Buckley,A.:Java语言规范:Java SE 8版。甲骨文美国公司(2015)
[22] Goto,M.、Jagadeesan,R.、Pitcher,C.、Riely,J.:放松记忆模型的类型。收录于:TLDI 2012,第25-38页。ACM(2012)。https://doi.org/10.1145/203786.2103791
[23] Grossman,D.:在Cyclone中键入安全多线程。收录于:TLDI 2003,第13-25页。ACM(2003)。https://doi.org/10.1145/604174.604177
[24] 哈特尔,PH;Moreau,L,形式化Java、Java虚拟机和Java卡的安全,ACM Compute。调查。,33, 517-558, (2001) ·doi:10.1145/503112.503115
[25] Huisman,M.,Petri,G.:BicolanoMT:字节码级多线程Java的形式化。In:BYTECODE 2008,理论计算机科学电子笔记(2008)
[26] Java平台,标准版8 API规范(2014)。http://docs.oracle.com/javase/8/docs/api/
[27] Kildall,G.A.:全球程序优化的统一方法。收录于:POPL 1973,第194-206页。ACM(1973)。https://doi.org/10.1145/512927.512945 ·Zbl 0309.68020号
[28] Klein,G.:验证Java字节码验证。慕尼黑理工大学信息研究所博士论文(2003年)
[29] 克莱因,G;Nipkow,T,验证轻量级字节码验证,Concurr。计算。实际。实验,13,1133-1151,(2001)·Zbl 0997.68018号 ·doi:10.1002/cpe.597
[30] 克莱因,G;Nipkow,T,验证字节码验证器,Theor。计算。科学。,298, 583-626, (2002) ·Zbl 1038.68109号 ·doi:10.1016/S0304-3975(02)00869-1
[31] Klein,G.,Nipkow,T.:Jinja不是Java。收录:Klein,G.、Nipkow,T.、Paulson,L.C.(编辑)《正式证据档案》。http://www.isa-afp.org/entries/Jinja.shtml (2005). 正式证明开发。访问日期:2018年1月31日
[32] 克莱因,G;Nipkow,T,类Java语言、虚拟机和编译器的机器选择模型,ACM Trans。程序。语言系统。,28, 619-695, (2006) ·数字对象标识代码:10.1145/1146809.1146811
[33] Klein,G.,Nipkow,T.,von Oheimb,D.,Nieto,L.P.,Schirmer,N.,Strecker,M.:Isabelle中的Java源代码和字节码形式化:巴厘岛。Isabelle/HOL/Bali的Isabelle来源(2002)
[34] 克莱因,G;Strecker,M,验证字节码验证和类型认证编译,J.Log。代数程序。,58, 27-60, (2004) ·Zbl 1067.68039号 ·doi:10.1016/j.jlap.2003.07.004
[35] 克莱因,G;Wildmoser,M,验证字节码子程序,J.Autom。原因。,30, 363-398, (2003) ·Zbl 1031.68040号 ·doi:10.1023/A:1025095122199
[36] Krebbers,R.:C标准在Coq中正式化。奈梅亨Radboud大学博士论文(2015)
[37] Kumar,R.,Myreen,M.O.,Norrish,M.,Owens,S.:CakeML:ML的验证实施。收录:POPL 2014,第179-191页。ACM,纽约(2014)。https://doi.org/10.1145/2535838.2535841 ·Zbl 1284.68405号
[38] Lamport,L,《如何制作正确执行多进程程序的多处理器计算机》,IEEE Trans。计算。,28, 690-691, (1979) ·Zbl 0419.68045号 ·doi:10.1109/TC.1979.1675439
[39] Leroy,X.:编译器后端的正式认证或:使用校对助手对编译器进行编程。收录于:POPL 2006,第42-54页。ACM(2006)。https://doi.org/10.11145/1111037.1111042 ·Zbl 1369.68124号
[40] Leroy,X,一个正式验证的编译器后端,J.Autom。原因。,43,363-446,(2009年)·Zbl 1185.68215号 ·doi:10.1007/s10817-009-9155-4
[41] 勒罗伊,X;Blazy,S,类C内存模型的形式验证及其用于验证程序转换,J.Autom。原因。,41, 1-31, (2008) ·Zbl 1154.68039号 ·doi:10.1007/s10817-008-9099-0
[42] Lindholm,T.,Yellin,F.:《Java虚拟机规范》,第2版。Addison-Wesley,雷丁(1999)
[43] Liu,H.,Moore,J.S.:用于分析推理的可执行JVM模型:一项研究。载于:IVME 2003,第15-23页。ACM(2003)。https://doi.org/10.1145/858570.858572
[44] Liu,H.,Moore,J.S.:通过在ACL2中深度嵌入JVM进行Java程序验证。收录于:Slind,K.,Bunker,A.,Gopalakrishnan,G.(编辑)TPHOLs 2004,LNCS,第3223卷,第117-125页。斯普林格(2004)。https://doi.org/10.1007/978-3-540-30142-4_14 ·Zbl 1099.68731号
[45] Lochbihler,A.:带螺纹的Jinja。收录:Klein,G.、Nipkow,T.、Paulson,L.C.(编辑)《正式证据档案》。http://www.isa-afp.org/entries/JinjaThreads.shtml (2007). 正式证明开发
[46] Lochbihler,A.:类型安全不确定性——Java线程的一种形式化语义。摘自:2008年面向对象语言基础国际研讨会论文集(FOOL 2008)(2008)
[47] Lochbihler,A.:验证Java线程的编译器。收录于:Gordon,A.D.(编辑)《2010年员工持股计划》,LNCS,第6012卷,第427-447页。施普林格(2010)。https://doi.org/10.1007/978-3-642-11957-6_23 ·Zbl 1260.68080号
[48] Lochbihler,A.:Java和Java内存模型——一种统一的、机器检查的形式化。收录于:Seidl,H.(编辑)《2012年员工持股计划》,LNCS,第7211卷,第497-517页。施普林格(2012)·Zbl 1352.68034号
[49] Lochbihler,A.:一个基于机器的Java并发类型安全模型:语言、虚拟机、内存模型和验证编译器。Fakultät für Informatik卡尔斯鲁厄技术研究所博士论文(2012年)。https://doi.org/10.5445/KSP/1000028867 ·Zbl 1352.68034号
[50] Lochbihler,A,《使Java内存模型安全》,ACM Trans。程序。语言系统。,35, 12:1-12:65, (2014) ·doi:10.1145/2518191
[51] Lochbihler,A.,Bulwahn,L.:模拟类Java语言的形式化语义。在:van Eeklen,M.,Geuvers,H.,Schmalz,J.,Wiedijk,F.(编辑)ITP 2011,LNCS,第6898卷,第216-232页。施普林格(2011)。https://doi.org/10.1007/978-3-642-22863-6_17 ·Zbl 1342.68294号
[52] McLean,J,一类“可能性”性质的合成一般理论,IEEE Trans。柔和。工程,22,53-67,(1996)·数字对象标识代码:10.1109/32.481534
[53] Milner,R.:可观察机器行为的模态特征。载:Astesiano,E.,Böhm,C.(编辑)CAAP 1981,LNCS,第112卷,第25-34页。斯普林格(1981)。https://doi.org/10.1007/3-540-10828-9_52 ·Zbl 0474.68074号
[54] Milner,R.:沟通与并发。普伦蒂斯·霍尔,纽约(1989)·Zbl 0683.68008号
[55] 莫比乌斯财团。可交付成果D3.1。字节码级规范语言和程序逻辑(2006)
[56] JS摩尔;波特,G,学徒挑战,ACM Trans。程序。语言系统。,24, 193-216, (2002) ·doi:10.1145/514188.514189
[57] Moser,G.,Schaper,M.:从Jinja字节码到术语重写:反映转换的复杂性。Inf.计算。(出现). http://cbr.uibk.ac.at/publications/ic16.pdf ·兹比尔1395.68160
[58] Nipkow,T.:经过验证的字节码验证器。摘自:Honsell,F.,Miculan,M.(编辑)FOSSACS 2001,LNCS,第2030卷,第347-363页。斯普林格(2001)。https://doi.org/10.1007/3-540-45315-6_23 ·Zbl 0978.68512号
[59] Nipkow,T.,von Oheimb,D.:爪哇\(_{{ℓ }right}\)绝对是类型安全的。收录于:POPL 1998,第161-170页。ACM(1998)。https://doi.org/10.1145/268946.268960 ·Zbl 0997.68018号
[60] Nipkow,T.,von Oheimb,D.,Pusch,C.:(μ\)Java:在定理证明器中嵌入编程语言。收录于:Bauer,F.L.,Steinbrüggen,R.(编辑)《安全计算基础》,《北约科学系列F:计算机和系统科学》,第175卷,第117-144页。IOS出版社(2000)·Zbl 0995.68019号
[61] Norrish,M.:C++的形式语义。NICTA技术代表(2008年)。可从http://nicta.com.au/people/norrishm/attachments/objectories_and_papers/C-TR.pdf
[62] Oheimb,D.v.:在Isabelle/HOL中分析Java。形式化、类型安全和白逻辑。慕尼黑理工大学Fakultät für Informatik博士论文(2000年)。http://tumb1.biblio.tu-muenchen.de/publ/diss/in/2001/oheimb.html
[63] Oheimb,D.v.:Isabelle/HOL中Java的Hoare逻辑。同意。计算。实际。支出。13(13) 第1173-1214页(2001年)·Zbl 0997.68019号
[64] Oheimb,D.v.,Nipkow,T.:机器检查Java规范:证明类型安全。收录于:Alves-Foss,J.(编辑)《Java的形式语法和语义》,LNCS,第1523卷,第119-156页。斯普林格(1999)
[65] Oheimb,D.v.,Nipkow,T.:NanoJava的Hoare逻辑:重新审视辅助变量、副作用和虚拟方法。In:Eriksson,L.H.,Lindsay,P.(eds.)FME 2002,LNCS,第2391卷,第89-105页。斯普林格(2002)。https://doi.org/10.1007/3-540-45614-7_6 ·兹比尔1064.68543
[66] Owens,S.、Myreen,M.O.、Kumar,R.、Tan,Y.K.:功能性大步语义。收录于:Thiemann,P.(ed.)ESOP 2016,LNCS,第9632卷,第589-615页。斯普林格(2016)。https://doi.org/10.1007/978-3-662-49498-1_23
[67] Pusch,C.:在Isabelle/HOL中证明Java字节码验证器规范的可靠性。收录于:Cleaveland,R.(编辑)TACAS 1999,LNCS,第1579卷,第89-103页。斯普林格(1999)。https://doi.org/10.1007/3-540-49059-0_7
[68] Quis customiet-machine-checked软件安全分析。https://pp.info.uni-karlsruhe.de/projects/quis-custodiet/
[69] Ramananandro,T.,Dos Reis,G.,Leroy,X.:C++多重继承对象布局的形式验证。收录于:POPL 2011,第67-80页。ACM(2011)。https://doi.org/10.1145/1926385.1926395 ·Zbl 1284.68197号
[70] Rittri,M.:通过互模拟证明虚拟机的正确性。哥德堡大学执照论文(1988年)
[71] 罗什乌,G;öerbţnu෥Ťů,TF,K语义框架概述,J.Log。代数程序。,79, 397-434, (2010) ·Zbl 1214.68188号 ·doi:10.1016/j.jlap.2010.03.012
[72] Rushby,J.:正式方法和关键系统的认证。技术代表SRI-CSL-93-7,计算机科学实验室,SRI国际(1993)。http://www.csl.sri.com/papers/csl-93-7/
[73] Sampson,J.、Boehm,H.、Otenko,O.、Levart,P.、Holmes,D.、Haley,A.、Buchholz,M.、Lea,D.,Davidovich,V.、Terekhov,A.、Diestelhorst,S.:CAS语义的多样性(另一个文档修复请求)。线程上并发感兴趣的邮件列表,第一次发布在http://altair.cs.oswego.edu/pipermail/concurrency-interest/2015-January/013613.html (2015). 2017年10月17日访问
[74] Schirmer,N.:Isabelle/HOL中的Java确定性赋值。收录:类Java程序形式化技术ECOOP研讨会论文集。技术报告408,苏黎世ETH(2003)
[75] Schirmer,N,分析isabelle/HOL中的Java包/访问概念,Concurr。计算。实际。Exp-Form.技术Java程序。,16, 689-706, (2004) ·doi:10.1002/cpe.v16:7
[76] Schirmer,N.:Isabelle/HOL中顺序命令程序的验证环境。收录于:Baader,F.,Voronkov,A.(编辑)LPAR 2004,《人工智能课堂讲稿》,第3452卷,第398-414页。斯普林格(2005)·Zbl 1108.68410号
[77] Schirmer,N.:Isabelle/HOL中顺序命令式程序的验证。慕尼黑理工大学博士论文(2006年)·Zbl 1108.68410号
[78] 谢夫切克,J;瓦菲亚迪斯,V;Zappa Nardelli,女;Jagannathan,S;Sewell,P,Compcertso:一个经过验证的松弛内存并发编译器,J.ACM,60,22:1-22:50,(2013)·Zbl 1281.68072号 ·doi:10.1145/2487241.2487248
[79] Stärk,R.,Schmid,J.,Börger,E.:Java和Java虚拟机。施普林格,柏林(2001)·Zbl 0978.68033号 ·doi:10.1007/978-3-642-59495-3
[80] Strecker,M.:Isabelle中Java编译器的形式验证。载于:CADE 2002,LNCS,第2392卷,第63-77页。斯普林格(2002)·Zbl 1072.68593号
[81] Strecker,M.:与Isabelle一起研究类型认证编译。收录于:Baaz,M.,Voronkov,A.(编辑)LPAR 2002,LNCS,第2514卷,第403-417页。斯普林格(2002)。https://doi.org/10.1007/3-540-36078-6_27 ·Zbl 1023.68521号
[82] javacard程序的工具辅助规范和验证:Verificard。http://cordis.europa.eu/project/rcn/53643_en.html
[83] Wagner,D.等人(编辑):Ausgezeichnete Informatik。论文(2003年),LNI,第D-3卷。Köllen Verlag(2003年)
[84] Wand,M.:并行语言的编译器正确性。摘自:《1995年联邦公共行政法案》,第120-134页。ACM(1995)·Zbl 1315.68218号
[85] Wasserrab,D.:从形式语义到验证切片,这是一个模块化框架,具有基于语言的安全应用程序。Fakultät für Informatik卡尔斯鲁厄技术研究所博士论文(2010年)
[86] Wasserrab,D.,Lohner,D.:通过重用机器检查的切片正确性证明来证明信息流不受干扰。参加:2010年第六届国际验证研讨会(VERIFY 2010)
[87] 赖特,阿拉斯加州;Felleisen,M,《类型稳健性的句法方法》,Inf.Compute。,115, 38-94, (1994) ·Zbl 0938.68559号 ·doi:10.1006/inco.1994.1093
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。