Modern higher-order languages such as Scheme and Standard ML provide simple but powerful tools for controlling complexity through abstraction. For twenty years, a major goal for research on these languages has been the development of implementation techniques that bring their performance closer to that of lower level languages. This project will study techniques for optimizing the use of memory in higher- order programming languages, using a combination of theoretical and experimental techniques. Specific activities include: (1) Development of theoretical methods for proving the correctness of storage optimizations in compilers. (2) Proof of correctness of several variations of aggregate update analysis and their associated transformations. (3) Analysis and experimental investigation of new algorithms for generational garbage collection. ***