SWI-Prolog

Материал из GedeminWiki
Перейти к: навигация, поиск

Содержание

Система логического программирования на встроенном SWI‑Prolog

Файлы и ресурсы

Расположение файлов см. Список файлов дистрибутива платформы Гедымин

Системные файлы DLL

Имя Описание Примечание
libswipl.dll библиотека ядра The Prolog kernel
pthreadGC2.dll библиотека потоков выполнения POSIX thread runtime library (32-bits)
libgmp-10.dll библиотека арифметики повышенной точности The GNU Multiple Precision Arithmetic Library

Файлы DLL для расширения системы (плагины)

Имя Описание Примечание
memfile.dll библиотека временных файлов в памяти Memory files
readutil.dll библиотека утилиты быстрого чтения Reading lines, streams and files

Ресурсные архивы

Имя Описание Примечание
gd_pl_state.dat файл сохраненного состояния Generating Runtime Applications

Для разработчиков

Ссылка на ресурс Описание
gd_pl.pl генерация файла сохраненного состояния
gd_pl_state папка с файлами для сохраненного состояния, не входящими в стандартную поставку SWI-Prolog

PL-классы

Под термином PL-класс понимается класс, предназначенный на для взаимодействия со встроенным SWI‑Prolog.
Соответственно, экземпляр PL-класса будет называться PL‑объект.

TgsPLClient

Класс клиента SWI-Prolog.
Иерархия
TObject
Методы
Initialise(AParams: String): Boolean
Инициализация SWI-Prolog.
IsInitialised: Boolean
Проверка инициализации SWI-Prolog.
Call(APredicateName: String; AParams: TgsPLTermv): Boolean
Краткая форма для OpenQuery, NextSolution, Cut объекта TgsPLQuery, порождающая одно решение.
Call2(AGoal: String): Boolean
Выполнение терма (аналог предиката once/1).
Compound(AGoal: Unsigned short; AFunctor: String; ATermv: TgsPLTermv)
Компоновка терма из функтора (имени терма) и аргументов (вектора термов).
LoadScript(AScriptID: Integer): Boolean
Загрузка Пролог-скрипта по идентификатору.
LoadScriptByName(AScriptName: String): Boolean
Загрузка Пролог-скрипта по имени.
ExtractData(ADataSet: TClientDataSet; APredicateName: String; ATermv: TgsPLTermv)
Извлечение данных Пролог-запроса в клиентский набор данных.
MakePredicatesOfSQLSelect(ASQL: String; ATr: TIBTransaction; APredicateName: String; AFileName: String; AnAppend: Boolean): Integer
Формирование Пролог-фактов на основе SQL-запроса.
MakePredicatesOfDataSet(ADataSet: TDataSet; AFieldList: String; APredicateName: String; AFileName: String; AnAppend: Boolean): Integer
Формирование Пролог-фактов на основе клиентского набора данных.
SavePredicatesToFile(APredicateName: String; ATermv: TgsPLTermv; AFileName: String)
Выгрузка данных Пролог-запроса в файл.
Свойства
Debug: Boolean
Режим отладки.

TgsPLQuery

Класс запроса SWI-Prolog.
Иерархия
TObject
Методы
Close
Закрытие Пролог-запроса.
Cut
Отсечение следующих решений Пролог-запроса (выполнения предиката).
NextSolution
Поиск следующего решения Пролог-запроса (выполнения предиката).
OpenQuery
Открытие Пролог-запроса и поиск первого решения (выполнение предиката).
Свойства
Eof: Boolean
Признак поиска решения Пролог-запроса (выполнения предиката).
PredicateName: String
Имя предиката (функтор).
Termv: TgsPLTermv
Аргументы предиката (вектор термов).

TgsPLTermv

Класс вектора термов SWI‑Prolog.
Иерархия
TObject
Методы
PutAtom(Idx: Unsigned short; AValue: String)
Передача по ссылке в терм данных типа Atom.
PutDate(Idx: Unsigned short; AValue: Date)
Передача по ссылке в терм данных типа Date.
PutDateTime(Idx: Unsigned short; AValue: Date)
Передача по ссылке в терм данных типа DateTime.
PutFloat(Idx: Unsigned short; AValue: Real)
Передача по ссылке в терм данных типа Float.
PutInt64(Idx: Unsigned short; AValue: Int64)
Передача по ссылке в терм данных типа Int64.
PutInteger(Idx: Unsigned short; AValue: Integer)
Передача по ссылке в терм данных типа Integer.
PutString(Idx: Unsigned short; AValue: String)
Передача по ссылке в терм данных типа String.
PutVariable(Idx: Unsigned short)
Передача по ссылке в терм данных типа Variable (сброс ссылки в изначальное состояние).
ReadAtom(Idx: Unsigned short): String
Считывание по ссылке из терма данных типа Atom.
ReadDate(Idx: Unsigned short): Date
Считывание по ссылке из терма данных типа Date.
ReadDateTime(Idx: Unsigned short): Date
Считывание по ссылке из терма данных типа DateTime.
ReadFloat(Idx: Unsigned short): Real
Считывание по ссылке из терма данных типа Float.
ReadInt64(Idx: Unsigned short): Int64
Считывание по ссылке из терма данных типа Int64.
ReadInteger(Idx: Unsigned short): Integer
Считывание по ссылке из терма данных типа Integer.
ReadString(Idx: Unsigned short): String
Считывание по ссылке из терма данных типа String.
Reset
Сброс вектора термов (выполнение метода PutVariable для всего вектора термов).
ToString(Idx: Unsigned short): String
Считывание по ссылке терма и преобразование к строке.
ToTrimQuotesString(Idx: Unsigned short): String
Считывание по ссылке терма и преобразование к строке без обрамляющих кавычек.
Свойства
DataType(Idx: Unsigned short): Integer
Тип данных.
Size: Unsigned short
Размер вектора термов.
Term(Idx: Unsigned short): Unsigned short
Ссылка на терм.

Пролог-скрипты

Pl_Examples_Script.png

Примеры использования PL-объектов

Pl_Examples.png

Учебный пример. Игра крестики-нолики

Xo_game12.png

Средства разработки

SWI-Prolog Editor

SWI-Prolog_Editor.png

SWI-Prolog graphical tracer

Swi_graphical_tracer.png

Литература по языку Пролог

  1. У.Клоксин, К.Меллиш. Программирование на языке Пролог
  2. И.Братко. Программирование на языке Пролог для искусственного интеллекта
  3. И.Братко. Алгоритмы искусственного интеллекта на языке PROLOG
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты