Введение

Система Maude — это реализация логики переписывания. Она схожа в общем подходе с реализацией OBJ3 уравнительной логики, разработанной Джозефом Гогеном, но основана на логике переписывания, а не на упорядоченной уравнительной логике, и делает сильный акцент на мощном метапрограммировании, основанном на рефлексии. Maude является свободным программным обеспечением, и в сети доступны обучающие материалы. Изначально она была разработана в SRI International, но сейчас разрабатывается совместными усилиями различных исследователей.

Введение

Maude решает задачи, отличные от тех, что решают обычные императивные языки, такие как C, Java или Perl. Это формальный инструмент для рассуждений, который может помочь нам проверить, соответствует ли система ожидаемому поведению, и указать причину несоответствия, если оно есть. Иными словами, Maude позволяет нам формально определить смысл понятий в очень абстрактной форме (не заботясь о том, как структура представлена внутри и т.д.), но при этом описывать, что считается равным в рамках нашей теории (уравнения) и какие изменения состояний возможны (правила переписывания). Модули Maude (теории переписывания) состоят из языка терминов, а также наборов уравнений и правил переписывания. Термины в теории переписывания строятся с использованием операторов (функций, принимающих ноль или более аргументов определенного типа и возвращающих термин определенного типа). Операторы, принимающие ноль аргументов, считаются константами, и язык терминов строится на основе этих простых конструкций. Maude позволяет пользователю указывать, являются ли операторы инфиксными, постфиксными или префиксными (по умолчанию), используя подчеркивания в качестве заполнителей для входных терминов. Уравнения восстановления предполагаются коллинеарными и завершающимися. Правила переписывания не имеют этого ограничения. При "выполнении" Maude переписывает термины в соответствии с уравнениями и правилами переписывания. Maude переписывает термины в соответствии с уравнениями, когда находится соответствие между переписываемым (или восстанавливаемым) закрытым термином и левой частью уравнения из нашего набора уравнений. Соответствие в данном контексте – это подстановка переменных в левой части уравнения, в результате которой она становится идентичной переписываемому/восстанавливаемому термину. Уравнения и правила переписывания могут быть также условными, то есть для их применения к термину необходимо выполнение определенных критериев (помимо простого соответствия левой части правила переписывания). Правила применяются системой Maude в "случайном" порядке, что означает, что нельзя гарантировать, какое правило будет применено раньше другого и так далее. Если к термину может быть применено уравнение, оно всегда будет применено раньше любого правила переписывания. Встроенный механизм поиска в Maude может находить нежелательные состояния и доказывать, что они недостижимы. Maude предоставляет возможность контролировать, какие правила следует применять на каждом шаге, используя метапрограммирование благодаря рефлексивным свойствам логики переписывания.

Использование

Мод использовался для проверки безопасности протоколов и критически важного кода. Система Maude выявила уязвимости в криптографических протоколах, просто описывая возможности системы и обнаруживая нежелательные ситуации (состояния или термы, которые не должны возникать). Таким образом, можно показать, что протокол содержит ошибки, не связанные с ошибками программирования, а с ситуациями, которые сложно предсказать, просто следуя по "счастливому пути", как это обычно делают разработчики.