Я не впевнений, що це принесе вам більше, ніж ви вже знаєте. Але тоді я можу не зрозуміти причин, які змушують замислитися над переписуванням терміна. Це допомагає.
Як ви можете знати, граматики - це системи переписування рядків. На вершині ієрархії Хомського ви маєте граматики типу 0, які визначають рекурсивно перелічені (RE) відповіді і мають обчислювальну потужність машин Тьюрінга.
Отже, це говорить про те, що системи перезапису взагалі мають багато спільного з алгоритмами вираження.
Проблема з рядками в цілому полягає в тому, що немає очевидного способу приєднання до них семантики. Це свого роду аморфне переписування.
Що зазвичай цікавить людей, це вираження алгоритмів у конкретних областях, які мають структуру та властивості. Такі домени часто визначаються від елементарних (атомних) сутностей і закриваються різними операціями, можливо, посилаються на співвідношення еквівалентності тощо. Їх часто називають алгебрами.
Ці домени часто абстрактні. Але обчислення їх елементів можна виразити лише на конкретних уявленнях. Терміни - це природна репрезентація цих елементів, оскільки вони виражають, як елементи можна отримати для інших елементів шляхом застосування операцій, рекурсивно розташованих до атомних елементів (хоча загальні властивості не завжди повинні йти зовсім вниз). Терміни - це свого роду синтаксис структури дерева, яким можна керувати для вираження алгоритмів (як для рядка). Але структура операндів операторів термінів також дозволяє асоціювати їх семантику в деякій абстрактній області за допомогою гомоморфізмів.
Замість того, щоб сприймати дуже формальний погляд на вікіпедію та багато текстів на цю тему, просто розгляньте програми. Зазвичай визнається, що зручним синтаксичним поданням програм є те, що називається абстрактним синтаксичним деревом (AST). Але AST - це лише термін, який представляє об’єкт програми. Денотаційна семантика - це спосіб визначення абстрактних доменів та асоціації значень цих доменів з AST (або AST-підтрубками) за допомогою гомоморфізмів. Програми у формі AST можна перетворити або оптимізувати, застосувавши правила перезапису (я не запевняю, що всі оптимізації можна чи потрібно робити так).
Перетворення алгебраїчних виразів для різних цілей може бути виражене переписанням терміна. Наприклад, спрощення деяких виразів. Різні типи обчислень також можна природно виразити як переписування термінів, наприклад, обчислення похідних. Переписування термінів також іноді використовується для визначення канонічних форм в алгебрах, коли одне і те ж смислове утворення може мати кілька синтаксичних уявлень.
Я пропоную вам ознайомитися зі статтею вікіпедії на цю тему .