×

通过专门化和减少不确定性导出有效的逻辑程序。 (英语) Zbl 1103.68034号

摘要:程序专门化是一种程序转换方法,它通过利用编译时可用的输入数据信息来提高程序效率。我们表明,当前基于部分求值的程序专门化技术在非确定性逻辑程序上表现不佳。然后,我们考虑一组转换规则,这些规则扩展了用于部分求值的规则,并且我们提出了一种策略来指导这些扩展规则的应用,从而导出非常有效的专用程序。效率的提高有时是指数级的,这是由于不确定性的减少,以及由计算树不同分支中的初始程序执行的计算是由单个分支中的专用程序执行的这一事实。为了减少不确定性,我们还利用模式信息来指导展开过程。为了举例说明我们的技术,我们展示了我们可以为正则语言自动生成非常高效的匹配程序和解析器。我们所进行的推导不可能由先前已知的部分评估技术完成。

MSC公司:

68N17号 逻辑编程
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Apt,K.R.逻辑编程导论。《理论计算机科学手册》,J.van Leeuwen(Ed.),Elsevier,1990年,第493-576页·Zbl 0900.68136号
[2] Apt,K.R.《从逻辑编程到Prolog》。普伦蒂斯·霍尔,1997年。
[3] Bird,R.S.、Gibbons,J.和Jones,G.模式匹配算法的形式推导。《计算机程序设计科学》,12(1989)93-104·Zbl 0679.68011号 ·doi:10.1016/0167-6423(89)90036-1
[4] Bossi,A.、Cocco,N.和Dulli,S.专门化逻辑程序的方法。《美国计算机学会编程语言与系统汇刊》,12(2)(1990)253–302·数字对象标识代码:10.1145/78942.789447
[5] Bossi,A.、Cocco,N.和Etalle,S.转换左端程序。《第九届基于逻辑的程序综合国际研讨会论文集》,LOPSTR'99,A.Bossi(编辑),意大利威尼斯,1999年9月22日至24日,《计算机科学1817讲义》,施普林格,2000年,156–175·Zbl 0964.68014号
[6] Burstall,R.M.和Darlington,J.开发递归程序的转换系统。美国医学会杂志,24(1)(1977)44-67·兹伯利0343.68014 ·doi:10.1145/321992996
[7] Danvy,O.、Glück,R.和Thiemann,P.(编辑)。部分评估。国际研讨会,德国达格斯图尔城堡,计算机科学讲稿第1110卷。Springer-Verlag,1996年。
[8] De Schreye,D.、Glück,R.、Jörgensen,J.、Leuschel,M.、Martens,B.和Sörensen,M.H.结合部分演绎:基础、控制、算法和实验。《逻辑程序设计杂志》,41(2–3)(1999)231–277·Zbl 0944.68025号 ·doi:10.1016/S0743-1066(99)00030-8
[9] Debray,S.K.和Warren,D.S.逻辑程序的自动模式推理。《逻辑程序设计杂志》,5(1988)207-229·Zbl 0647.68010号 ·doi:10.1016/0743-1066(88)90010-6
[10] Deville,Y.逻辑编程:系统程序开发。Addison-Wesley,1990年。
[11] Fujita,H。带约束的部分求值算法。技术备忘录TM-0367,ICOT,日本东京,1987年。
[12] Futamura,Y.、Nogi,K.和Takano,A.广义部分计算的本质。理论计算机科学,90(1991)61-79·Zbl 0731.68074号 ·doi:10.1016/0304-3975(91)90299-H
[13] Gallagher,J.P.逻辑程序专业化教程。《ACM SIGPLAN部分评估和基于语义的程序操作研讨会论文集》,PEPM’93,丹麦哥本哈根,ACM出版社,1993年,第88–98页。
[14] Gergatsoulis,M.和Katzouraki,M.定子句程序的展开/折叠变换。在《程序设计语言实现和逻辑编程第六届国际研讨会论文集》(PLILP’94)中,M.Hermenegildo和J.Penjam(编辑),《计算机科学844讲义》,Springer-Verlag,1994年,第340-354页。
[15] Glück,R.和Klimov,A.V.Occam在元计算中的剃刀:完美过程树的概念。第三届静态分析国际研讨会,意大利帕多瓦,1993年9月,P.Cousot、M.Falaschi、G.Filé和A.Rauzy(编辑),《计算机科学讲义724》,Springer-Verlag,1993年,第112-123页。
[16] Glück,R.和Sörensen,M.H.通过超级编译实现元计算的路线图。在部分评估中,O.Danvy、R.Glück和P.Thiemann(编辑),计算机科学1110讲义,Springer,1996年,第137-160页。
[17] M.J.Gordon、A.J.Milner和C.P.Edinburgh LCF Wadsworth。计算机科学课堂讲稿78。Springer-Verlag,1979年。
[18] Henderson,F.、Somogyi,Z.和Conway,T.《水星》编译器中的决定论分析。《澳大利亚计算机科学会议论文集》,澳大利亚墨尔本,1996年,第337-346页。
[19] Hermenegildo,M.V.、Bueno,F.、Puebla,G.和López,P.使用CIAO系统预处理器进行程序分析、调试和优化。《1999年逻辑编程国际会议论文集》,D.De Schreye(编辑),美国新墨西哥州拉斯克鲁斯,麻省理工学院出版社,1999年,第52–66页·Zbl 1076.68540号
[20] Jaffar,J.、Maher,M.、Marriott,K.和Stuckey,P.约束逻辑编程的语义。逻辑编程杂志,37(1998)1–46·Zbl 0920.68068号 ·doi:10.1016/S0743-1066(98)10002-X
[21] Jones,N.D.、Gomard,C.K.和Sestoft,P.部分评估和自动程序生成。普伦蒂斯·霍尔,1993年·Zbl 0875.68290号
[22] Knuth,D.E.、Morris,J.H.和Pratt,V.R.字符串中的快速模式匹配。SIAM计算机杂志,6(2)(1977)323–350·Zbl 0372.68005号 ·数字对象标识代码:10.1137/0206024
[23] Leuschel,M.论同胚嵌入用于在线终止的威力。第五届静态分析研讨会论文集,SAS’98,G.Levi(编辑),意大利比萨,1503年计算机科学讲稿,Springer-Verlag,1998年,第230-245页。
[24] Leuschel,M.《幼儿保育和教育部分扣除制度和DPPD基准库》,2000年11月第3版。可通过访问http://www.ecs.soton.ac.uk/mal。
[25] Leuschel,M.、Martens,B.和De Schreye,D.在正常逻辑程序的部分演绎中控制泛化和多元方差。《美国计算机学会编程语言与系统汇刊》,20(1)(1998)208-258·Zbl 01935587号 ·doi:10.1145/271510.271525
[26] Leuschel,M.、Martens,B.和de Schreye,D.部分演绎的一些成就和展望。ACM计算调查,30(电子部分)(3es)(1998)4。
[27] Liu,Y.A.通过增量提高效率:简介。高阶和符号计算,13(4)(2000)289–313·Zbl 0972.68020号 ·doi:10.1023/A:1026547031739
[28] Lloyd,J.W.《逻辑编程基础》,第2版。施普林格·弗拉格,柏林,1987年·Zbl 0668.68004号
[29] Lloyd,J.W.和Shepherdson,J.C.逻辑编程中的部分评估。《逻辑程序设计杂志》,11(1991)217-242·Zbl 0741.68030号 ·doi:10.1016/0743-1066(91)90027-M
[30] Martens,B.,De Schreye,D.,and Horváth,T.Sound和基于充分证据的测度展开的完整部分演绎。理论计算机科学,122(1994)97-117·Zbl 0801.68026号 ·doi:10.1016/0304-3975(94)90203-8
[31] Mellish,C.S.Prolog编译器的一些全局优化。逻辑程序设计杂志,2(1)(1985)43-66·Zbl 0575.68003号 ·doi:10.1016/0743-1066(85)90004-4
[32] 梅利什,C.S.《Prolog程序的抽象解释》。《宣言语言的抽象解释》,S.Abramsky和C.Hankin(编辑),第8章,Ellis Horwood,1987年,第181–198页。
[33] Paige,R.和Koenig,S.可计算表达式的有限差分。《美国计算机学会编程语言与系统汇刊》,4(3)(1982)402-454·Zbl 0484.68009号 ·电话:10.1145/357172.357177
[34] Pettorossi,A.程序转换和元组策略的使用。收录于《信息学报》第77期,南斯拉夫布莱德,1977年,第1-6页。
[35] Pettorossi,A.、Proietti,M.和Renault,S.在专门化逻辑程序时减少不确定性。程序中。第24届ACM编程语言原理研讨会,法国巴黎,ACM出版社,1997年,第414-427页。
[36] Prestwich,S.大型程序的在线部分演绎。在ACM Sigplan部分评估和基于语义的程序操作研讨会上,PEPM’93,丹麦哥本哈根,ACM出版社,1993年,第111-118页。
[37] Proietti,M.和Pettorossi,A.逻辑程序开发和部分演绎的循环吸收和泛化策略。逻辑编程杂志,16(1-2)(1993)123-161·Zbl 0778.68025号 ·doi:10.1016/0743-1066(93)90025-C
[38] Proietti,M.和Pettorossi,A.按此顺序展开定义折叠,以避免逻辑程序中不必要的变量。理论计算机科学,142(1)(1995)89-124·Zbl 0873.68023号 ·doi:10.1016/0304-3975(94)00227-A
[39] 用于转换逻辑程序的系统。R 97–04,罗马大学计算机科学系,托尔韦加塔,意大利罗马,1997年。
[40] Roychoudhury,A.、Narayan Kumar,K.、Ramakrishnan,C.R.和Ramakrishnan,I.V.确定逻辑程序的参数化展开/折叠转换框架。在《声明式编程原理与实践学报》(PPDP)中,《计算机科学》1702年讲稿,第396–413页。Springer-Verlag,1999年·Zbl 0953.68031号
[41] Sahlin,D.Mixtus:完整Prolog的自动部分评估器。新一代计算,12(1993)7-51·Zbl 0942.68516号 ·doi:10.1007/BF03038271
[42] Sato,T.保持等价的一阶展开/折叠变换系统。理论计算机科学,105(1992)57-84·Zbl 0798.68101号 ·doi:10.1016/0304-3975(92)90287-P
[43] Sawamura,H.和Takeshima,T.确定性的递归不可解性,确定性的可解情况及其在Prolog优化中的应用。《逻辑编程国际研讨会论文集》,波士顿,IEEE计算机社会出版社,1985年,第200-207页。
[44] Smith,D.A.约束逻辑编程语言中模式匹配的部分评估。《ACM部分评估和基于语义的程序操作研讨会论文集》,PEPM’91,美国康涅狄格州纽黑文,SIGPLAN Notices,26(9),ACM出版社,1991年,第62-71页。
[45] Somogyi,Z。、Henderson,F。和Conway,T。Mercury的执行算法:一种高效的纯声明逻辑编程语言。《逻辑编程杂志》,29(1-3)(1996)17-64·兹比尔0877.68015 ·doi:10.1016/S0743-1066(96)00068-4
[46] Tamaki,H.和Sato,T.展开/折叠逻辑程序的转换。第二届逻辑程序设计国际会议论文集,S。Tärnlund(编辑),瑞典乌普萨拉,乌普萨拉大学,1984年,第127-138页。
[47] Turchin,V.F.超级编译器的概念。ACM TOPLAS,8(3)(1986)292–325·Zbl 0598.68016号 ·doi:10.1145/5956.5957
[48] Wadler,P.L.《森林砍伐:改造项目以消除树木》。理论计算机科学,73(1990)231-248·Zbl 0701.68013号 ·doi:10.1016/0304-3975(90)90147-A
[49] Warren,D.H.D.实现Prolog–编译谓词逻辑程序。研究报告39和40,爱丁堡大学人工智能系,1977年。
此参考列表基于出版商或数字数学图书馆提供的信息。它的项目与zbMATH标识符启发式匹配,并且可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。