Context-sensitive rewriting techniques for programs with
strategy annotations
Author
Salvador Lucas
Abstract
Strategy annotations have been
used in a number of programming languages and rewriting-based systems
(e.g., OBJ2, OBJ3, CafeOBJ, Maude, JITty, ...) for improving the termination
behavior and avoiding useless computations.
They also accomplish the
important task of providing a simple interface for understanding and
eventually modifying the execution of programs. They have been given
different formats and operational interpretations: a recent
classification distinguishes between E-strategies, just-in-time
style, and laziness annotations. In all these
cases, context-sensitive rewriting (CSR) provides a framework for analyzing
and ensuring essential computational properties such as termination,
correctness and completeness (regarding the usual semantics:
head-normalization, normalization, functional evaluation, and
infinitary normalization). Thus, CSR and its associated techniques
provide a useful tool for the programmers and designers of software
systems aimed at supporting the practical use of such programming
languages and rewriting-based systems. In this paper, we summarize the
main results and techniques regarding CSR, and exemplify their use
with programs using strategy annotations.