Extensible Unification by Metastructures

Metastructures are a new way to extend Prolog’s built-in unification by user definitions. While the behavior of ordinary terms during unification remains the same, the user can define the behavior of metastructures. Metastructures enable the user to implement efficiently many proposed enhancements of Prolog such as functional extensions, constraints according to the CLP scheme and meta-logical primitives in terms of Prolog, instead of relying on a highly specialized system. Metastructures can be implemented so efficiently that programs not using this extension are executed with a very small overhead. Metastructures have the same execution expense as an efficient implementation of freeze/2. Additionally, the system’s garbage collector is able to detect and remove all unused metastructures without knowing their actual definition.

[1]  Maurice Bruynooghe Garbage Collection in Prolog Interpreters , 1984, Implementations of Prolog.

[2]  Setrag Khoshafian,et al.  Object identity , 1986, OOPSLA 1986.

[3]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[4]  Lee Naish,et al.  Negation and Control in Prolog , 1986, Lecture Notes in Computer Science.

[5]  Howard A. Blair Canoncical Conservative Extensions of Logic Program Completions , 1987, SLP.

[6]  Joxan Jaffar,et al.  Constraint logic programming , 1987, POPL '87.

[7]  Giorgio Levi,et al.  The Relation between Logic and Functional Languages: A Survey , 1986, J. Log. Program..

[8]  Peter J. Stuckey,et al.  Interface Logic Programming , 1989, Aust. Comput. J..

[9]  Alain Colmerauer,et al.  Opening the Prolog III universe , 1987 .

[10]  Maurice Bruynooghe,et al.  Towards a Real-Time Garbage Collector for Prolog , 1985, SLP.

[11]  Jörg H. Siekmann Unification Theory , 1989, J. Symb. Comput..

[12]  V. Stavridou,et al.  Abstraction and specification in program development , 1988 .

[13]  Gert Smolka,et al.  Logic Programming with Polymorphically Order-Sorted Types , 1988, ALP.

[14]  T Vasak Universal closure operator for prolog , 1986, SIGP.

[15]  Mats Carlsson,et al.  Freeze, Indexing, and Other Implementation Issues in the WAM , 1987, ICLP.

[16]  Pascal Van Hentenryck Constraint satisfaction in logic programming , 1989, Logic programming.

[17]  José Meseguer,et al.  Models and Equality for Logical Programming , 1987, TAPSOFT, Vol.1.

[18]  William A. Kornfeld Equality for Prolog , 1983, IJCAI.

[19]  Philip Wadler,et al.  Fixing some space leaks with a garbage collector , 1987, Softw. Pract. Exp..

[20]  Doug DeGroot,et al.  Logic programming - functions, relations and equations , 1986 .

[21]  Andreas Krall Implementation of a high-speed Prolog interpreter , 1987, PLDI.

[22]  A. Krall Implementation of a high-speed Prolog interpreter , 1987, PLDI 1987.

[23]  M. H. van Emden,et al.  Logic Programming with Equations , 1987, J. Log. Program..

[24]  Barbara Liskov,et al.  Abstraction and Specification in Program Development , 1986 .