RUS  ENG
Полная версия
ЖУРНАЛЫ // Моделирование и анализ информационных систем // Архив

Модел. и анализ информ. систем, 2021, том 28, номер 4, страницы 414–433 (Mi mais760)

Эта публикация цитируется в 1 статье

Theory of computing

A recursive inclusion checker for recursively defined subtypes

[Рекурсивная проверка включения для рекурсивно определенных подтипов]

H. de Nivelle

Nazarbayev University

Аннотация: Мы представляем табличную процедуру, которая проверяет логические отношения между рекурсивно определенными подтипами рекурсивно определенных типов, и применяем эту процедуру к проблеме разрешения неоднозначных имен в языке программирования. Эта работа является частью проекта по разработке нового языка программирования, подходящего для эффективной реализации логики. Логические формулы представляют собой древовидные структуры со множеством конструкторов, имеющих различные свойства и типы аргументов. Алгоритмы, использующие эти структуры, должны выполнять анализ вариантов для конструкторов и получать доступ к поддеревьям, тип и существование которых зависят от используемого конструктора. Во многих языках программирования анализ прецедентов обрабатывается путем сопоставления, но мы хотим использовать другой подход, основанный на рекурсивно определенных подтипах. Вместо сопоставления дерева с различными конструкторами мы будем классифицировать его с помощью набора непересекающихся подтипов. Подтипы являются более общими, чем структурные формы, основанные на конструкторах, мы ожидаем, что они могут быть реализованы более эффективно и, кроме того, могут использоваться при статической проверке типов. Это позволяет использовать рекурсивно определенные подтипы в качестве предварительных условий или постусловий функций. Мы определяем типы и подтипы (которые мы будем называть прилагательными), определяем их семантику и даем проверку включения прилагательных на основе таблиц. Мы показываем, как использовать эту проверку включения для разрешения неоднозначных ссылок на поля в объявлениях прилагательных. Та же процедура может быть использована для разрешения неоднозначных вызовов функций.

Ключевые слова: проектирование языков программирования, системы типов, доказательство теорем, построение компилятора.

УДК: 510.57

MSC: 68Q99,03B70

Поступила в редакцию: 15.12.2021
Исправленный вариант: 01.12.2021
Принята в печать: 08.12.2021

Язык публикации: английский

DOI: 10.18255/1818-1015-2021-4-414-433



© МИАН, 2024