Automated termination analysis for logic programs with cut

Termination is an important and well-studied property for logic programs. However, almost all approaches for automated termination analysis focus on definite logic programs, whereas real-world Prolog programs typically use the cut operator. We introduce a novel pre-processing method which automatically transforms Prolog programs into logic programs without cuts, where termination of the cut-free program implies termination of the original program. Hence after this pre-processing, any technique for proving termination of definite logic programs can be applied. We implemented this pre-processing in our termination prover AProVE and evaluated it successfully with extensive experiments.

[1]  Patrick Cousot,et al.  Abstract Interpretation and Application to Logic Programs , 1992, J. Log. Program..

[2]  Kirack Sohn,et al.  Automated termination analysis for logic programs , 1993 .

[3]  Christoph Beierle,et al.  Defining Standard Prolog in Rewriting Logic , 2000, WRLA.

[4]  Jürgen Giesl,et al.  SAT Solving for Termination Analysis with Polynomial Interpretations , 2007, SAT.

[5]  Jacob M. Howe,et al.  Efficient Groundness Analysis in Prolog , 2003, Theory Pract. Log. Program..

[6]  Torben Æ. Mogensen A Semantics-Based Determinacy Analysis for Prolog with Cut , 1996, Ershov Memorial Conference.

[7]  Joost-Pieter Katoen,et al.  Quantitative Model Checking of Continuous-Time Markov Chains Against Timed Automata Specifications , 2009, 2009 24th Annual IEEE Symposium on Logic In Computer Science.

[8]  Benedikt Bollig,et al.  Replaying Play In and Play Out: Synthesis of Design Models from Scenarios by Learning , 2007, TACAS.

[9]  Jürgen Giesl,et al.  Polytool: Polynomial interpretations as a basis for termination analysis of logic programs , 2011, Theory Pract. Log. Program..

[10]  Peter J. Stuckey,et al.  Testing for Termination with Monotonicity Constraints , 2005, ICLP.

[11]  Stefan Kowalewski,et al.  Achieving Highly Reliable Embedded Software: An Empirical Evaluation of Different Approaches , 2007, SAFECOMP.

[12]  Holger Krahn MontiCore: agile Entwicklung von domänenspezifischen Sprachen im Software-Engineering , 2010, Aachener Informatik-Berichte, Software Engineering.

[13]  Daniel Neider Learning Visibly One-Counter Automata in Polynomial Time , 2010 .

[14]  Fausto Spoto,et al.  Operational and Goal-Independent Denotational Semantics for Prolog with Cut , 2000, J. Log. Program..

[15]  Torsten Kuhlen,et al.  Utilizing optical sensors from mice for new input devices , 2006 .

[16]  Carsten Kern,et al.  Learning communicating and nondeterministic automata , 2009 .

[17]  Joost-Pieter Katoen,et al.  Abstraction for Stochastic Systems by Erlang's Method of Stages , 2008, CONCUR.

[18]  Wolfgang Thomas,et al.  Parametrized Regular Infinite Games and Higher-Order Pushdown Strategies , 2009, FCT.

[19]  Michael Weber,et al.  Parallel algorithms for verification on large systems , 2006 .

[20]  Christof Löding,et al.  Unranked Tree Automata with Sibling Equalities and Disequalities , 2007, ICALP.

[21]  Michel Billaud,et al.  Simple Operational and Denotational Semantics for Prolog with Cut , 1990, Theor. Comput. Sci..

[22]  Jürgen Giesl,et al.  Automated Termination Analysis for Haskell: From Term Rewriting to Programming Languages , 2006, RTA.

[23]  René Thiemann,et al.  The DP framework for proving termination of term rewriting , 2007 .

[24]  Giorgio Levi,et al.  Abstract Interpretation of Prolog Programs , 1999, AMAST.

[25]  Daniel Klünder,et al.  Entwurf eingebetteter Software mit abstrakten Zustandsmaschinen und Business Object Notation , 2009 .

[26]  Jan Borchers,et al.  Scrolling Through Time: Improving Interfaces for Searching and Navigating Continuous Audio Timelines , 2006 .

[27]  H. Lichter,et al.  MeDUSA-MethoD for UML 2-based Design of Embedded Software Applications , 2007 .

[28]  Jürgen Giesl,et al.  Automatic Termination Proofs in the Dependency Pair Framework , 2006, IJCAR.

[29]  Martin R. Neuhäußer,et al.  Time-Bounded Reachability in Continuous-Time Markov Decision Processes ⋆ , 2009 .

[30]  Uwe Naumann,et al.  Call Tree Reversal is NP-Complete , 2008 .

[31]  Mesut Gunes,et al.  From Simulations to Testbeds — Architecture of the Hybrid MCG-Mesh Testbed , 2006 .

[32]  Joost-Pieter Katoen,et al.  Three-valued abstraction for probabilistic systems , 2012, J. Log. Algebraic Methods Program..

[33]  Jürgen Giesl,et al.  Automated termination proofs for logic programs by term rewriting , 2008, TOCL.

[34]  George B. Mertzios,et al.  A New Intersection Model for Multitolerance Graphs , Hierarchy , and Efficient Algorithms , 2010 .

[35]  Bastian Schlich,et al.  Model checking of software for microcontrollers , 2010, TECS.

[36]  Felix C. Freiling,et al.  Revisiting Failure Detection and Consensus in Omission Failure Environments , 2005, ICTAC.

[37]  Pascal Van Hentenryck,et al.  An Abstract Interpretation Framework which Accurately Handles Prolog Search-Rule and the Cut , 1994, ILPS.

[38]  Shmuel Zaks,et al.  A New Intersection Model and Improved Algorithms for Tolerance Graphs , 2009, SIAM J. Discret. Math..

[39]  Robert Glück,et al.  An Algorithm of Generalization in Positive Supercompilation , 1995, ILPS.

[40]  Joost-Pieter Katoen,et al.  Counterexamples in Probabilistic Model Checking , 2007, TACAS.

[41]  Jean Utke,et al.  OpenAD/F: A Modular Open-Source Tool for Automatic Differentiation of Fortran Codes , 2008, TOMS.

[42]  Jan Borchers,et al.  coJIVE: A System to Support Collaborative Jazz Improvisation , 2007 .

[43]  Stavros D. Nikolopoulos,et al.  The Longest Path Problem Is Polynomial on Interval Graphs , 2009, MFCS.

[44]  James H. Andrews,et al.  The witness properties and the semantics of the Prolog cut , 2002, Theory and Practice of Logic Programming.

[45]  John P. Gallagher,et al.  Termination analysis of logic programs through combination of type-based norms , 2007, TOPL.

[46]  Joost-Pieter Katoen,et al.  Quantitative Model Checking of Continuous-Time Markov Chains Against Timed Automata Specifications , 2009, 2009 24th Annual IEEE Symposium on Logic In Computer Science.

[47]  Joost-Pieter Katoen,et al.  Verifying Concurrent List-Manipulating Programs by LTL Model Checking , 2007 .

[48]  Bruce Christianson,et al.  Second-order adjoints by source code manipulation of numerical programs , 2007 .

[49]  Erik P. de Vink,et al.  Comparative Semantics for PROLOG with Cut , 1990, Sci. Comput. Program..

[50]  Felix C. Freiling,et al.  Optimal Randomized Fair Exchange with Secret Shared Coins , 2005, OPODIS.

[51]  Thomas Noll,et al.  Optimization of Straight-Line Code Revisited , 2006, Softwaretechnik-Trends.

[52]  Christof Löding,et al.  Transforming structures by set interpretations , 2007, Log. Methods Comput. Sci..

[53]  Nathan R. Tallent,et al.  ADJOINT CODE BY SOURCE TRANSFORMATION WITH OPENAD/F , 2006 .

[54]  Frédéric Mesnard,et al.  Recurrence with affine level mappings is P-time decidable for CLP$({\mathbb R})$ , 2007, Theory and Practice of Logic Programming.

[55]  Gilberto Filé,et al.  Static Analysis of Prolog with Cut , 1993, LPAR.

[56]  Joachim Kneis,et al.  Derandomizing Non-uniform Color-Coding I , 2009 .

[57]  Danilo Beuche,et al.  Report of the GI Work Group "Requirements Management Tools for Product Line Engineering" , 2006 .

[58]  T. Kraußer,et al.  A Probabilistic Justification of the Combining Calculus under the Uniform Scheduler Assumption , 2007 .

[59]  Jan Borchers,et al.  Selexels: a Conceptual Framework for Pointing Devices with Low Expressiveness , 2006 .

[60]  Martin Zimmermann Time-Optimal Winning Strategies for Poset Games , 2009, CIAA.

[61]  Yuxiao Hu,et al.  Optimal vertex elimination in single-expression-use graphs , 2008, TOMS.

[62]  Volker Stolz,et al.  Temporal assertions for sequential and concurrent programs , 2007 .

[63]  Massimo Marchiori Proving Existential Termination of Normal Logic Programs , 1996, AMAST.

[64]  Uwe Naumann,et al.  An L-Attributed Grammar for Adjoint Code , 2007 .

[65]  Dirk Wilking Empirical studies for the application of agile methods to embedded systems , 2008 .

[66]  Dr. Pierre Deransart,et al.  Prolog: The Standard , 1996, Springer Berlin Heidelberg.

[67]  Shmuel Zaks,et al.  The Recognition of Tolerance and Bounded Tolerance Graphs , 2011, SIAM J. Comput..

[68]  Pierre Deransart,et al.  Prolog - the standard: reference manual , 1996 .

[69]  Joachim Kneis,et al.  Satellites and Mirrors for Solving Independent Set on Sparse Graphs , 2009 .

[70]  Joost-Pieter Katoen,et al.  Bisimulation and Logical Preservation for Continuous-Time Markov Decision Processes , 2007, CONCUR.

[71]  Max Bramer Logic Programming with Prolog , 2005, Springer London.

[72]  U. Naumann,et al.  Toward Low Static Memory Jacobian Accumulation , 2006 .

[73]  Alexander Serebrenik,et al.  On Termination of Meta-Programs , 2001, LPAR.

[74]  U. Naumann,et al.  Intraprocedural Adjoint Code Generated by the Differentiation-Enabled NAGWare Fortran Compiler , 2006 .

[75]  Derek G. Corneil,et al.  Vertex splitting and the recognition of trapezoid graphs , 2011, Discret. Appl. Math..

[76]  Danny De Schreye,et al.  Termination of Logic Programs: The Never-Ending Story , 1994, J. Log. Program..