Basic Transformation Operations which Preserve Computed Answer Substitutions of Logic Programs

Abstract Some transformation operations for logic programs, basic for partial deduction, program specialization, and transformation, and for program synthesis from specifications, are studied with respect to the minimal S-model semantics defined in [31, 15–17]. Such a semantics is, in our opinion, more interesting than the usual least Herbrand model one since it captures the program's behavior with respect to computed answers. The S-semantics is also the strongest semantics which is maintained by unrestricted unfolding [31]. For such operations, we single out general applicability conditions, and prove that they guarantee that the minimal S-model semantics of a program is not modified by the transformation. Some sufficient conditions, which are very common in practice and easy to verify, since they are mostly syntactical, are also supplied with simple exemplifications.

[1]  John W. Lloyd,et al.  Partial Evaluation in Logic Programming , 1991, J. Log. Program..

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

[3]  Henryk Jan Komorowski,et al.  A specification of an abstract Prolog machine and its application to partial evaluation , 1981 .

[4]  John W. Lloyd,et al.  A Partial Evaluation Procedure for Logic Programs , 1990, NACLP.

[5]  Hisao Tamaki,et al.  Unfold/Fold Transformation of Logic Programs , 1984, ICLP.

[6]  Akikazu Takeuchi,et al.  Partial Evaluation of Prolog Programs and its Application to Meta Programming , 1986, IFIP Congress.

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

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

[9]  Yoshihiko Futamura Program Evaluation and Generalized Partial Computation , 1988, FGCS.

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

[11]  Andrei P. Ershov,et al.  Mixed Computation: Potential Applications and Problems for Study , 1982, Theor. Comput. Sci..

[12]  Koichi Furukawa,et al.  Notes on Transformation Techniques for Generate and Test Logic Programs , 1987, SLP.

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

[14]  Jan Komorowski,et al.  Partial evaluation as a means for inferencing data structures in an applicative language: a theory and implementation in the case of prolog , 1982, POPL '82.

[15]  Teodor C. Przymusinski Perfect Model Semantics , 1988, ICLP/SLP.

[16]  John P. Gallagher,et al.  Transforming Logic Programs by Specialising Interpreters , 1986, ECAI.

[17]  Krzysztof R. Apt,et al.  Contributions to the Theory of Logic Programming , 1982, JACM.

[18]  Tadashi Kanamori,et al.  Preservation of Stronger Equivalence in Unfold/Fold Logic Program Transformation , 1990, Theor. Comput. Sci..

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

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

[21]  Jan Komorowski Elements of a programming methodology founded on partial deduction-part 1 , 1991 .

[22]  Giorgio Levi,et al.  A New Declarative Semantics for Logic Languages , 1988, ICLP/SLP.

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

[24]  Peter Sestoft,et al.  An experiment in partial evaluation: the generation of a compiler generator , 1985, SIGP.

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

[26]  Carlo Ghezzi,et al.  Program Simplification via Symbolic Interpretation , 1985, FSTTCS.

[27]  Hisao Tamaki,et al.  Transformational Logic Program Synthesis , 1984, FGCS.

[28]  Annalisa Bossi,et al.  A method for specializing logic programs , 1990, TOPL.

[29]  Alberto Pettorossi,et al.  Decidability Results and Characterization of Strategies for the Development of Logic Programs , 1989, ICLP.

[30]  Andrei P. Ershov,et al.  On the Partial Computation Principle , 1977, Inf. Process. Lett..

[31]  Ralf Steinbrüggen,et al.  Program Transformation Systems , 1983, CSUR.

[32]  Taisuke Sato,et al.  Equivalence-Preserving First-Order Unfold/Fold Transformation Systems , 1990, Theor. Comput. Sci..

[33]  Christopher J. Hogger,et al.  Derivation of Logic Programs , 1981, JACM.

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

[35]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[36]  Hirohisa Seki,et al.  Unfold/Fold Transformation of Stratified Programs. , 1989 .