HiLog
HiLog программирования — это логика с синтаксисом высшего порядка, которая позволяет произвольным терминам появляться в позициях предикатов и функций. [1] Однако модельная теория HiLog имеет первый порядок. Хотя синтаксически HiLog строго расширяет логику первого порядка , HiLog может быть встроен в эту логику.
HiLog был впервые описан в 1989 году. [2] Позднее оно было расширено в направлении многосортной логики . [3]
Система XSB анализирует синтаксис HiLog, но интеграция HiLog в XSB является лишь частичной. В частности, HiLog не интегрирован с модульной системой XSB. Полная реализация HiLog доступна в системе Флора-2 .
Было показано, что HiLog можно внедрить в логику первого порядка посредством довольно простого преобразования. [1] Например, p(X)(Y,Z(V)(W))
встраивается как следующий член первого порядка: apply(p(X),Y,apply(apply(Z,V),W))
. [1]
Структура для логических диалектов (RIF-FLD) формата обмена правилами (RIF) во многом основана на идеях, лежащих в основе HiLog и F-logic . [4]
Примеры
[ редактировать ]Во всех приведенных ниже примерах символы с заглавной буквы обозначают переменные, а запятая обозначает логическое соединение , как и в большинстве языков логического программирования . Первый и второй примеры показывают, что переменные могут появляться в позициях предикатов. Предикаты могут быть даже сложными терминами, например closure(P)
или maplist(F)
ниже. Третий пример показывает, что переменные также могут появляться вместо атомарных формул, а четвертый пример иллюстрирует использование переменных вместо функциональных символов. В первом примере определяется общий оператор транзитивного замыкания , который можно применять к произвольному двоичному предикату. Второй пример аналогичен. Он определяет LISP -подобный оператор отображения, который применяется к произвольному двоичному предикату. Третий пример показывает, что Пролога метапредикат call/1
могут быть выражены в HiLog естественным образом и без использования экстралогических признаков. В последнем примере определяется предикат, который обходит произвольные двоичные деревья, представленные в виде термов первого порядка .
closure(P)(X,Y) <- P(X,Y).
closure(P)(X,Y) <- P(X,Z), closure(P)(Z,Y).
maplist(F)([],[]).
maplist(F)([X|R],[Y|Z]) <- F(X,Y), maplist(F)(R,Z).
call(X) <- X.
traverse(X(L,R)) <- traverse(L), traverse(R).
Ссылки
[ редактировать ]- ^ Jump up to: а б с Чен, Вэйдун; Кифер, Майкл; Уоррен, Дэвид С. (февраль 1993 г.). «HiLog: основа логического программирования высшего порядка» . Журнал логического программирования . 15 (3): 187–230. дои : 10.1016/0743-1066(93)90039-J .
- ^ Чен, Вэйдун; Кифер, Майкл; Уоррен, Дэвид С. (1989). «HiLog: семантика первого порядка для конструкций логического программирования высшего порядка». Логическое программирование: Материалы Североамериканской конференции, 1989 . МТИ Пресс. ISBN 0262620642 . OCLC 1153667751 .
- ^ Чен, Вэйдун; Кифер, Майкл (1995). «Сортированный HiLog: сортировка на языках логических данных более высокого порядка». Ин Готтлоб, Георг; Варди, Моше Ю. (ред.). Теория баз данных — ICDT '95: 5-я Международная конференция, Прага, Чехия, 11–13 января 1995 г.: материалы . Конспекты лекций по информатике. Том. 893. Спрингер. стр. 252–265. дои : 10.1007/3-540-58907-4_20 . ISBN 9780387589077 . ОСЛК 31740400 .
- ^ Кифер, Майкл (2008). «Формат обмена правилами: основа». В Кальванезе, Диего; Лаузен, Георг (ред.). Веб-рассуждения и системы правил: вторая международная конференция, RR 2008, Карлсруэ, Германия, 31 октября – 1 ноября 2008 г.: материалы . Конспекты лекций по информатике. Том. 5341. Спрингер. стр. 1–11. дои : 10.1007/978-3-540-88737-9_1 . ISBN 9783540887362 . OCLC 262884460 .
Дальнейшее чтение
[ редактировать ]- Росс, Кеннет А. (январь 1994 г.). «Об отрицании в HiLog». Журнал логического программирования . 18 (1): 27–53. дои : 10.1016/0743-1066(94)90040-X .
- Брейн, Йос; Хейманс, Стейн (январь 2008 г.). «О соотношении онтологий, основанных на логике описания, и онтологий, основанных на F-логике» . Фундамента информатики . 82 (3): 213–236.