  Escape analysis of object-oriented languages approximates the set of objects
which do not escape from a given context. If we take a method as context, the
non-escaping objects can be allocated on its activation stack; if we take a
thread, Java synchronisation locks on such objects are not needed. In this
paper, we formalise a basic escape domain e as an abstract interpretation of
concrete states, which we then refine into an abstract domain er which is more
concrete than e and, hence, leads to a more precise escape analysis than e. We
provide optimality results for both e and er, in the form of Galois insertions
from the concrete to the abstract domains and of optimal abstract operations.
The Galois insertion property is obtained by restricting the abstract domains
to those elements which do not contain garbage, by using an abstract garbage
collector. Our implementation of er is hence an implementation of a formally
correct escape analyser, able to detect the stack allocatable creation points
of Java (bytecode) applications.
  This report contains the proofs of results of a paper with the same title and
authors and to be published in the Journal "Higher-Order Symbolic Computation".
