Success in Logic Programs

In this paper we study how to verify that a pure Prolog program has solutions for a given query. The detailed analysis of the failure/ success behaviour of a program is necessary when dealing with transformation and verification of pure Prolog programs. In a previous work [10] we defined the class of noFD programs and queries which are characterized statically. We proved that a noFD query cannot have finitely failing derivations in a noFD program. Now, by introducing the concept of a set of exhaustive tests, we define the larger class of successful predicates. We prove that a noFD terminating query for successful predicates have at least one successful derivation. Moreover we propose some techniques based on program transformations for simplifying the verification of the successful condition.

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

[2]  Sandro Etalle,et al.  Transformation of Left Terminating Programs: the Reordering Problem , 1995, LOPSTR.

[3]  J. Lloyd Foundations of Logic Programming , 1984, Symbolic Computation.

[4]  Saumya K. Debray,et al.  Cost analysis of logic programs , 1993, TOPL.

[5]  Kazunori Ueda,et al.  Advances in Computing Science — ASIAN'97 , 1997, Lecture Notes in Computer Science.

[6]  Annalisa Bossi,et al.  Programs Without Failures , 1997, LOPSTR.

[7]  Jan Maluszynski,et al.  Two Aspects of Directional Types , 1995, ICLP.

[8]  Krzysztof R. Apt Declarative Programming in Prolog , 1993, ILPS.

[9]  Krzysztof R. Apt,et al.  Introduction to Logic Programming , 1988 .

[10]  Sandro Etalle,et al.  On the Unification Free Prolog Programs , 1993, MFCS.

[11]  Dino Pedreschi,et al.  Reasoning about Termination of Pure Prolog Programs , 1993, Inf. Comput..

[12]  Wlodzimierz Drabent,et al.  Inductive Assertion Method for Logic Programs , 1988, Theor. Comput. Sci..

[13]  Dino Pedreschi,et al.  Studies in Pure Prolog: Termination , 1990 .

[14]  J. Van Leeuwen,et al.  Handbook of theoretical computer science - Part A: Algorithms and complexity; Part B: Formal models and semantics , 1990 .

[15]  Agostino Cortesi,et al.  Automated Verification of Behavioural Properties of Prolog Programs , 1997, ASIAN.

[16]  Annalisa Bossi,et al.  Preserving Universal Termination through Unfold/Fold , 1994, ALP.

[17]  Ritu Chadha,et al.  Correctness of Unification Without Occur Check in Prolog , 1994, J. Log. Program..

[18]  J. W. Lloyd,et al.  Foundations of logic programming; (2nd extended ed.) , 1987 .

[19]  Krzysztof R. Apt,et al.  From logic programming to Prolog , 1996, Prentice Hall International series in computer science.

[20]  Annalisa Bossi,et al.  Verifying Correctness of Logic Programs , 1989, TAPSOFT, Vol.2.

[21]  Jan van Leeuwen,et al.  Handbook of Theoretical Computer Science, Vol. B: Formal Models and Semantics , 1994 .

[22]  Gerda Janssens,et al.  An Instance of Abstract Interpretation Integrating Type and Mode Inferencing , 1988, ICLP/SLP.

[23]  Saumya K. Debray,et al.  Non-Failure Analysis for Logic Programs , 1997, ICLP.

[24]  Annalisa Bossi,et al.  Norms on Terms and their use in Proving Universal Termination of a Logic Program , 1994, Theor. Comput. Sci..

[25]  Saumya K. Debray,et al.  Static inference of modes and data dependencies in logic programs , 1989, TOPL.