В информатике алгебраическая семантика — это форма аксиоматической семантики, основанная на алгебраических законах для описания и рассуждения о спецификациях программ формальным образом . [1] [2] [3] [4]
Синтаксис
Синтаксис алгебраической спецификации формулируется в два этапа: (1) определение формальной сигнатуры типов данных и символов операций и (2) интерпретация сигнатуры через наборы и функции .
Определение подписи
Сигнатура алгебраической спецификации определяет ее формальный синтаксис. Слово «сигнатура» используется подобно понятию « ключевая сигнатура » в музыкальной нотации .
Сигнатура состоит из набора типов данных , известных как сортировки , вместе с семейством наборов, каждый из которых содержит символы операций (или просто символы), которые связывают сортировки. Мы используем для обозначения набора символов операций, связывающих сортировки с сортировкой .
Например, для сигнатуры целочисленных стеков мы определяем два сорта, а именно и , а также следующее семейство символов операций:
где обозначает пустую строку .
Теоретико-множественная интерпретация сигнатуры
Алгебра интерпретирует символы сортировок и операций как множества и функции . Каждая сортировка интерпретируется как множество , которое называется носителем сортировки , а каждый символ в сопоставляется функции , которая называется операцией .
Что касается сигнатуры целых стеков, мы интерпретируем сортировку как набор целых чисел, а сортировку как набор целых стеков. Мы далее интерпретируем семейство символов операций как следующие функции:
Семантика
Семантика относится к значению или поведению . Алгебраическая спецификация обеспечивает как значение, так и поведение рассматриваемого объекта .
Эквациональные аксиомы
Семантика алгебраической спецификации определяется аксиомами в форме условных уравнений . [1]
Относительно сигнатуры целочисленных стеков имеем следующие аксиомы:
- Для любого и ,
- где « » означает «не найдено».
Математическая семантика
Математическая семантика (также известная как денотационная семантика ) [5] спецификации относится к ее математическому значению.
Математическая семантика алгебраической спецификации — это класс всех алгебр, которые удовлетворяют спецификации. В частности, классический подход Гогуэна и др. [1] [2] берет исходную алгебру ( единственную с точностью до изоморфизма ) как «наиболее представительную» модель алгебраической спецификации.
Операционная семантика
Операционная семантика [6] спецификации означает, как ее интерпретировать как последовательность вычислительных шагов.
Мы определяем базовый термин как алгебраическое выражение без переменных . Операционная семантика алгебраической спецификации относится к тому, как базовые термины могут быть преобразованы с использованием заданных эквациональных аксиом в качестве правил переписывания слева направо , пока такие термины не достигнут своих нормальных форм , где дальнейшее переписывание невозможно.
Рассмотрим аксиомы для целочисленных стеков. Пусть " " обозначает "переписывает в".
Каноническое свойство
Алгебраическая спецификация называется конфлюэнтной (также известной как Черч-Россер ), если перезапись любого основного термина приводит к той же нормальной форме. Она называется завершающейся, если перезапись любого основного термина приведет к нормальной форме после конечного числа шагов. Алгебраическая спецификация называется канонической (также известной как сходящейся ), если она является как конфлюэнтной, так и завершающейся. Другими словами, она является канонической, если перезапись любого основного термина приводит к уникальной нормальной форме после конечного числа шагов.
При любой канонической алгебраической спецификации математическая семантика согласуется с операционной семантикой. [7]
В результате канонические алгебраические спецификации широко применялись для решения проблем корректности программ. Например, многочисленные исследователи применяли такие спецификации для проверки наблюдательной эквивалентности объектов в объектно -ориентированном программировании . См. Chen and Tse [8] в качестве вторичного источника , который предоставляет исторический обзор выдающихся исследований с 1981 по 2013 год.
Смотрите также
Ссылки
- ^ abc JA Goguen; JW Thatcher; EG Wagner; JB Wright (1977). «Начальная семантика алгебры и непрерывные алгебры». Журнал ACM . 24 (1): 68–95. doi : 10.1145/321992.321997 . S2CID 11060837.
- ^ ab JA Goguen ; JW Thatcher ; EG Wagner (1978). «Первоначальный алгебраический подход к спецификации, корректности и реализации абстрактных типов данных». В RT Yeh (ред.). Современные тенденции в методологии программирования, т. IV: Структурирование данных . Prentice Hall . стр. 80–149.
- ^ JA Goguen ; C. Kirchner; H. Kirchner; A. Megrelis; J. Meseguer (1988). "Введение в OBJ3". Труды первого семинара по системам условной перезаписи терминов . Конспект лекций по информатике. Том 308. Springer . С. 258–263. doi :10.1007/3-540-19242-5_22. ISBN 978-3-540-19242-8.
- ^ JA Goguen ; G. Malcolm (1996). Алгебраическая семантика императивных программ. MIT Press . ISBN 9780262071727.
- ^ Дэвид А. Шмидт (1986). Денотационная семантика: методология развития языка . William C. Brown Publishers. ISBN 9780205104505.
- ^ Гордон Д. Плоткин (1981). «Структурный подход к операционной семантике» (Технический отчет DAIMI FN-19). Кафедра компьютерных наук, Орхусский университет .
- ^ S. Lucas; J. Meseguer (2014). "Сильное и слабое операционное завершение упорядоченно-сортированных переписывающих теорий". В S. Escobar (ред.). Переписывание логики и ее приложения. Lecture Notes in Computer Science. Vol. 8663. Cham: Springer . pp. 178–194. doi :10.1007/978-3-319-12904-4_10. ISBN 978-3-319-12903-7.
- ^ HY Chen; TH Tse (2013). «Равенство равным и неравным: пересмотр критериев эквивалентности и неэквивалентности в тестировании объектно-ориентированного программного обеспечения на уровне классов». IEEE Transactions on Software Engineering . 39 (11): 1549–1563. doi : 10.1109/TSE.2013.33. hdl : 10722/187124 . S2CID 8694513.