The main body, section 5, illustrates the primitive operations of unification and procedure entry and exit, and demonstrates that they indeed mimic standard-conforming implementations. Finally, section 8 discusses implementation issues and empirical results obtained by a prototype. Section 9 presents related work. The writing style, theoretical approach, and numerous long-winded definitions render the paper hard to read. Approaches to liveness analysis are inherently limited, since liveness cannot be derived completely by compile-time analysis.
Garbage collection remains necessary, and the paper clarifies why.
What is missing is a sense of how much garbage collection is saved with the optimizations described. Despite these minor shortcomings, the paper is of considerable value for those wishing to offer logic programming languages without the conventional inefficiencies. The authors demonstrate with examples where a compiler can free and reuse space. These examples make it plausible that liveness analysis is effective, and the reader becomes convinced that the resulting object code compares well with imperative languages. The publication makes good use of logic program sources and figures and explains recursive types with back-arcs in their type graphs.