However
The underlying premises and implementation structures for many tools and language implementations are closely related
Examples include:
- The program dependence graph representation is heavily used in program optimization and parallelization, as well as in software engineering tools
- Type inference is being used increasingly broadly as the basis for some software engineering tools