t two complementary improvements for abstract-interpretation-based flow analysis r-order languages: (1) abstract garbage collection and (2) abstract counting.1,2 garbage collection is an analog to its concrete counterpart: the analysis determines when an resource has become unreachable, and then, re-allocates it as fresh. This prevents s from joining during abstract interpretation, which has two immediate effects: precision of the interpretation increases and (2) its running time often falls. In abstract , the analysis tracks how many times an abstract resource has been allocated. A one implies that the abstract resource momentarily represents only one concrete resource. This knowledge, in turn, drives environment analysis, expanding the kind (rather than just the degree) of optimization available to the compiler.