×

分离逻辑的形式化C存储模型。 (英语) Zbl 1386.68028号

概要:命令式编程语言的形式语义的核心是描述内存操作行为的内存模型。定义一个与C11标准中C的描述相匹配的内存模型具有挑战性,因为C同时允许高级(通过类型化表达式)和低电平(通过位操作)内存访问。C11标准限制了这两个级别之间的交互,以使更有效的编译器优化成为可能,但代价是使内存模型复杂化。我们描述了包含这些限制的C11标准(非电流部分)的形式化内存模型,同时描述了低级内存操作。这种形式内存模型包括一个丰富的权限模型,使其在分离逻辑中可用,并支持关于程序转换的推理。使用Coq证明助手,已经完全形式化了内存模型及其基本属性。

MSC公司:

68甲15 编程语言理论
03B70号 计算机科学中的逻辑
68N20型 编译与解释理论
第68季度55 计算理论中的语义学
68吨15 定理证明(演绎、解析等)(MSC2010)
PDF格式BibTeX公司 XML格式引用

参考文献:

[1] Affeldt,R.,Marti,N.:对用C编写的TLS网络数据包处理进行正式验证。in:PLPV,第35-46页(2013)
[2] Affeldt,R.,Sakaguchi,K.:C子集的内在编码及其在TLS网络数据包处理中的应用。JFR.7(1),63-104(2014)·Zbl 1451.68061号
[3] Appel,A.W.(编辑):认证编译器的程序逻辑。剑桥大学出版社,剑桥(2014)·Zbl 1298.68009号
[4] Batty,M.,Memarian,K.,Nienhuis,K.Pichon-Pharabod,J.,Sewell,P.:编程语言并发语义问题。In:ESOP,LNCS第9032卷,第283-307页(2015)
[5] Batty,M.、Owens,S.、Sarkar,S.,Sewell,P.、Weber,T.:C++并发的数学化。收录于:POPL,第55-66页(2011年)·Zbl 1284.68165号
[6] Bengtson,J.,Jensen,J.B.,Sieczkowski,F.,Birkedal,L.:用Coq中的高阶分离逻辑验证面向对象程序。In:ITP,LNCS第6898卷,第22-38页(2011年)·Zbl 1342.68203号
[7] Beringer,L.,Stewart,G.,Dockins,R.,Appel,A.W.:共享内存C的验证编译。In:ESOP,LNCS第8410卷,第107-127页(2014)·Zbl 1346.68045号
[8] Besson,F.、Blazy,S.、Wilke,P.:使用符号值的C的精确抽象记忆模型。收录于:APLAS,LNCS第8858卷,第449-468页(2014年)·Zbl 06546234号
[9] Boldo,S.、Jourdan,J.-H.、Leroy,X.、Melquiond,G.:支持浮点运算的经过形式验证的C编译器。收录于:ARITH,第107-115页(2013年)
[10] Boldo,S.,Melquiond,G.:Flocq:用于证明Coq中浮点算法的统一库。收录于:ARITH,第243-252页(2011年)
[11] Bornat,R.、Calcagno,C.、O'Hearn,P.W.、Parkinson,M.J.:分离逻辑中的权限核算。收录于:POPL,第259-270页(2005年)·Zbl 1369.68130号
[12] Boyland,J.:检查对分数权限的干扰。收录于:SAS,LNCS第2694卷,第55-72页(2003年)·Zbl 1067.68537号
[13] Calcagno,C.,O’Hearn,P.W.,Yang,H.:局部作用和抽象分离逻辑。收录于:LICS,第366-378页(2007年)
[14] Cohen,E.,Moskal,M.,Tobies,S.,Schulte,W.:C.ENTCS 254,85-103的精确而有效的内存模型(2009)
[15] Coq开发团队:Coq证明助理参考手册。可在https://coq.inia.fr/doc/ (2015)
[16] Dijkstra,E.W.:合作顺序过程。收录于:Genuys,F.(编辑)《编程语言:北约高级研究所》,第43-112页。剑桥大学学术出版社(1968)·兹标0174.48301
[17] Dockins,R.,Hobor,A.,Appel,A.W.:分离代数和共享核算的新视角。收录于:APLAS,LNCS第5904卷,第161-177页(2009年)
[18] Ellison,C.:C的形式语义及其应用。伊利诺伊大学博士论文(2012年)
[19] Ellison,C.,Rošu,G.:C与应用程序的可执行形式语义。收录于:POPL,第533-544页(2012年)
[20] GCC:GNU编译器集合。网址:http://gcc.gnu.org/ ·Zbl 1223.68105号
[21] Greenaway,D.、Lim,J.、Andronick,J.和Klein,G.:不要为小事操心:不费吹灰之力地对C代码进行正式验证。收录于:PLDI,第429-439页(2014年)
[22] Hathhorn,C.,Ellison,C.,Rošu,G.:定义C.的不确定性。In:PLDI,第336-345页(2015)
[23] Hobor,A.:甲骨文语义学。普林斯顿大学博士论文,(2008年)·Zbl 1133.68371号
[24] Hobor,A.,Appel,A.W.,Nardelli,F.Z.:并发分离逻辑的Oracle语义。In:ESOP,LNCS第4960卷,第353-367页(2008)·Zbl 1133.68371号
[25] IEEE计算机学会:754-2008:IEEE浮点算法标准。IEEE(2008)·Zbl 1281.68072号
[26] ISO:WG14缺陷报告摘要。网址:http://www.open-std.org/jtc1/sc22/wg14/www/docs网站/
[27] ISO:ISO/IEC 9899-2011:编程语言-C。ISO工作组14(2012)
[28] Kang,J.,Hur,C.-K.,Mansky,W.,Garbuzov,D.,Zdancewic,S.,Vafeiadis,V.:支持整数指针强制转换的正式C内存模型。收录于:PLDI,第326-335页(2015年)
[29] Klein,G.,Kolanski,R.,Boyton,A.:机械分离代数。In:ITP,LNCS第7406卷,第332-337页(2012)·Zbl 1360.68754号
[30] Krebbers,R.:Coq中形式化的C11重叠限制。In:CPP,LNCS第8307卷(2013年)·Zbl 1426.68055号
[31] Krebbers,R.:《C中非决定论和序列点的操作和公理语义》。in:POPL,第101-112页(2014)·Zbl 1284.68404号
[32] Krebbers,R.:Coq中C验证的分离代数。收录于:VSTTE,LNCS第8471卷,第150-166页(2014年)
[33] Krebbers,R.:C标准在Coq中正式化。Radboud大学博士论文(2015年)·Zbl 1281.68072号
[34] Krebbers,R.,Leroy,X.,Wiedijk,F.:形式C语义:CompCert和C标准。In:ITP,LNCS第8558卷,第543-548页(2014)·Zbl 06341505号
[35] Krebbers,R.、Wiedijk,F.:HOL、Isabelle和Coq中C99标准的形式化。In:CICM,LNCS第6824卷,第297-299页(2011)·Zbl 1335.68233号
[36] Krebbers,R.,Wiedijk,F.:非局部控制流和块范围变量的分离逻辑。收录于:FoSSaCS,LNCS第7794卷,第257-272页(2013)·Zbl 1260.68101号
[37] Krebbers,R.,Wiedijk,F.:交互式定理证明的类型化C11语义。在:CPP,第15-27页(2015)
[38] Leroy,X.:编译器后端的正式认证或:使用校对助手对编译器进行编程。收录于:POPL,第42-54页(2006年)·Zbl 1369.68124号
[39] Leroy,X.:真实编译器的形式化验证。CACM 52(7),107-115(2009)·doi:10.1145/1538788.1538814
[40] Leroy,X.,Appel,A.W.,Blazy,S.,Stewart,G.:CompCert记忆模型,第2版。研究报告RR-7987,INRIA。修订版见[3]第32章(2012)
[41] Leroy,X.,Blazy,S.:类C内存模型的形式化验证及其用于验证程序转换。JAR 41(1),1-31(2008)·Zbl 1154.68039号 ·doi:10.1007/s10817-008-9099-0
[42] 麦克拉伦,N.:C术语中的对象是什么?邮件列表消息。可在http://www.open-std.org/jtc1/sc22/wg14/9350 (2001)
[43] Monin,J.,Shi,X.:手工制作的倒装在操作语义上具有可操作性。In:ITP,LNCS第7998卷,第338-353页(2013)·兹比尔1317.68224
[44] Norrish,M.:C在HOL中正式化。剑桥大学博士论文(1998年)
[45] Norrish,M.:C.中的决定性表达。in:ESOP,LNCS第1576卷,第147-161页(1999)
[46] O'Hearn,P.W.:资源、并发和局部推理。收录于:CONCUR,LNCS第3170卷,第49-67页(2004年)·Zbl 1099.68588号
[47] O'Hearn,P.W.,Reynolds,J.C.,Yang。,H.:关于改变数据结构的程序的局部推理。在:CSL,LNCS第2142卷,第1-19页(2001年)·Zbl 0999.68045号
[48] Ramananandro,T.,Dos Reis,G.,Leroy,X.:C++多重继承对象布局的形式验证。收录于:POPL,第67-80页(2011年)·Zbl 1284.68197号
[49] Regehr,J.,Chen,Y.,Cuoq,P.,Eide,E.,Ellison,C.,Yang,X.:C编译器错误的测试用例减少。收录于:PLDI,第335-346页(2012年)
[50] Robert,V.,Leroy,X.:经正式验证的别名分析。In:CPP,LNCS第7679卷,第11-26页(2012)·Zbl 1383.68015号
[51] 罗西,J.G.,弗里德曼,D.P.:子对象的代数语义。收录于:OOPSLA,第187-199页(1995)
[52] Sevcík,J.、Vafeiadis,V.、Nardelli,F.Z.、Jagannathan,S.、Sewell,P.:CompCertTSO:一个用于松弛内存并发的验证编译器。JACM 60(3),22(2013)·Zbl 1281.68072号 ·doi:10.1145/2487241.2487248
[53] Sewell,P.、Sarkar,S.、Owens,S.,Nardelli,F.Z.、Myreen,M.O.:x86-TSO:x86多处理器的严格且可用的程序员模型。CACM 53(7),89-97(2010)·数字对象标识代码:10.1145/1785414.1785443
[54] Sozeau,M.:类型理论中广义重写的新视角。JFR.2(1),41-62(2009)·Zbl 1205.68364号
[55] Spitters,B.,van der Weegen,E.:类型理论中的数学类型课程。数学。结构。计算。科学。21(4), 795-825 (2011) ·Zbl 1223.68105号 ·网址:10.1017/S0960129511000119
[56] Tuch,H.、Klein,G.、Norrish,M.:类型、字节和分离逻辑。收录于:POPL,第97-108页(2007年)·Zbl 1295.68094号
[57] Vafeiadis,V.,Balabonski,T.,Chakraborty,S.,Morisset,R.,Nardelli,F.Z.:常见编译器优化在C11内存模型中无效,以及我们可以采取的措施。摘自:POPL,第209-220页(2015)·Zbl 1345.68087号
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。