Je ne suis pas sûr que cela vous apportera plus que vous ne le savez déjà. Mais alors, je peux ne pas comprendre les raisons qui vous font vous interroger sur la réécriture des termes. Ça aide.
Comme vous le savez peut-être, les grammaires sont des systèmes de réécriture de chaînes. Au sommet de la hiérarchie Chomsky, vous avez des grammaires de type 0, qui définissent des angulations récursivement énumérables (RE), et ont la puissance de calcul des machines Turing.
Cela vous indique donc que les systèmes de réécriture en général ont beaucoup à voir avec l'expression d'algorithmes.
Le problème avec les chaînes en général est qu'il n'y a aucun moyen évident de leur attacher la sémantique. C'est une sorte de réécriture amorphe.
Ce qui intéresse généralement les gens, c'est d'exprimer des algorithmes dans des domaines spécifiques qui ont une structure et des propriétés. Ces domaines sont souvent définis à partir d'entités élémentaires (atomiques) et fermés par diverses opérations, éventuellement cotées par des relations d'équivalence, etc. Celles-ci sont souvent appelées algèbres.
Ces domaines sont souvent abstraits. Mais les calculs sur leurs éléments ne peuvent s'exprimer que sur des représentations concrètes. Les termes sont une représentation naturelle de ces éléments car ils expriment comment les éléments peuvent être obtenus pour d'autres éléments par l'application d'opérations, récursivement jusqu'aux éléments atomiques (bien que les propriétés générales n'aient pas toujours besoin de descendre jusqu'au bout). Les termes sont une sorte de syntaxe de structure arborescente qui peut être manipulée pour exprimer des algorithmes (comme pour une chaîne). Mais la structure d'opérande des termes permet également de leur associer une sémantique dans un domaine abstrait au moyen d'homomorphismes.
Plutôt que de prendre la vue très formelle de wikipedia et de nombreux textes sur ce sujet, il suffit de considérer les programmes. Il est généralement reconnu qu'une représentation syntaxique pratique des programmes est ce qu'on appelle l'arbre de syntaxe abstraite (AST). Mais un AST n'est qu'un terme pour représenter un objet programme. La sémantique dénotationnelle est un moyen de définir des domaines abstraits et d'associer des valeurs de ces domaines à AST (ou sous-arbres AST) au moyen d'homomorphismes. Les programmes sous forme AST peuvent être transformés ou optimisés en appliquant des règles de réécriture (je n'affirme pas que toutes les optimisations peuvent ou doivent être faites de cette façon).
La transformation d'expressions algébriques à diverses fins peut être exprimée par la réécriture des termes. Par exemple, la simplification de certaines expressions. Différents types de calculs peuvent également être naturellement exprimés sous forme de réécriture de termes, tels que le calcul de dérivés. La réécriture de termes est également parfois utilisée pour définir des formes canoniques dans des algèbres, quand la même entité sémantique peut avoir plusieurs représentations syntaxiques.
Je vous suggère de consulter l' article de wikipedia sur ce sujet .