×

用于检查一类无限量化定义的正逻辑程序的合成。 (英语) Zbl 1353.68050号

该框架基于类型化一阶逻辑理论,如下所示:
类型:
Nat由\(\mathrm{zero}:\rightarrow\mathrm{Nat}\quad\mathrm}suc}:\mathrm2{Nat}\rightarrow\mathrm{Nat}\)生成
Seq由\(\mathrm{empty}:\rightarrow\mathrm{Seq}\quad\mathrm}suc}:\mathrm2{Nat}\times\mathrm3{Seq{右箭头\mathrm-Seq}\)生成

谓词:
\(\mathrm{id}:\mathrm{Nat}\times\mathrm2{Nat}\)公理化为:
\(\mathrm{id}(\mathr m{zero},\mathrm{zero{)\Leftrightarrow\mathrm2{true}\)
\(对于所有(\mathrm{id}(\mathrm{suc}(X),\mathrm2{zero})\Leftrightarrow\mathrm{false})\)
\(对于所有(\mathrm{id}(\mathr m{zero},\mathrm{suc}(Y)\Leftrightarrow\mathrm2{false})\)
\(对于所有(\mathrm{id}(\mathrm{suck}(X),\mathrm{suck{(Y)))
\(\mathrm{member}:\mathrm{Nat}\times\mathrm{Seq}\)公理化为:
\(对于所有(\mathrm{member}(E,\mathrm{empty})\Leftrightarrow\mathrm2{false})\)
\(对于所有(\mathrm{member}(E,\mathrm{seq}(X,Y))\Leftrightarrow\mathrm2{id}(E,X)\vee\mathrm}member{(E、Y))\)
作者认为断言定义形式为\(对于所有X(r(X)\Leftrightarrow Q Y r(X,Y))\),其中\(r)是定义的关系,\(Q)是量词,\(r)是定义关系,即类型化一阶逻辑理论语言中的无量词公式。例如,以下是子集关系的断言定义:\[\对于所有L,S(\mathrm{subset}(L,S)\Left-Rightarrow\fall E(\mathrm{member}(E,L)\Rightarrow\mathrm{member}(E,S))\]
本文的目的是合成一个用于检查形式为(r(X)θ的断言的正逻辑程序,其中(θ)是对(X)的基替换,它依赖于量词(Q),如果(Q)是(全部),程序将搜索反驳,而如果(Q然后程序搜索证据。该方法满足两个关键要求:
合成过程在有限数量的变换步骤后终止;
综合程序保留了形式为\(\左箭头r(X,Y)\θ\)的目标类的完全正确性。

以子集关系为例,综合程序为:\[\begin{aligned}\fall(\mathrm{subset}(L,S)\Leftarrow\mathrm{子集}_1(E,L,S))\\\\所有(\mathrm{子集}_1(E,\mathrm{seq}(X,Y),S)\左箭头\mathrm{子集}_2(E,S)\楔形\mathrm{子集}3(E,X))所有(\mathrm{子集}_1(E,\mathrm{seq}(X,Y),S)\左箭头\mathrm{子集}_1(E,Y,S)\wedge\mathrm{子集}4(E,X))所有(\mathrm{子集}_1(E,\mathrm{empty},S)\左箭头\mathrm{子集}_5(E,S))所有(\mathrm{子集}_2(E,\mathrm{seq}(X,Y))\左箭头\mathrm{子集}_2(E,Y)\楔形\mathrm{子集}4(E,X))所有(\mathrm{子集}_2(E,\mathrm{empty})\Leftarrow\mathrm{子集}_7)\\\mathrm(马特姆){子集}3(\mathrm{zero},\mathrm{zero{)\Leftarrow\fathrm{子集}_9\\所有(\mathrm{子集}3(\mathrm{suc}(X),\mathrm{suc{(Y))\Leftarrow\fathrm{子集}3(X,Y))\\对于所有(\mathrm{子集}4(\mathrm{zero},\mathrm{succ}(Y))\Leftarrow\mathrm{子集}_9)\\所有(\mathrm{子集}4(\mathrm{suc}(X),\mathrm{suc{(Y))\Leftarrow\fathrm{子集}4(X,Y))所有(\mathrm{子集}4(\mathrm{suck}(X),\mathrm{zero})\Leftarrow\fathrm{子集}_9)\\所有(\mathrm{子集}_5(E,\mathrm{seq}(X,Y))\左箭头\mathrm{子集}_5(E,Y)\楔形\mathrm{子集}4(E,X)){子集}_7\Leftarrow\\\mathrm(左箭头){子集}_9\左箭头\结束{对齐}\]
遵循由6个步骤组成的程序,特别是途中生成的中间公式:\[\所有E、L、S的开始{对齐}(\mathrm{子集}_1(E,L,S)\Left-rightarrow(\mathrm{member}(E,L)\wedge\neg\mathrm{member}(E,S))\\\\fall(\mathrm{子集}_2(X,Y)\Leftrightarrow\mathrm{true}\wedge\neg\mathrm{member}(X,Y)){子集}3(X,Y)\Leftrightarrow\mathrm{id}(X,Y))\\所有(\mathrm{子集}4(X,Y)\Leftrightarrow\neg\mathrm{id}(X,Y))\\所有(\mathrm{子集}_5(X,Y)\Leftrightarrow\mathrm{false}\wedge\neg\mathrm{member}(X,Y))\\mathrm{子集}_6\左向右箭头\mathrm{false}\wedge\neg\mathrm{false}\\mathrm{子集}_7\左箭头\mathrm{true}\wedge\neg\mathrm{false}\\mathrm{子集}_8\左右箭头\mathrm{true}\wedge\neg\mathrm{true}\\\\mathrm{子集}_9\左向右箭头\mathrm{true}\\mathrm{子集}_{10} \左箭头\neg\mathrm{true}\end{aligned}\]该方法已经与附录中列出的许多其他断言定义以及终止和正确性证明一起进行了测试。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
03B70号 计算机科学中的逻辑
68N17号 逻辑编程
60年第68季度 规范和验证(程序逻辑、模型检查等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Apt,K.R。;Bol,R.R.,《逻辑编程与否定:一项调查》,J.Log。程序。,19-20, 9-71 (1994) ·Zbl 0942.68518号
[3] 盆地,D。;Deville,Y。;弗莱纳,P。;A.哈姆菲尔特。;Nilsson,J.,《计算逻辑中程序的综合》,(计算逻辑中的程序开发。计算逻辑中编程开发,Lect.Notes Compute.Sci.,第3049卷(2004),Springer:Springer-Berlin),30-65·Zbl 1080.68562号
[4] Bjorner,N.,用Z3将可满足性提升到下一个水平,(IJCAR(2012)),1-8,(摘要)·Zbl 1358.68248号
[6] 盆地,D。;Matthews,S.,《为一阶理论添加元理论工具》,J.Log。计算。,6, 6, 835-849 (1996) ·Zbl 0868.03006号
[7] Barbuti,R。;Mancarella,P。;佩德莱斯基,D。;Turini,F.,《逻辑编程中否定的转换方法》,J.Log。程序。,8, 201-228 (1990) ·兹比尔0796.68056
[8] 比约纳,N。;McMillan,K.L。;Rybalchenko,A.,《关于解决普遍量化的Horn子句》(SAS(2013)),第105-125页
[9] A.邦迪。;Smaill,A。;Wiggins,G.,从归纳证明合成逻辑程序,(计算逻辑,研讨会论文集(1990),Springer-Verlag),135-149
[10] Calejo,M.,InterProlog:走向Java中逻辑编程的声明性嵌入,(第九届欧洲人工智能逻辑会议,里斯本(2004))
[11] 否定即失败,(逻辑与数据库(1978),阻燃出版社:纽约阻燃出版社),293-322
[12] Coquant,T。;Huet,G.,《结构微积分》,Inf.Comput。,76, 2/3, 95-120 (1988) ·Zbl 0654.03045号
[13] Dayantis,G.,一类一阶关系的逻辑程序推导(IJCAI(1987))
[14] Deville,Y。;刘克强,逻辑程序综合,J.Log。程序。,12, 1-32 (1993)
[15] Detlefs,D。;Nelson,G。;Saxe,J.B.,Simplify:一个用于程序检查的定理证明器,J.ACM,52,365-473(2005)·Zbl 1323.68462号
[16] Deville,Y.,《逻辑编程》。系统程序开发(1990),Addison-Wesley
[17] Dijkstra,E.W.,编程学科(1976),普伦蒂斯·霍尔·Zbl 0368.68005号
[18] Dromey,G.,《程序推导》。规范中的程序开发(1989),Addison-Wesley·Zbl 0781.68084号
[19] Flener,P.,《基于不完全信息的逻辑程序合成》(1995),Kluwer Academics Publishers
[20] Flener,P.,《程序综合的成就和前景》,(计算逻辑:逻辑编程及其以外:Robert A.Kowalski的论文,第一部分:计算逻辑:逻辑学编程及其以外的研究:Robert A.Kowalschi的论文,第I部分,Lect.Notes计算科学,第2407卷(2002年),Springer:Springer Berlin),1-43·Zbl 1012.68500号
[21] 弗莱纳,P。;Lau,K.K。;Ornaghi,M.,《稳健程序的正确模式引导综合》(ASE’97(1997)Proc.,IEEE Computer Society Press),153-160
[22] 弗里堡,L.,《从使用扩展Prolog执行和归纳的证明中提取逻辑程序》(ICLP90(1990),麻省理工学院出版社),685-699
[23] F.J.加兰。;Cañete,J.M.,《编译和执行表达性断言的方法》,(第四届国际会议综合形式方法,第四届综合形式方法国际会议,Lect.Notes Compute.Sci.,第2999卷(2004),Springer:Springer Berlin),521-540·Zbl 1196.68051号
[24] Ge,Y。;巴雷特,C。;Tinelli,C.,使用可满足性模理论求解量化验证条件,(第21届自动扣除国际会议论文集,第21届国际自动扣除会议论文集),CADE'07。第21届自动扣除国际会议记录。第21届自动扣除国际会议记录,2007年CADE,Lect。注释Artif。智力。,第4603卷(2007年7月),斯普林格·弗拉格:斯普林格尔·弗拉格不来梅,德国),167-182·Zbl 1213.68376号
[25] Gulwani,S。;McCloskey,B。;Tiwari,A.,提升量化逻辑域的抽象解释器(POPL(2008)),235-246·兹比尔1295.68085
[26] Gries,D.,《编程科学》(1981年),斯普林格-Verlag·Zbl 0472.68003号
[27] Gulwani,S.,《程序合成中的维度》(PPDP(2010)),13-24
[28] Hogger,C.J.,《逻辑程序的推导》,J.ACM,28,372-392(1981)·Zbl 0464.68021号
[29] Jass页面
[30] Man-Machine-Systems(2009),使用JMSAssert为Java进行合同设计
[31] Java技术
[32] Kanamori,T。;Fujita,H.,用计数器展开/折叠逻辑程序转换(1986),ICOT技术报告TR-179
[33] Kramer,R.,iContract:the Java(tm)design-by-contract(tm)tool,(面向对象语言和系统技术论文集(1998))
[34] Kunen,K.,《逻辑程序中的符号数据依赖性》,J.Log。程序。,7, 231-245 (1989)
[35] 刘凯。;Ornaghi,M.,《关于逻辑程序的规范框架和演绎综合》(Lect.Notes Compute.Sci.,第883卷(1994年),Springer-Verlag),104-121
[36] 莱文斯,G。;贝克,A。;Ruby,C.,《JML的初步设计:Java的行为接口规范语言》,ACM SIGSOFT Softw。工程注释,31,3,1-38(2006年3月)
[37] Lloyd,J.W.,《逻辑编程基础》(1987),施普林格-弗拉格出版社·Zbl 0547.68005号
[38] Maher,M.J.,《具有完美模型语义的演绎数据库模块转换系统》(第九届软件技术与理论计算机科学基础会议(1989)),89-98
[39] Manna,Z.,《计算数学理论》,McGraw-Hill Compute。科学。序列号。(1974),麦格劳·希尔·Zbl 0353.68066号
[40] 梅耶,B.,《埃菲尔:语言》(1992),普伦蒂斯·霍尔·Zbl 0779.68013号
[41] de Moura,L。;Björner,N.,可满足性模理论:介绍与应用,Commun。ACM,54、9、69-77(2011)
[42] Manna,Z。;Waldinger,R.,《计算机程序设计的逻辑基础》。第1卷:演绎推理(1985),Addison-Wesley·Zbl 0572.68008号
[43] Manna,Z。;Waldinger,R.,《计算机程序设计的演绎基础》(1993),Addison-Wesley·Zbl 0846.68013号
[44] Nonnengart,A。;Weidenbach,C.,《计算小句范式》(《自动推理手册》(1999),爱思唯尔科学出版社B.V.)·Zbl 0992.03018号
[45] Partsch,H.A.,《程序的规范和转换》。软件开发的形式化方法(1990),Springer-Verlag·Zbl 0751.68036号
[46] Parr、Terence、ANTLR、其他语言识别工具
[47] Pettorossi,A。;Proietti,M.,《使用展开/折叠证明的逻辑程序的合成和转换》,J.Log。程序。,197-230年第41期(1999年)·Zbl 0944.68024号
[48] Pettorossi,A。;Proietti,M.,《通过展开/折叠变换进行完美模型检查》(2000年9月),技术报告R.513 IASI-CNR,罗马
[49] Pettorossi,A。;Proietti,M.,《程序推导=规则+策略》,(计算逻辑.计算逻辑,Lect.Notes Artif.Intell.,第2047卷(2002)),273-309·Zbl 1012.68033号
[50] Plosch,R.,Java编程语言断言支持评估,J.对象技术。,1 (2002)
[51] 普罗伊蒂,M。;Pettorossi,A.,为了避免逻辑程序中不必要的变量,以这种顺序展开定义折叠,Theor。计算。科学。,142, 89-124 (1995) ·Zbl 0873.68023号
[52] Sato,T.,《完成的逻辑程序及其一致性》,J.Log。程序。,9, 33-44 (1990) ·Zbl 0715.68011号
[53] Sato,T.,Equivalence-preserving一阶展开/折叠变换系统,Theor。计算。科学。,第105页,第57-84页(1992年)·Zbl 0798.68101号
[54] 佐藤,T。;Tamaki,H.,《一阶编译器:确定性逻辑程序综合算法》,J.Symb。计算。,8, 605-627 (1989) ·Zbl 0693.68017号
[55] Seki,H.,《基础良好语义的通用逻辑程序展开/折叠转换》,J.Log。程序。,16, 5-23 (1993) ·Zbl 0776.68031号
[56] Srivastava,S。;Gulwani,S.,使用模板对谓词抽象进行程序验证,(PLDI(2009)),223-234
[57] Srivastava,S。;Gulwani,S。;乔杜里,S。;Foster,J.S.,用于程序反转的基于路径的归纳合成,(PLDI(2011)),492-503
[58] Srivastava,S。;Gulwani,S。;Foster,J.S.,《从程序验证到程序合成》(POPL(2010)),第313-326页·Zbl 1312.68068号
[59] Srivastava,S。;Gulwani,S。;Foster,J.S.,《基于模板的程序验证和程序合成》,Int.J.Softw。技术工具。传输。,15, 497-518 (2013)
[60] Solar-Lezama,A。;阿诺德·G。;Tancau,L。;博迪克,R。;萨拉斯瓦特,V.A。;Seshia,S.A.,素描模具(PLDI(2007)),167-178
[61] Sun Microsystems,《断言编程》(2002年)
[62] SWI序言·Zbl 1244.68023号
[63] Tamaki,H。;Sato,T.,《逻辑程序的展开/折叠转换》,(第二届国际逻辑程序会议(1984),第127-137页)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。