Não tenho certeza de que isso trará mais do que você já sabe. Mas então, posso deixar de entender os motivos que fazem você se perguntar sobre a reescrita de termos. Isso ajuda.
Como você deve saber, gramáticas são sistemas de reescrita de strings. No topo da hierarquia de Chomsky, você tem gramáticas do tipo 0, que definem angústias recursivamente enumeráveis (RE) e têm o poder computacional das máquinas de Turing.
Isso indica que os sistemas de reescrita em geral têm muito a ver com a expressão de algoritmos.
O problema com as strings em geral é que não há uma maneira óbvia de anexar semântica a elas. É uma espécie de reescrita amorfa.
O que as pessoas geralmente estão interessadas é expressar algoritmos em domínios específicos que possuem estrutura e propriedades. Esses domínios são frequentemente definidos a partir de entidades elementares (atômicas) e fechados por várias operações, possivelmente quocientes por relações de equivalência, e assim por diante. Estes são frequentemente chamados álgebras.
Esses domínios geralmente são abstratos. Mas os cálculos em seus elementos podem ser expressos apenas em representações concretas. Os termos são representação natural desses elementos, pois expressam como os elementos podem ser obtidos para outros elementos pela aplicação de operações, recursivamente até elementos atômicos (embora as propriedades gerais nem sempre precisem ir até o fim). Termos são um tipo de sintaxe da estrutura da árvore que pode ser manipulada para expressar algoritmos (como na string). Mas a estrutura de termos do operando operador também permite associá-los a semântica em algum domínio abstrato por meio de homomorfismos.
Em vez de ter uma visão muito formal da wikipedia e de muitos textos sobre esse tópico, considere apenas os programas. É geralmente reconhecido que uma representação sintática conveniente de programas é o que é chamado de árvore de sintaxe abstrata (AST). Mas um AST é apenas um termo para representar um objeto de programa. A semântica denotacional é uma maneira de definir domínios abstratos e associar valores desses domínios a AST (ou subárvores AST) por meio de homomorfismos. Os programas no formato AST podem ser transformados ou otimizados aplicando regras de reescrita (não estou afirmando que todas as otimizações podem ou devem ser feitas dessa maneira).
A transformação de expressões algébricas para vários propósitos pode ser expressa por reescrita de termos. Por exemplo, a simplificação de algumas expressões. Vários tipos de cálculos também podem ser naturalmente expressos como reescritos de termos, como o cálculo de derivadas. Às vezes, a reescrita de termos também é usada para definir formas canônicas em álgebras, quando a mesma entidade semântica pode ter várias representações sintáticas.
Eu sugiro que você olhe o artigo da Wikipedia sobre este tópico .