Advanced Techniques for Logic Program Specialisation

Program specialisation, also called partial evaluation or partial deduction, is an automatic technique for program optimisation. The central idea is to specialise a given source program for a particular application domain. Program specialisation encompasses traditional compiler optimisation techniques, but uses more aggressive transformations, yielding both much greater speedups and more difficulty in controlling the transformation process. Because of their clear (and often simple) semantical foundations, declarative languages offer significant advantages for the design of semantics based program analysers, transformers and optimisers. This thesis exploits these advantages in the context of logic programming and develops advanced techniques for program specialisation, striving to produce tangible practical benefits within the larger objective of turning declarative languages and program specialisation into valuable tools for constructing reliable, maintainable and efficient programs. This thesis contains contributions within that context around several themes. New, powerful methods for the control problem within partial deduction, based on characteristic trees, are developed. A method for automatic compiler generation, which does not have to resort to self-applicable specialisers, is presented. A practical and very successful application in the area of integrity checking in deductive databases is worked out. Finally, an integration of “unfold/fold” transformations with partial deduction, as well as a further integration with abstract interpretation, are developed.

[1]  Michael Maher A Conceptual Embedding of Folding into Partial Deduction: Towards a Maximal Integration , 1996 .

[2]  Dean Jacobs,et al.  Static Analysis of Logic Programs for Independent And-Parallelism , 1992, J. Log. Program..

[3]  Hector J. Levesque,et al.  GOLOG: A Logic Programming Language for Dynamic Domains , 1997, J. Log. Program..

[4]  Kees Doets,et al.  Levationis Laus , 1993, J. Log. Comput..

[5]  Jean-Marie Jacquet Constructing logic programs , 1993 .

[6]  Olivier Danvy,et al.  Tutorial notes on partial evaluation , 1993, POPL '93.

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

[8]  Donald E. Knuth,et al.  Fast Pattern Matching in Strings , 1977, SIAM J. Comput..

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

[10]  Charles Consel,et al.  A tour of Schism: a partial evaluation system for higher-order applicative languages , 1993, PEPM '93.

[11]  Danny De Schreye,et al.  Sound and Complete Partial Deduction with Unfolding Based on Well-Founded Measures , 1992, Theor. Comput. Sci..

[12]  Mike Paterson,et al.  Linear Unification , 1978, J. Comput. Syst. Sci..

[13]  Alberto Pettorossi,et al.  Synthesis of Programs from Unfold/Fold Proofs , 1993, LOPSTR.

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

[15]  Carsten Kehler Holst,et al.  Finiteness Analysis , 1991, Conference on Functional Programming Languages and Computer Architecture.

[16]  Pascal Van Hentenryck A slick procedure for integrity checking in deductive databases , 1994 .

[17]  R. Kowalski,et al.  Linear Resolution with Selection Function , 1971 .

[18]  V. Rich Personal communication , 1989, Nature.

[19]  John P. Gallagher,et al.  Tutorial on specialisation of logic programs , 1993, PEPM '93.

[20]  François Bry,et al.  Integrity Verification in Knowledge Bases , 1990, RCLP.

[21]  Kevin Knight,et al.  Unification: a multidisciplinary survey , 1989, CSUR.

[22]  Leon Sterling Ensuring Global Termination of Partial Deduction while Allowing Flexible Polyvariance , 1995 .

[23]  Neil D. Jones,et al.  The Essence of Program Transformation by Partial Evaluation and Driving , 1999, Logic, Language and Computation.

[24]  Bart Demoen,et al.  Analysing Logic Programs Using 'Prop'-ositional Logic Programs and a Magic Wand , 1993, ILPS.

[25]  Valentin F. Turchin,et al.  The concept of a supercompiler , 1986, TOPL.

[26]  Saumya K. Debray,et al.  Estimating the Computational Cost of Logic Programs , 1994, SAS.

[27]  Anders Bondorf,et al.  A Self-Applicable Partial Evaluator for Term Rewriting Systems , 1989, TAPSOFT, Vol.2.

[28]  David J. Sherman,et al.  Squeezing Intermediate Construction in Equational Programs , 1996, Dagstuhl Seminar on Partial Evaluation.

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

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

[31]  John P. Gallagher,et al.  Specialisation of a Unification Algorithm , 1991, LOPSTR.

[32]  Stephen Owen,et al.  Issues in the Partial Evaluation of Meta-Interpreters , 1989, META.

[33]  Sin Yeung Lee,et al.  Improving Integrity Constraint Checking for Stratified Deductive Databases , 1994, DEXA.

[34]  Bart Demoen,et al.  On the Transformation of a Prolog Program to a More Efficient Binary Program , 1992, LOPSTR.

[35]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[36]  Donald A. Smith Constraint Operations for CLP(FT) , 1991, ICLP.

[37]  J. W. LLOYD,et al.  Making Prolog more Expressive , 1984, J. Log. Program..

[38]  Danny De Schreye,et al.  A sensible least Herbrand semantics for untyped Vanilla meta-programming and its extension to a limited form of amalgamation , 1992, CNKBS.

[39]  Carsten Kehler Holst Syntactic currying: yet another approach to partial evaluation , 1989 .

[40]  Danny De Schreye,et al.  Tutorial on Program Specialisation (Abstract) , 1995, ILPS.

[41]  P. M. Hill,et al.  Meta-Programming in Logic Progamming , 1998 .

[42]  Wei-Ngan Chin,et al.  Automatic methods for program transformation , 1990 .

[43]  Danny De Schreye,et al.  Two semantics for definite meta-programs, using the non-ground representation , 1995 .

[44]  John W. Lloyd Correctness of Logic Program Transformations Based on Existential Termination , 1995 .

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

[46]  John Launchbury,et al.  Projection factorisations in partial evaluation , 1991 .

[47]  Alberto Martelli,et al.  An Efficient Unification Algorithm , 1982, TOPL.

[48]  Michael Leuschel,et al.  Conjunctive Partial Deduction in Practice , 1996, LOPSTR.

[49]  K. A. Ross,et al.  Tabled Evaluation with Delaying for General Logic Programs , 1996 .

[50]  Danny De Schreye,et al.  Controlling generalization and polyvariance in partial deduction of normal logic programs , 1998, TOPL.

[51]  John C. Shepherdson Unsolvable Problems for SLDNF Resolution , 1991, J. Log. Program..

[52]  Danny De Schreye,et al.  An almost perfect abstraction operator for partial deduction , 1994 .

[53]  Danny De Schreye,et al.  Termination of Logic Programs: The Never-Ending Story , 1994, J. Log. Program..

[54]  Jan Komorowski,et al.  An Introduction to Partial Deduction , 1992, META.

[55]  Matthew L. Ginsberg,et al.  Negative Subgoals with Free Variables , 1991, J. Log. Program..

[56]  Yoshihiko Futamura,et al.  Partial Evaluation of Computation Process--An Approach to a Compiler-Compiler , 1999, High. Order Symb. Comput..

[57]  Sandro Etalle,et al.  Transformation of Left Terminating Programs: the Reordering Problem , 1995, LOPSTR.

[58]  Randy Goebel,et al.  Gracefully adding negation and disjunction to Prolog , 1986, ICLP.

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

[60]  Anders Bondorf,et al.  Logimix: A Self-Applicable Partial Evaluator for Prolog , 1992, LOPSTR.

[61]  M. Sørensen,et al.  Conjunctive Partial Deduction: Foundations, Control, Algorithms, and Experiments , 1999, J. Log. Program..

[62]  Krzysztof R. Apt,et al.  From logic programming to Prolog , 1996, Prentice Hall International series in computer science.

[63]  Manuel V. Hermenegildo,et al.  Compile-Time Derivation of Variable Dependency Using Abstract Interpretation , 1992, J. Log. Program..

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

[65]  Alberto Pettorossi,et al.  Completeness of some Transformation Strategies for Avoiding Unncecessary Logical Variables , 1994, GULP.

[66]  Michele Bugliesi,et al.  Partial Evaluation in Prolog: Some Improvements about Cut , 1989, NACLP.

[67]  Raf Venken A Prolog Meta-Interpreter for Partial Evaluation and its Application to Source to Source Transformation and Query-Optimisation , 1984, ECAI.

[68]  John P. Gallagher,et al.  Deletion of Redundant Unary Type Predicates from Logic Programs , 1992, LOPSTR.

[69]  Michael Leuschel,et al.  Redundant Argument Filtering of Logic Programs , 1996, LOPSTR.

[70]  David Andre De Waal,et al.  Analysis and transformation of proof procedures , 1994 .

[71]  Corin A. Gurr,et al.  Towards fast and declarative meta-programming , 1995 .

[72]  Neil D. Jones,et al.  What Not to Do When Writing an Interpreter for Specialisation , 1996, Dagstuhl Seminar on Partial Evaluation.

[73]  Danny De Schreye,et al.  SLDNFA: An Abductive Procedure for Normal Abductive Programs , 1992, JICSLP.

[74]  Patricia M. Hill,et al.  Supporting Transformations for the Partial Evaluation of Logic Programs , 1993, J. Log. Comput..

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

[76]  J. Kruskal Well-quasi-ordering, the Tree Theorem, and Vazsonyi’s conjecture , 1960 .

[77]  Wlodzimierz Drabent,et al.  Completeness of SLDNF-Resolution for Nonfloundering Queries , 1993, J. Log. Program..

[78]  Sin Yeung Lee,et al.  Further Improvements on Integrity Constraint Checking for Stratifiable Deductive Databases , 1996, VLDB.

[79]  Marianne Baudinet,et al.  Proving termination properties of Prolog programs: a semantic approach , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[80]  Danny De Schreye,et al.  Why Untyped Nonground Metaprogramming Is Not (Much Of) A Problem , 1995, J. Log. Program..

[81]  Volker Küchenhoff On the Efficient Computation of the Difference Between Concecutive Database States , 1991, DOOD.

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

[83]  Corin A. Gurr,et al.  Specialising the Ground Representation in the Logic Programming Language Gödel , 1993, LOPSTR.

[84]  Nevin Heintze Practical Aspects of Set Based Analysis , 1992, JICSLP.

[85]  Roland N. Bol,et al.  Loop checking in partial deduction , 1993, J. Log. Program..

[86]  Konstantinos Sagonas,et al.  XSB as an efficient deductive database engine , 1994, SIGMOD '94.

[87]  Saumya K. Debray,et al.  Resource-bounded partial evaluation , 1997 .

[88]  Hendrik Decker,et al.  Comparing and synthesizing integrity checking methods for deductive databases , 1994, Proceedings of 1994 IEEE 10th International Conference on Data Engineering.

[89]  Frank van Harmelen,et al.  The Limitations of Partial Evaluation , 1988, IMYCS.

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

[91]  Sandro Etalle,et al.  A Transformation System for Modular CLP Programs , 1995, ICLP.

[92]  Chandrabose Aravindan,et al.  On the Correctness of Unfold/Fold Transformation of Normal and Extended Logic Programs , 1995, J. Log. Program..

[93]  Neil D. Jones,et al.  Mix: A self-applicable partial evaluator for experiments in compiler generation , 1989, LISP Symb. Comput..

[94]  Gerda Janssens,et al.  Deriving Descriptions of Possible Values of Program Variables by Means of Abstract Interpretation , 1990, J. Log. Program..

[95]  Robert Glück,et al.  An Algorithm of Generalization in Positive Supercompilation , 1995, ILPS.

[96]  Kees Doets,et al.  From logic to logic programming , 1994, Foundations of computing series.

[97]  Ron Seljée,et al.  A New Method for Integrity Constraint Checking in Deductive Database , 1995, Data Knowl. Eng..

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

[99]  Pierre Deransart,et al.  Prolog - the standard: reference manual , 1996 .

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

[101]  Erik Sandewall,et al.  A Partial Evaluator, and its Use as a Programming Tool , 1976, Artif. Intell..

[102]  Alberto Pettorossi,et al.  Unfolding - Definition - Folding, in this Order, for Avaoiding Unnecessary Variables in Logic Programs , 1991, PLILP.

[103]  Graham Higman,et al.  Ordering by Divisibility in Abstract Algebras , 1952 .

[104]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

[105]  John P. Gallagher,et al.  Regular Approximation of Computation Paths in Logic and Functional Languages , 1996, Dagstuhl Seminar on Partial Evaluation.

[106]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[107]  Bern Martens On the semantics of meta-programming and the control of partial deduction in logic programming , 1994 .

[108]  David S. Warren A Logic Programming View of CLP , 1993 .

[109]  Maurice Bruynooghe,et al.  The Compilation of Forward Checking Regimes through Meta-Interpretation and Transformation , 1988, META.

[110]  Danny De Schreye,et al.  An almost perfect abstraction operation for partial deduction using characteristic trees , 1995 .

[111]  Neil D. Jones,et al.  An introduction to partial evaluation , 1996, CSUR.

[112]  Zoltan Somogyi,et al.  The Execution Algorithm of Mercury, an Efficient Purely Declarative Logic Programming Language , 1996, J. Log. Program..

[113]  Manuel V. Hermenegildo,et al.  Combined Determination of Sharing and Freeness of Program Variables through Abstract Interpretation , 1991, ICLP.

[114]  Robert Glück,et al.  On the generation of specializers , 1994, Journal of Functional Programming.

[115]  Michael Leuschel,et al.  Efficiently Generating Efficient Generating Extensions in Prolog , 1996, Dagstuhl Seminar on Partial Evaluation.

[116]  L. Naish Multi-paradigm Logic Programming Higher-order Logic Programming in Prolog , 1995 .

[117]  David Chan,et al.  Constructive Negation Based on the Completed Database , 1988, ICLP/SLP.

[118]  Michael Leuschel,et al.  Preserving Termination of Tabled Logic Programs While Unfolding , 1997, LOPSTR.

[119]  John W. Lloyd,et al.  A Basis for Deductive Database Systems II , 1986, J. Log. Program..

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

[121]  Hai-Ping Ko,et al.  Substitution and Refutation Revisited , 1991, ICLP.

[122]  Michael Leuschel,et al.  Global Control for Partial Deduction through Characteristic Atoms and Global Trees , 1996, Dagstuhl Seminar on Partial Evaluation.

[123]  Robert A. Kowalski,et al.  A Theorem-Proving Approach to Database Integrity , 1988, Foundations of Deductive Databases and Logic Programming..

[124]  Sandro Etalle,et al.  More on Unfold/Fold Transformations of Normal Programs: Preservation of Fitting's Semantics , 1994, META.

[125]  Michael Leuschel,et al.  Partial Evaluation of the "Real Thing" , 1994, LOPSTR.

[126]  Alberto Pettorossi,et al.  Enhancing Partial Deduction via Unfold/Fold Rules , 1996, LOPSTR.

[127]  Manuel V. Hermenegildo,et al.  Implementation of multiple specialization in logic programs , 1995, PEPM '95.

[128]  Michael Sperber Self-Applicable Online Partial Evaluation , 1996, Dagstuhl Seminar on Partial Evaluation.

[129]  Michael Leuschel,et al.  Ecological Partial Deduction: Preserving Characteristic Trees Without Constraints , 1995, LOPSTR.

[130]  Robert Glück,et al.  Occam's Razor in Metacompuation: the Notion of a Perfect Process Tree , 1993, WSA.

[131]  John W. Lloyd,et al.  The Gödel programming language , 1994 .

[132]  S. Ginsburg,et al.  Acyclic logic programs and the completeness of SLDNF-resolution , 1991 .

[133]  Steven David Prestwich,et al.  The PADDY Partial Deduction System , 1992 .

[134]  Neil D. Jones,et al.  BTA Algorithms to Ensure Termination of Off-Line Partial Evaluation , 1996, Ershov Memorial Conference.

[135]  Anders Bondorf,et al.  Improving CPS-Based Partial Evaluation: Writing Cogen by Hand , 1994, PEPM.

[136]  Mireille Ducassé,et al.  A Backward Slicing Algorithm for Prolog , 1996, SAS.

[137]  Robert Glück,et al.  Binding-time analysis applied to mathematical algorithms , 1996 .

[138]  Mark Wallace,et al.  A Treatment of Negation during Partial Evaluation , 1989, META.

[139]  Annalisa Bossi,et al.  Preserving Universal Termination through Unfold/Fold , 1994, ALP.

[140]  John P. Gallagher,et al.  The Applicability of Logic Program Analysis and Transformation to Theorem Proving , 1994, CADE.

[141]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

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

[143]  Lars Ole Andersen Partial Evaluation of C and Automatic Compiler Generation (Extended Abstract) , 1992, CC.

[144]  Robert Glück,et al.  Towards Unifying Partial Evaluation, Deforestation, Supercompilation, and GPC , 1994, ESOP.

[145]  Renaud Marlet Vers une formalisation de l'evaluation partielle , 1994 .

[146]  Valentin F. Turchin,et al.  Metacomputation: Metasystem Transitions plus Supercompilation , 1996, Dagstuhl Seminar on Partial Evaluation.

[147]  Hendrik Decker,et al.  Integrity Enforcement on Deductive Databases , 1986, Expert Database Conf..

[148]  Gustaf Neumann,et al.  A Simple Transformation from Prolog-written Metalevel Interpreters into Compilers and its Implementation , 1990, RCLP.

[149]  Peter J. Stuckey,et al.  Negation and Constraint Logic Programming , 1995, Inf. Comput..

[150]  Alberto Pettorossi,et al.  Reducing nondeterminism while specializing logic programs , 1997, POPL '97.

[151]  Valentin F. Turchin,et al.  Program transformation with metasystem transitions , 1993, Journal of Functional Programming.

[152]  R. Reiter On Closed World Data Bases , 1987, Logic and Data Bases.

[153]  Andrei P. Nemytykh,et al.  A Self-Applicable Supercompiler , 1996, Dagstuhl Seminar on Partial Evaluation.

[154]  M. Newman On Theories with a Combinatorial Definition of "Equivalence" , 1942 .

[155]  中川 裕志,et al.  UNFOLD/FOLD TRANSFORMATION OF STRATIFIED PROGRAMS , 1989 .

[156]  Mark Wallace Compiling Integrity Checking into Update Procedures , 1991, IJCAI.

[157]  Erik Ruf,et al.  Automatic Online Partial Evaluation , 1991, FPCA.

[158]  John P. Gallagher,et al.  Some low-level source transformations of logic programs , 1990 .

[159]  Maurizio Proie ' Iti THE LOOP ABSORPTION AND THE GENERALIZATION STRATEGIES FOR THE DEVELOPMENT OF LOGIC PROGRAMS AND PARTIAL DEDUCTION , 1993 .

[160]  Robert Glück,et al.  A Roadmap to Metacomputation by Supercompilation , 1996, Dagstuhl Seminar on Partial Evaluation.

[161]  Tadashi Kanamori,et al.  Construction of Logic Programs Based on Generalized Unfold/Fold Rules , 1987, ICLP.

[162]  Alberto Pettorossi,et al.  Transformation of Logic Programs: Foundations and Techniques , 1994, J. Log. Program..

[163]  François Bry,et al.  Query Evaluation in Deductive Databases: Bottom-Up and Top-Down Reconciled , 1990, Data Knowl. Eng..

[164]  Hisao Tamaki,et al.  OLD Resolution with Tabulation , 1986, ICLP.

[165]  Danny De Schreye,et al.  Towards creating specialised integrity checks through partial evaluation of meta-interpreters , 1995, PEPM '95.

[166]  Thomas W. Reps,et al.  Program Specialization via Program Slicing , 1996, Dagstuhl Seminar on Partial Evaluation.

[167]  Helmut Seidl Parameter Reduction of Higher Level Grammars , 1987, Theor. Comput. Sci..

[168]  Donald A. Smith,et al.  Partial evaluation of pattern matching in constraint logic programming languages , 1991, PEPM '91.

[169]  Robert A. Kowalski,et al.  Predicate Logic as Programming Language , 1974, IFIP Congress.

[170]  Michael Leuschel,et al.  Generating Specialised Update Procedures Through Partial Deduction of the Ground Representation , 1995, Deductive Databases / Abduction in Deductive Databases.

[171]  Maurice Bruynooghe,et al.  Live-structure dataflow analysis for Prolog , 1994, TOPL.

[172]  M. Hermenegildo,et al.  Deriving a fixpoint computation algorithm for top-down abstract interpretation of logic programs , 1990 .

[173]  Saumya K. Debray,et al.  Global Flow Analysis as a Practical Compilation Tool , 1992, J. Log. Program..

[174]  Maurice Bruynooghe,et al.  A Practical Framework for the Abstract Interpretation of Logic Programs , 1991, J. Log. Program..

[175]  Robert Glück Towards Multiple Self-Application , 1991, PEPM.

[176]  J. Lawall,et al.  Continuation introduction and elimination in higher-order programming languages , 1995 .

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

[178]  John C. Shepherdson,et al.  Unfold/fold transformations of logic programs , 1992, Mathematical Structures in Computer Science.

[179]  Sandro Etalle,et al.  Transforming acyclic programs , 1994, TOPL.

[180]  Danny De Schreye,et al.  Creating Specialised Integrity Checks Through Partial Evaluation of Meta-Interpreters , 1998, J. Log. Program..

[181]  Marc Denecker,et al.  Knowledge representation and reasoning in incomplete logic programming , 1993 .

[182]  Anders Bondorf,et al.  Automatic Autoprojection of Recursive Equations with Global Variables and Abstract Data Types , 1991, Sci. Comput. Program..

[183]  Tadashi Kanamori,et al.  Abstract Interpretation based on OLDT Resolution , 1993, J. Log. Program..

[184]  Michael J. Maher,et al.  Constraint Logic Programming: A Survey , 1994, J. Log. Program..

[185]  Maurice Bruynooghe,et al.  Deriving Fold/Unfold Transformations of Logic Programs Using Extended OLDT-Based Abstract Interpretation , 1993, J. Symb. Comput..

[186]  Peter Holst Andersen Partial Evaluation Applied to Ray Tracing , 1996 .

[187]  John W. Lloyd Partial Deduction of the Ground Representation and its Application to Integrity Checking , 1995 .

[188]  Melvin Fitting,et al.  First-Order Logic and Automated Theorem Proving , 1990, Graduate Texts in Computer Science.

[189]  Lawrence Cavedon,et al.  Acyclic Logic Programs and the Completeness of SLDNF-Resolution , 1991, Theor. Comput. Sci..

[190]  John W. Lloyd,et al.  A Completeness Theorem for SLDNF Resolution , 1989, J. Log. Program..

[191]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[192]  Danny De Schreye,et al.  Termination Analysis for Tabled Logic Programming , 1997, LOPSTR.

[193]  Robert Glück,et al.  Controlling conjunctive partial deduction of definite logic programs , 1996 .

[194]  Steven David Prestwich,et al.  Online partial deduction of logic programs , 1993, PEPM '93.

[195]  M. Howard Williams,et al.  A Path Finding Method for Constraint Checking in Deductive Databases , 1989, Data Knowl. Eng..

[196]  John P. Gallagher,et al.  Fast and Precise Regular Approximations of Logic Programs , 1994, ICLP.

[197]  Maurizio Martelli,et al.  A New SLDNF-Tree , 1992, Inf. Process. Lett..

[198]  C. A. Gurr,et al.  A Self-Applicable Partial Evaluator for the Logic Programming Language Gödel ( Extended Abstract ) , 1994 .

[199]  Haskell B. Curry,et al.  Foundations of Mathematical Logic , 1964 .

[200]  Franco Turini,et al.  Logic Program Synthesis and Transformation — Meta-Programming in Logic , 1994, Lecture Notes in Computer Science.

[201]  Robert Glück,et al.  Efficient Multi-level Generating Extensions for Program Specialization , 1995, PLILP.

[202]  S. C. Kleene,et al.  Introduction to Metamathematics , 1952 .

[203]  Alberto Pettorossi,et al.  Semantics preserving transformation rules for Prolog , 1991 .

[204]  Krzysztof R. Apt,et al.  A new definition of SLDNF-resolution , 1992 .

[205]  Jean-Pierre Jouannaud,et al.  Rewrite Systems , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[206]  Jonathan Stillman Computational problems in equational theorem proving , 1989 .

[207]  Richard A. O'Keefe,et al.  On the Treatment of Cuts in Prolog Source-Level Tools , 1985, SLP.

[208]  Bart Demoen,et al.  A partial evaluation system for prolog: theoretical and practical considerations , 1987 .

[209]  Donald A. Smith,et al.  Partial Evaluation of a CLP Language , 1990, NACLP.

[210]  Neil D. Jones,et al.  Stepwise Development of Operational and Denotational Semantics for Prolog , 1984, International Conference on Spoken Language Processing.

[211]  John W. Lloyd,et al.  A Basis for Deductive Database Systems , 1985, J. Log. Program..

[212]  Nachum Dershowitz,et al.  Termination of Rewriting , 1987, J. Symb. Comput..

[213]  S. A. Romanenko,et al.  A compiler generator produced by a self-applicable specializer can have a surprisingly natural and u , 1988 .

[214]  Jens Gustedt Algorithmic Aspects of Ordered Structures , 1992 .

[215]  Alberto Pettorossi,et al.  Rules and strategies for transforming functional and logic programs , 1996, CSUR.

[216]  Danny De Schreye,et al.  Automatic Finite Unfolding Using Well-Founded Measures , 1996, J. Log. Program..

[217]  François Bry,et al.  Query Evaluation in Recursive Databases , 1990 .

[218]  William H. Winsborough,et al.  Multiple Specialization using Minimal-Function Graph Semantics , 1992, J. Log. Program..

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

[220]  Knut Hinkelmann Transformation von Hornklausel-Wissensbasen - Verarbeitung gleichen Wissens durch verschiedene Inferenzen , 1995, DISKI.

[221]  Hirohisa Seki,et al.  Unfold/Fold Transformation of General Logic Programs for the Well-Founded Semantics , 1993, J. Log. Program..

[222]  Annalisa Bossi,et al.  Replacement Can Preserve Termination , 1996, LOPSTR.

[223]  María Alpuente,et al.  Narrowing-Driven Partial Evaluation of Functional Logic Programs , 1996, ESOP.

[224]  Karel De Vlaminck,et al.  Polyvariant constructor specialisation , 1995, PEPM '95.

[225]  Danny De Schreye,et al.  Logic Program Specialisation: How To Be More Specific , 1996, PLILP.

[226]  Leon Sterling,et al.  Metainterpreters for Expert System Construction , 1989, J. Log. Program..

[227]  Robert Glück,et al.  Partial Deduction and Driving are Equivalent , 1994, PLILP.

[228]  Zohar Manna,et al.  Proving termination with multiset orderings , 1979, CACM.

[229]  M. Mowbray,et al.  A Completeness Result for SLDNF-Resolution , 1993, GULP.

[230]  Hendrik Decker,et al.  A Uniform Approach to Constraint Satisfaction and Constraint Satisfiability in Deductive Databases , 1988, EDBT.

[231]  Saumya K. Debray,et al.  Functional computations in logic programs , 1989, TOPL.

[232]  Liz Sonenberg,et al.  Integrity Constraint Checking in Stratified Databases , 1987, J. Log. Program..

[233]  W. F. Clocksin,et al.  Programming in Prolog, 3rd Edition , 1987 .

[234]  Steven David Prestwich,et al.  An Unfold Rule for Full Prolog , 1992, LOPSTR.

[235]  Hendrik Decker,et al.  Integrity Checking in Deductive Databases - the Ultimate Method? , 1994, Australasian Database Conference.

[236]  Torben Æ. Mogensen Constructor specialization , 1993, PEPM '93.

[237]  Lars Birkedal,et al.  Hand-Writing Program Generator Generators , 1994, PLILP.

[238]  Lars Ole Andersen Binding-time analysis and the taming of C pointers , 1993, PEPM '93.

[239]  Peter J. Stuckey,et al.  Constructive negation for constraint logic programming , 1991, [1991] Proceedings Sixth Annual IEEE Symposium on Logic in Computer Science.

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

[241]  John C. Shepherdson,et al.  Partial Deduction of Updateable Definite Logic Programs , 1994, J. Log. Program..

[242]  Maurice Bruynooghe,et al.  A live-structure data-flow analysis for Prolog: theory , 1993 .

[243]  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.

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