Proving Termination of Logic Programs by Exploiting Term Properties

In this paper semi-linear norms, a class of functions to weight the terms occurring in a program, are defined and studied. All the functions in this class have the nice property of allowing a syntactical characterization of rigid terms, that is terms whose weight does not change under substitution. Based on these norms, a general proof method for termination of pure Prolog programs can be adapted to deal with a large class of programs in a simple way. The simplified method requires pre/post specifications well-behaved with respect to substitutions, quite a general case in practice, and ordering functions not increasing with respect to substitutions, which can be based on semi-linear norms, to be associated to program predicates. A few examples of this simplified proof method are given.

[1]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[2]  John Potter,et al.  Characterisation of Terminating Logic Programs , 1986, SLP.

[3]  Jeffrey D. Ullman,et al.  Efficient tests for top-down termination of logical rules , 1988, JACM.

[4]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[5]  R. K. Shyamasundar,et al.  Towards a Characterization of Termination of Logic Programs , 1990, PLILP.

[6]  Marianne Baudinet Proving Termination Properties of Prolog Programs: A Semantic Approach , 1988, LICS.

[7]  Lutz Plümer,et al.  Termination Proofs for Logic Programs Based on Predicate Inequalities , 1990, ICLP.

[8]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

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

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

[11]  John Wylie Lloyd,et al.  Foundations of Logic Programming , 1987, Symbolic Computation.

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

[13]  Christopher John Hogger,et al.  Introduction to logic programming , 1986, A.P.I.C. Studies in data processing.

[14]  Keith L. Clark,et al.  A First Order Theory of Data and Programs , 1977, IFIP Congress.

[15]  Amir Pnueli,et al.  Proving Termination of Prolog Programs , 1985, Logic of Programs.

[16]  Krzysztof R. Apt,et al.  On the Safe Termination of PROLOG Programs , 1989, ICLP.

[17]  Lutz Plümer Termination Proofs for Logic Programs , 1990, Lecture Notes in Computer Science.

[18]  Marc Bezem,et al.  Characterizing Termination of Logic Programs with Level Mappings , 1989, NACLP.

[19]  Bal Wang,et al.  Proving Termination of Logic Programs , 1989, A Perspective in Theoretical Computer Science.

[20]  Yves Deville Logic programming , 1990 .

[21]  Claude Berge,et al.  Graphs and Hypergraphs , 2021, Clustering.