Proving Properties of Logic Programs by Abstract Diagnosis

We show how declarative diagnosis techniques can be extended to cope with verification of operational properties, such as computed answers, and of abstract properties, such as types and groundness dependencies. The extension is achieved by using a simple semantic framework, based on abstract interpretation. The resulting technique (abstract diagnosis) leads to elegant bottom-up and top-down verification methods, which do not require to determine the symptoms in advance, and which are effective in the case of abstract properties described by finite domains.

[1]  Giorgio Levi,et al.  Compositionality in SLD-Derivations and their Abstractions , 1995, ILPS.

[2]  Krzysztof R. Apt,et al.  Logic Programming , 1990, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[3]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[4]  Robert A. Kowalski,et al.  The Semantics of Predicate Logic as a Programming Language , 1976, JACM.

[5]  Giorgio Levi,et al.  Efficient Detection of Incompleteness Errors in the Abstract Debugging of Logic Programs , 1995, AADEBUG.

[6]  Kim Marriott,et al.  Precise and efficient groundness analysis for logic programs , 1993, LOPL.

[7]  Giorgio Levi,et al.  A Model-Theoretic Reconstruction of the Operational Semantics of Logic Programs , 1993, Inf. Comput..

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

[9]  Maurizio Gabbrielli,et al.  The s-Semantics Approach: Theory and Applications , 1994, J. Log. Program..

[10]  Roberto Giacobazzi,et al.  Functional Dependencies and Moore-Set Completions of Abstract Interpretations and Semantics , 1995, ILPS.

[11]  Krzysztof R. Apt,et al.  Program verification and Prolog , 1995, Specification and validation methods.

[12]  Elena Marchiori,et al.  Prime Factorizations of Abstract Domains Using First Order Logic , 1996, ALP.

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

[14]  Gérard Ferrand Error Diagnosis in Logic Programming, an Adaption of E. Y. Shapiro's Method , 1987, J. Log. Program..

[15]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[16]  Wolfgang Thomas,et al.  Handbook of Theoretical Computer Science, Volume B: Formal Models and Semantics , 1990 .

[17]  Agostino Cortesi,et al.  Complementation in abstract interpretation , 1997, TOPL.

[18]  Giorgio Levi,et al.  Abstract Debugging of Logic Program , 1994, META.

[19]  Giorgio Levi,et al.  An Algebraic Theory of Observables , 1994, ILPS.

[20]  Elmar Eder Properties of Substitutions and Unifications , 1983, GWAI.

[21]  Gilberto Filé,et al.  Computations, Abstractions and Constraints (abstract) , 1991, JTASPEFT/WSA.

[22]  Giorgio Levi,et al.  Declarative Modeling of the Operational Behavior of Logic Languages , 1989, Theor. Comput. Sci..

[23]  Ehud Shapiro,et al.  Algorithmic Program Debugging , 1983 .

[24]  Keith D. Cooper,et al.  Combining analyses, combining optimizations , 1995, TOPL.

[25]  Maurizio Gabbrielli,et al.  A Closer Look at Declarative Interpretations , 1994, J. Log. Program..

[26]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[27]  Patrick Cousot,et al.  Comparing the Galois Connection and Widening/Narrowing Approaches to Abstract Interpretation , 1992, PLILP.

[28]  Hisao Tamaki,et al.  Enumeration of Success Patterns in Logic Programs , 1983, Theor. Comput. Sci..

[29]  A. Cortesi,et al.  Prop revisited: propositional formula as abstract domain for groundness analysis , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

[30]  Keith L. Clark Predicate logic as a computational formalism , 1979 .

[31]  Roberto Giacobazzi,et al.  Compositional Optimization of Disjunctive Abstract Interpretations , 1996, ESOP.

[32]  Gilberto Filé,et al.  Improving Abstract Interpretations by Systematic Lifting to the Powerset , 1994, ILPS.

[33]  Luís Moniz Pereira Rational Debugging in Logic Programming , 1986, ICLP.

[34]  Radhia Cousot,et al.  Higher-order abstract interpretation (and application to comportment analysis generalizing strictness, termination, projection and PER analysis of functional languages) , 1994, Proceedings of 1994 IEEE International Conference on Computer Languages (ICCL'94).

[35]  Jack Minker Foundations of deductive databases and logic programming , 1988 .

[36]  Ehud Y. Shapiro,et al.  Algorithmic program diagnosis , 1982, POPL '82.

[37]  Roberto Giacobazzi,et al.  Generalized Semantics and Abstract Interpretation for Constraint Logic Programs , 1995, J. Log. Program..

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

[39]  Kim Marriott,et al.  Boolean Functions for Dependency Analysis: Algebraic Properties and Efficient Representation , 1994, SAS.

[40]  Gérard Ferrand The Notions of Symptom and Error in Declarative Diagnosis of Logic Programs , 1993, AADEBUG.

[41]  Alexander Aiken,et al.  Directional Type Checking of Logic Programs , 1994, SAS.

[42]  Gilberto Filé,et al.  A unifying view of abstract domain design , 1996, CSUR.

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

[44]  Michael J. Maher,et al.  Unification Revisited , 1988, Foundations of Deductive Databases and Logic Programming..

[45]  Giorgio Levi,et al.  Declarative Diagnosis Revisited , 1995, ILPS.