Extensible Logic Program Schemata

Schema-based transformational systems maintain a library of logic program schemata which capture large classes of logic programs. One of the shortcomings of schema-based transformation approaches is their reliance on a large (possibly incomplete) set of logic program schemata that is required in order to capture all of the minor syntactic differences between semantically similar logic programs. By defining a set of extensible logic program schemata and an associated set of logic program transformations, it is possible to reduce the size of the schema library while maintaining the robustness of the transformational system. In our transformational system, we have defined a set of extensible logic program schemata in λProlog. Because λProlog is a higher-order logic programming language, it can be used as the representation language for both the logic programs and the extensible logic program schemata. In addition to the instantiation of predicate variables, extensible logic program schemata can be extended by applying standard programming techniques (e.g., accumulating results), introducing additional arguments (e.g., a second list to append to the end of the primary list), combining logic program schemata which share a common primary input, and connecting logic program schemata which are connected via a result of one schema being an input to the other schema. These extensions increase the robustness of logic program schemata and enhance traditional schema-based transformational systems.

[1]  Dave Barker-Plummer Cliche Programming in PROLOG , 1989 .

[2]  Leon Sterling,et al.  Applying Techniques to Skeletons , 1993, ICLP Workshop on Construction of Logic Programs.

[3]  Leon S. Sterling Representing Logic Program Schemata in λProlog , 1995 .

[4]  Timothy S. Gegg-Harrison Exploiting program schemata in an automated program debugger , 1994 .

[5]  John P. Gallagher,et al.  Schema-Based Top-Down Design of Logic Programs Using Abstract Data Types , 1994, LOPSTR.

[6]  Pierre Flener Logic program synthesis from incomplete information , 1995, The Kluwer international series in engineering and computer science.

[7]  Dale A. Miller,et al.  AN OVERVIEW OF PROLOG , 1988 .

[8]  Norbert E. Fuchs,et al.  An Opportunistic Approach for Logic Program Analysis and Optimisation Using Enhanced Schema-Based Transformations , 1995, LOPSTR.

[9]  Paul Brna,et al.  Prolog programming techniques , 1991 .

[10]  Yves Deville,et al.  Logic Program Synthesis from Incomplete Specifications , 1993, J. Symb. Comput..

[11]  S T Gegg-Harrison Basic Prolog Schemata , 1989 .

[12]  Timothy S. Gegg-Harrison Learning Prolog in a schema-based environment , 1991 .

[13]  Jørgen Fischer Nilsson,et al.  Declarative Logic Programming with Primitive Recursive Relations on Lists , 1996, JICSLP.

[14]  Timothy S. Gegg-Harrison Adapting instruction to the student's capabilities , 1992 .

[15]  Yves Deville,et al.  Logic Program Transformation through Generalization Schemata , 1995, LOPSTR.