A common hazard for implementations of applicative
programming languages is the excessive creation of garbage
cells during program execution. The available run-time
garbage collecting processes are expensive in time and often
require a periodic disruption of the program execution. The
present book addresses the problem of memory re-use for
logic programs through program analysis rather than by
run-time garbage collection. The static analysis is
constructed as an application of abstractinterpretation for
logic programs. The starting point is a previously developed
application of integrated type and mode analysis, which
basically supplies a description of the logical terms to
which program variables can be bound at run time. The
contribution of the book consists of a modular extension of
the abstract domain and operations in order to derive
run-time properties concerning the sharing and liveness of
term substructures dynamically created during program
execution. Alsoillustrated is how such information can be
used by the compiler to improve the allocation of run-time
structures and to automatically introduce destructive
assignments in logic languages in a safe and transparent
way, thereby shifting some part of the run-time storage
reclamation overhead to compile time.