Specification-Based Automatic Verification of Prolog Programs

The paper presents an analyzer for verifying the correctness of a Prolog program relative to a specification which provides a list of input/output annotations for the arguments and parameters that can be used to establish program termination. The work stems from Deville's methodology to derive Prolog programs that correctly implement their declarative meaning. In this context, we propose an algorithm that combines, adapts, and sometimes improves various existing static analyses in order to verify total correctness of Prolog programs with respect to formal specifications. Using the information computed during the verification process, an automatic complexity analysis can be also performed.

[1]  Pierre De Boeck,et al.  Mechanical Transformation of Logic Definitions Augmented with Type Information into Prolog Procedures: Some Experiments , 1993, LOPSTR.

[2]  Pascal Van Hentenryck,et al.  Experimental evaluation of a generic abstract interpretation algorithm for PROLOG , 1994, TOPL.

[3]  Agostino Cortesi,et al.  Conceptual and Software Support for Abstract Domain Design: Generic Structural Domain and Open Product , 1993 .

[4]  Jean Henrard,et al.  FOLON: An Environment for Declarative Construction of Logic Programs , 1992, PLILP.

[5]  Pascal Van Hentenryck,et al.  Cardinality Analysis of Prolog , 1994, ILPS.

[6]  John Ivie Some MACSYMA Programs for Solving Recurrence Relations , 1978, TOMS.

[7]  Pascal Van Hentenryck,et al.  Evaluation of the Domain Prop , 1995, J. Log. Program..

[8]  Danny De Schreye,et al.  Tutorial on Termination of Logic Programs , 1992, META.

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

[10]  William R. Hersh,et al.  Research Paper n , 1994 .

[11]  Pascal Van Hentenryck,et al.  Combinations of abstract domains for logic programming , 1994, POPL '94.

[12]  Jacques Cohen,et al.  Symbolic Solution of Finite-Difference Equations , 1977, TOMS.

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

[14]  F. Lockwood Morris,et al.  Domains for Logic Programming , 1992, Theor. Comput. Sci..

[15]  Pierre De Boeck,et al.  Static Type Analysis of Prolog Procedures for Ensuring Correctness , 1990, PLILP.

[16]  Keith L. Clark,et al.  Negation as Failure , 1987, Logic and Data Bases.

[17]  Jack Minker,et al.  Advances in Data Base Theory , 1981, Springer US.

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

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

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

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