This is the idea in program transformation. Most useful transformations, however, require a preceding program analysis to discover pertinent facts about a program's runtime behaviour.
Abstract interpretation is a language-independent theory for static analysis of programs.
This theory plays a prominent role in much work in the group, since most sophisticated implementation ideas require static analysis. We are contributing to the theory generally, as well as its applications in functional and logic programming, including sophisticated program transformation. We are also developing techniques that dramatically reduce the time and effort spent on debugging. Traditional debugging techniques are based on following the steps of program execution. With high-level languages such as logic programming languages, the sequence of execution steps can be very complex.