Norms on Terms and their use in Proving Universal Termination of a Logic Program

Abstract 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 , i.e. terms whose weight does not change under substitution. Based on these norms, a general proof method for universal termination of pure Prolog programs can be adapted to deal with a large class of programs in a simple way. The proof method requires pre/post specifications well-behaved with respect to substitutions to be associated with each predicate symbol in the program, and ordering functions not increasing with respect to substitutions to be associated with cycles in the program. The specification collects information on term properties which are useful to prove that the ordering functions actually decrease at each traversal of each cycle. Some examples of termination proof are also given.

[1]  Christophe Verschaetse Static termination analysis for definite Horn clause programs , 1992 .

[2]  Danny De Schreye,et al.  Automatic derivation of linear size relations , 1992 .

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

[4]  Elena Marchiori,et al.  Proving Correctness of Logic Programs Using Axiomatic Semantics , 1991, ICLP.

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

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

[7]  Yves Deville,et al.  Logic programming - systematic program development , 1990, International series in logic programming.

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

[9]  Danny De Schreye,et al.  Deriving Termination Proofs for Logic Programs, Using Abstract Procedures , 1991, International Conference on Logic Programming.

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

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

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

[13]  Lutz Plümer Automatic Verification of GHC-Programs: Termination , 1992, FGCS.

[14]  Annalisa Bossi,et al.  Proving Termination of Logic Programs by Exploiting Term Properties , 1991, TAPSOFT, Vol.2.

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

[16]  Allen Van Gelder,et al.  Termination detection in logic programs using argument sizes (extended abstract) , 1991, PODS.

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

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

[19]  Lutz Plüer Termination proofs for logic programs based on predicate inequalities , 1990 .

[20]  Kim Marriott,et al.  Suspension analyses for concurrent logic programs , 1994, TOPL.

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

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

[23]  Maurice Bruynooghe,et al.  A Framework for Analyzing the Termination of Definite Logic Programs with respect to Call Patterns , 1992, FGCS.

[24]  Dino Pedreschi,et al.  Proving Termination of General Prolog Programs , 1991, TACS.

[25]  R. K. Shyamasundar,et al.  Methodology for Proving the Termination of Logic Programs , 1991, STACS.