Rewriting terms (tree structured values, e.g. parts of an AbstractSyntaxTree) by replacing parts with other parts by repeated applications of rewrite rules (forming a TermRewriteSystem). Used in compiler implementation. See http://en.wikipedia.org/wiki/Term_rewriting ---- CategoryCompilers