A Productivity Checker for Logic Programming

被引:5
作者
Komendantskaya, Ekaterina [1 ]
Johann, Patricia [2 ]
Schmidt, Martin [3 ]
机构
[1] Heriot Watt Univ, Edinburgh, Midlothian, Scotland
[2] Appalachian State Univ, Boone, NC 28608 USA
[3] Univ Osnabruck, Osnabruck, Germany
来源
LOGIC-BASED PROGRAM SYNTHESIS AND TRANSFORMATION, LOPSTR 2016 | 2017年 / 10184卷
基金
英国工程与自然科学研究理事会;
关键词
Logic programming; Corecursion; Coinduction; Termination; Productivity; TERMINATION;
D O I
10.1007/978-3-319-63139-4_10
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
Automated analysis of recursive derivations in logic programming is known to be a hard problem. Both termination and non-termination are undecidable problems in Turing-complete languages. However, some declarative languages offer a practical work-around for this problem, by making a clear distinction between whether a program is meant to be understood inductively or coinductively. For programs meant to be understood inductively, termination must be guaranteed, whereas for programs meant to be understood coinductively, productive non-termination (or "productivity") must be ensured. In practice, such classification helps to better understand and implement some non-terminating computations. Logic programming was one of the first declarative languages to make this distinction: in the 1980's, Lloyd and van Emden's "computations at infinity" captured the big-step operational semantics of derivations that produce infinite terms as answers. In modern terms, computations at infinity describe "global productivity" of computations in logic programming. Most programming languages featuring coinduction also provide an observational, or small-step, notion of productivity as a computational counterpart to global productivity. This kind of productivity is ensured by checking that finite initial fragments of infinite computations can always be observed to produce finite portions of their infinite answer terms. In this paper we introduce a notion of observational productivity for logic programming as an algorithmic approximation of global productivity, give an effective procedure for semi-deciding observational productivity, and offer an implemented automated observational productivity checker for logic programs.
引用
收藏
页码:168 / 186
页数:19
相关论文
共 22 条
[1]  
[Anonymous], 2003, Terese: Term Rewriting Systems.
[2]   Termination of term rewriting using dependency pairs [J].
Arts, T ;
Giesl, J .
THEORETICAL COMPUTER SCIENCE, 2000, 236 (1-2) :133-178
[3]   FUNDAMENTAL PROPERTIES OF INFINITE-TREES [J].
COURCELLE, B .
THEORETICAL COMPUTER SCIENCE, 1983, 25 (02) :95-169
[4]   TERMINATION OF LOGIC PROGRAMS - THE NEVER-ENDING STORY [J].
De Schreye, D ;
Decorte, S .
JOURNAL OF LOGIC PROGRAMMING, 1994, 20 :199-260
[5]   Productivity of stream definitions [J].
Endrullis, Jorg ;
Grabmayer, Clemens ;
Hendriks, Dimitri ;
Isihara, Ariya ;
Klop, Jan Willem .
THEORETICAL COMPUTER SCIENCE, 2010, 411 (4-5) :765-782
[6]  
Endrullis Jorg, 2015, P C REWR TECHN APPL, P143
[7]  
Fu P., 2016, FORMAL ASPECTS COMPU
[8]   Coinductive logic programming and its applications [J].
Gupta, Gopal ;
Bansal, Ajay ;
Min, Richard ;
Simon, Luke ;
Mallya, Ajay .
LOGIC PROGRAMMING, PROCEEDINGS, 2007, 4670 :27-+
[9]  
Hirokawa N, 2004, LECT NOTES COMPUT SC, V3091, P249
[10]  
Johann P., 2015, TECHNICAL COMMUNICAT