Abstract

Unification algorithms used in most Prolog implementations are based on Robinson's definition (1979) but differ in not implementing the so-called "occur check"-a time-consuming operation which tries to avoid unifying a variable with a term in which it occurs. Elimination of "occur check" could result in logically unsound solutions or an infinite loop at execution. On the other hand, Colmerauer (1982) claimed that the unification overhead for handling cyclic structures is less than that required by "occur-check", and more importantly, cyclic structures may become very useful in representing static inter-linked data structures. This paper presents an efficient algorithm for handling cyclic structures. The algorithm is embedded in an object-oriented term representation method-Term Object Sharing which has been implemented in LU-Prolog and is running under the UNIX and C++ environment.< <ETX xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">&gt;</ETX>

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call