Файл: Предметная область или Универсум совокупность всех предметов, которые она изучает. Литерал.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 107
Скачиваний: 2
:
если правило P отсутствует в текущей программе, то считается, что P ни истинно, ни ложно.
запрос может обладать одним из трех допустимых истинностных значений: истина, ложь или неизвестно. Если запрос признан неизвестным, то программа может предпринять какие-то особые действия. По умолчанию интерпретатор языка Пролог руководствуется предположением о замкнутости мира. Поэтому если требуется, чтобы поведение программы соответствовало предположению об открытости мира, то это нужно выражать в
явном виде при составлении программы.
Программирование второго порядка
Программирование на Прологе расширяется введением методов, отсутствующих в модели логического программирования.
Эти методы основаны на свойствах языка, выходящих за рамки логики первого порядка. Они названы методами второго порядка,поскольку речь здесь идет о множествах и их свойствах, а не об отдельных элементах.
Предикат findall(+Var, +Goal, -Bag) создает список всех конкретизаций переменной Var, полученных при бэктрекинге (перебор с возвратом) при выполнении цели Goal, и
унифицирует результат с Bag. Bag — пустой список, когда Goal не имеет решения.
Предикат apply(+Term, +List) присоединяет элементы списка List к аргументам терма Term и вызывает полученный терм в качестве цели. Например, apply(plus(1),[2,X]) вызывает plus(1, 2, X)
Предикат checklist(+Pred, +List) проверяет все ли элементы списка List удовлетворяют предикату Pred.
Операции с базой данных
База данных, в соответствии с реляционной моделью баз данных, представляет собой спецификацию набора отношений.
Любая Пролог-программа может рассматриваться как подобная база данных; в ней спецификация отношений частично является явной (факты), а частично неявной (правила).
Некоторые встроенные предикаты позволяют модифицировать эту базу данных во время выполнения программы.
Предикат assert(+Term) добавляет факт или правило в программу (в базу данных в оперативной памяти). Term добавляется как последний факт или правило соответствующего предиката.
При выполнении предиката retract(+Term), когда терм Term унифицируется с первым подходящим фактом или правилом в базе данных, факт или правило удаляется из базы данных.
Предикат retractall(+Term) удаляет все факты или правила в базе данных, которые унифицируются с Term.
Те предикаты, которые будут добавляться или изменяться с помощью предикатов assert и retract, необходимо объявить в программе как динамические. dynamic
Предикаты assertaи assertzпредоставляют возможность управлять позицией вставки:asserta добавляет в начало базы данных, а assertz (так же как и assert) — в конец.