Non sono sicuro che questo ti porterà più di quello che già sai. Ma poi, potrei non capire i motivi che ti fanno meravigliare della riscrittura dei termini. Aiuta.
Come forse saprai, le grammatiche sono sistemi di riscrittura delle stringhe. Nella parte superiore della gerarchia di Chomsky, hai grammatiche di tipo 0, che definiscono angolazioni ricorsivamente enumerabili (RE) e hanno il potere computazionale delle macchine di Turing.
Questo ti dice che i sistemi di riscrittura in generale hanno molto a che fare con l'espressione degli algoritmi.
Il problema con le stringhe in generale è che non esiste un modo ovvio per collegare loro la semantica. È una specie di riscrittura amorfa.
Ciò a cui le persone sono solitamente interessate è esprimere algoritmi in domini specifici che hanno struttura e proprietà. Tali domini sono spesso definiti da entità elementari (atomiche) e chiusi da varie operazioni, eventualmente quotate da relazioni di equivalenza e così via. Questi sono spesso chiamati algebre.
Questi domini sono spesso astratti. Ma i calcoli sui loro elementi possono essere espressi solo su rappresentazioni concrete. I termini sono una rappresentazione naturale di questi elementi poiché esprimono il modo in cui gli elementi possono essere ottenuti per altri elementi mediante l'applicazione di operazioni, ricorsivamente fino a elementi atomici (sebbene le proprietà generali non debbano sempre andare fino in fondo). I termini sono una sorta di sintassi della struttura ad albero che può essere manipolata per esprimere algoritmi (come per la stringa). Ma la struttura dei termini dell'operando dell'operatore consente anche di associare ad essi la semantica in qualche dominio astratto per mezzo di omomorfismi.
Invece di prendere la visione molto formale di Wikipedia e di molti testi su questo argomento, basta considerare i programmi. Di solito si riconosce che una comoda rappresentazione sintattica dei programmi è quella che viene chiamata Abstract Syntax Tree (AST). Ma un AST è solo un termine per rappresentare un oggetto programma. La semantica denotazionale è un modo per definire domini astratti e associare valori da questi domini a AST (o sottotitoli AST) mediante omomorfismi. I programmi in formato AST possono essere trasformati o ottimizzati applicando le regole di riscrittura (non sto affermando che tutte le ottimizzazioni possano o debbano essere fatte in questo modo).
La trasformazione di espressioni algebriche per vari scopi può essere espressa con la riscrittura dei termini. Ad esempio, la semplificazione di alcune espressioni. Vari tipi di calcoli possono anche essere espressi naturalmente come riscrittura dei termini, come il calcolo dei derivati. La riscrittura dei termini viene anche talvolta usata per definire le forme canoniche nelle algebre, quando la stessa entità semantica può avere diverse rappresentazioni sintattiche.
Ti suggerisco di guardare l' articolo di Wikipedia su questo argomento .