Переписывание


Переписывание — широкий спектр техник, методов и теоретических результатов, связанных с процедурами последовательной замены частей формул или термов формального языка по заданной схеме — системе переписывающих правил. В наиболее общей форме речь идёт о совокупности некоторого набора объектов и правил — отношений между этими объектами, которые указывают как преобразовать этот набор.

Переписывание может быть недетерминированным. Например, система переписывающих правил может включать в себя правило, которое может быть применено к одному и тому же терму несколькими разными способами, но не содержать, при этом, указания на то, какой конкретно способ нужно применить в том или ином случае. Если система переписывания, всё же, оформлена в качестве однозначно понимаемого алгоритма, она может рассматриваться как компьютерная программа. На техниках переписывания основан ряд систем интерактивного доказательства теорем[1] и декларативных языков программирования[2][3].

Основные свойства систем переписывания можно сформулировать, не прибегая к конкретной реализации их в виде операций над термами. Для этого часто используется понятие Абстрактной Системы Редукций или ARS (от англ. Abstract Reduction Systems). ARS состоит из некоторого множества A и набора бинарных отношений на нём, которые называются редукциями. Говорят, что a редуцируется или переписывается в b в один шаг относительно данной ARS, если пара (a,b) принадлежит некоторому . Важнейшими свойствами редукционных систем являются:

Очевидно, конфлюентность влечёт слабую конфлюенцию, а остановочность, соответственно, слабую остановочность. Однако, конфлюентность и остановочность между собой не связаны. Например, система, состоящая из одного правила a•b → b•a конфлюентна, но не остановочна. Система, состоящая из двух правил a → b и a → c остановочна, но не конфлюентна, а все три правила вместе образуют систему, которая и не остановочна и не конфлюентна.