Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метода пролог.doc
Скачиваний:
21
Добавлен:
11.06.2015
Размер:
418.82 Кб
Скачать

Литература

  1. Братко И. Алгоритмы искусственного интеллекта на языке PROLOG. 3-е изд. / Пер. с англ. – М.: Издательский дом «Вильямс», 2004. – 640 с.

  2. Братко И. Программирование на языке Пролог для искусственного интеллекта. / Пер. с англ. – М.: Мир, 1990. – 560 с.

  3. Шрайнер П.А. Основы программирования на языке Пролог: курс лекций: учебное пособие – М.: Интернет-университет информационных технологий, 2005. – 176 с.

  4. Малпас Дж. Реляционный язык Пролог и его применение. / Пер. с англ. / Под ред. В.Н. Соболева. – М.: Наука, 1990. – 464 с.

  5. Метакидес Г., Нероуд А. Принципы логики и логическое программирование. / Пер. с англ. под ред. к.ф.м.н В.А. Захарова и акад. В.А. Садовничего. – М.: Изд-во «Факториал», 1998. – 288 с.

  6. Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. / Пер. с англ. – М.: Мир, 1990. – 235 с.

  7. Стобо Д.Ж. Язык программирования Пролог. / Пер. с англ. – М.: Радио и связь, 1993. – 368 с.

  8. Хоггер К. Введение в логическое программирование. / Пер. с англ. – М.: Мир, 1988. – 348 с.

  9. The Arity/Prolog compiler and interpreter. Version 6.1. Arity Corporation Damonmill Square Concord, Massachusetts 01742, 1992, Arity Corporation. – 444 с.

Приложение А

Подготовка к работе

Версия языка Пролог Arity/Prolog32 распространяется разработчиком без специализированной программы для установки программного обеспечения. Это в большинстве случаев не вызывает каких-либо трудностей. Однако имеет смысл описать короткую процедуру по настройке этой версии языка в ОСWindowsXPдля обеспечения удобной работы с интерпретатором. Большая часть инструкции представляет собой стандартный набор действий по настройке консольного приложения для запуска в средеWindowsXP.

Шаг 1.

Разархивировать штатными средствами операционной системы архив с дистрибутивом в выбранную Вами папку. Например, это может быть папка C:\ProgramFiles\Arity32.

Шаг 2.

К системной переменной PATHдобавить путь к исполняемым файлам ПрологаC:\ProgramFiles\Arity32\bin.

Шаг 3.

Для ускорения доступа к интерпретатору можно создать ярлык на рабочем столе (только для файла api.exe).

Шаг 4.

Настройка ярлыка.

В контекстном меню для ярлыка выбирается пункт «Свойства» и далее в появившемся окне диалога производятся следующие действия:

  • на закладке «Шрифт» выбирается шрифт для использования – LucidaConsole(этот выбор обеспечивает корректное отображение символов русского языка и псевдографики);

  • на той же закладке выбирается удобный размер шрифта (исходя из индивидуальных предпочтений);

  • на закладке «Расположение» следует установить ширину в 80 (символов), а высоту в 25 (строк) для буфера и размера экрана.

Приложение Б

Предикаты Arity/Prolog32

A

аbolish(+Name/Arity)

Удаляет из базы данных все фразы с заданными именем Nameи арностьюArity.

abort(+Code)

Производит переход к предикату restart. Если не имеется предикатаrestart, то прекращается выполнение откомпилированной программы, а для интерпретируемой программы осуществляется возврат в интерпретатор.

arg(+N,+Term,-Value)

Унифицирует ValueсN-ым аргументом термаTerm.

arg0(+N,+Term,-Value)

Унифицирует ValueсN+1-ым аргументом термаTerm.

argrep(+Term,+N,+Arg,-Newterm)

Заменяет N-ый аргумент в терме наArgи унифицирует результат сNewterm.

assert(+Clause)

Добавляет фразу к предикату. Эквивалентен assertz.

assert(+Clause,+N)

Добавляет фразу Clauseк предикату в качествеN-ой фразы.

asserta(+Clause)

Добавляет фразу Clauseк предикату в качестве первой фразы.

assertz(+Clause)

Добавляет фразу Clauseк предикату в качестве последней фразы.

atom(?X)

Согласуется, если Xявляется атомом.

atom_string(?Atom,?String)

Преобразует атом в строку или строку в атом. Этот предикат необходим только для совместимости с предыдущими версиями Arity/Prolog. ВArity/Prolog32 строки – это то же самое, что и атомы и, как следствие, этот предикат определяется следующим образом:atom_string(X, X) :- string(X).

atomic(?X)

Согласуется, если Xявляется атомарным (простым) термом.

B

bagof(?Term,+Spec,-Bag)

Specявляется либо цельюGoal, либо термом видаVar^Spec, который указывает на то, чтоVar– это свободная переменная.Bagконкретизируется неупорядоченным списком экземпляровTerm, каждый из которых является решением целиGoal.

betweenb(+BTree,?Key1,?Key2,?Relation1,?Relation2, ?Key,?Term)

Возвращает термы из b-дерева, располагающиеся между Key1иKey2. АргументыRelation1иRelation2определяют необходимость осуществлять возврат крайних (предельных) ключей и могут иметь значения<,>, или=.

betweenkeysb(+BTree,?Key1,?Key2,?Key)

Возвращает термы из b-дерева, располагающиеся между Key1иKey2.

bit_count(+Int,-Count)

Возвращает количество Countбитов в целом числеInt, которые равны единице.

bit_lit(+Bit,+Int)

Согласуется, если бит с номером Bitравен 1 в целом числеInt. Биты нумеруются с последнего значащего бита, начиная с номера 0.

bit_unlit(+Bit,+Int)

Согласуется, если бит с номером Bitравен 0 в целом числеInt. Биты нумеруются с последнего значащего бита, начиная с номера 0.

break

Запускает рекурсивный цикл интерпретатора. При очередной рекурсии запрос будет иметь на один знак вопроса больше: ?-затем??-затем???-, и т.д. Вы можете выйти из рекурсивного цикла интерпретатора, используя комбинацию клавишCtrl-Z.

btree_count(+Btree,-/+Count)

Возвращает количество ключей Countв b-деревеBtree.

C

call(+P)

Обращается к интерпретируемой цели Pи согласуется, если согласуетсяP.

call(+A,+P)

Обращается к интерпретируемой цели Pи согласуется, если согласуетсяP, используя адресAструктуры, сформированный путем обращения кevalAddress/2.

case(+[A1 -> B1, A2 -> B2,...|C])

Выполняет B1, если согласуетсяA1, иначе выполняетB2, если согласуетсяA2, и т.д. Если не согласуется ничего, то выполняетC.

case(+[A1 -> B1, A2 -> B2,...])

Выполняет B1, если согласуетсяA1, иначе выполняетB2, если согласуетсяA2, и т.д. Если не согласуется ничего, то самcaseсогласуется.

chdir(?Path)

Изменяет или возвращает текущую директорию Path.

chmod(+Filename,?Attributes)

Изменяет или возвращает байт-атрибут AttributesфайлаFilename.

clause(+Head,-Body)

Унифицирует HeadиBodyс заголовком и телом фразы соответственно.

close(+Handle)

Закрывает файл, заданный идентификатором потока Handle.

cls

Очищает текущее окно и перемещает курсор в его верхний левый угол.

code_world(?Old,?New)

Унифицирует имя текущего кодового мира с Oldи затем изменяет его наNew.

command_string(-X)

Возвращает аргументы командной строки в X, включая произвольное количество пробелов между командой и первым аргументом. Формат этой строки зависит от операционной системы.

compare(-Comp,+T1,+T2)

compare(-Comp,+T1,+T2,+Case)

Сравнивает термы T1иT2в соответствии со стандартным порядком сравнения и унифицируетCompс результатом сравнения. Результатом сравнения является=,<, или>. АргументCaseможно использовать для придания сравнению контекстной чувствительности:0– наличие контекстной чувствительности;1– отсутствие таковой.

concat(+String1,+String2,-Result)

Соединяет две строки или атома и возвращает новую строку в Result. Может быть использован ASCII-код для строки, состоящей из одного символа.

concat(+[String1,String2,...], -Result)

Соединяет две или более строки или атома и возвращает новую строку в Result. Может быть использован ASCII-код для строки, состоящей из одного символа.

consult(+Filename)

Считывает фразы в базу данных из файла, добавляя их к любым уже находящимся в ней.

create(-Handle,+Filename)

Создает и открывает для записи новый файл и возвращает его идентификатор потока Handle. Если файлFilenameуже существует, то новый файл переписывает старый.

create_world(+World_name)

Создает новый мир с заданным именем.

ctr_dec(+Ctr,-X)

Уменьшает значение счетчика Ctrна 1 и возвращает его значениеXдо уменьшения.

ctr_inc(+Ctr,-X)

Увеличивает значение счетчика Ctrна 1 и возвращает его значениеXдо увеличения.

ctr_is(+Ctr,-X)

Возвращает текущее значение XсчетчикаCtr.

ctr_set(+Ctr,+X)

Устанавливает новое значение XсчетчикаCtr.

current_op(?Prec,?Assoc,?Op)

Возвращает через отказ от ответа определения операторов, имеющие силу на данный момент.

current_predicate(?Predicate)

Возвращает через отказ от ответа предикаты, содержащиеся в текущем кодовом мире. Аргумент Predicateможет не быть свободной переменной и в этом случае быть либо именем предиката, либо его именем и арностью в видеname/arity.

D

data_world(?Old,?New)

Унифицирует имя текущего мира данных с Oldи затем делает текущим миром данныхNew.

date(?date(Year,Month,Day))

Устанавливает системные часы к заданной дате или возвращает текущую дату.

date_day(+date(Year,Month,Day),-WeekDay)

Возвращает день недели заданной даты как целое число между 0 (воскресенье) и 6 (суббота).

dbPartition(-OldPartition,+NewPartition)

Возвращает и устанавливает сегмент базы данных, используемый по умолчанию.

dbsLen(+Term,-Len)

Возвращает длину в байтах строки, которая была бы создана с использованием term2dbs/2 илиterm2dbcs/4.

debug

debug(+File)

Включает отладчик, изначально переведя его в режим leep. Если задан аргументFile, тогда создается указанный файл и в него производится эхопечать вывода отладчика.

debugger

Обеспечивает отладочную статистику по текущему режиму отладки и отслеживаемым предикатам.

dec(+N,-X)

Уменьшает на 1 целое число Nи возвращает вX результат.

defineb(+BTree,+SplitSize,+Uniqueness,+Order)

defineb(+BTree,+SplitSize,+Uniqueness,+Order,+Case)

Задает атрибуты b-дерева.

defineh(+Table_Name,+HashBuckets)

Задает количество корзин хеширования HashBuckets, которое нужно использовать в хеш-таблицеTable_Name.

delete(+Filename)

Удаляет заданный файл.

delete_world(+World_name)

Удаляет мир с заданным именем World_name.

directory(+Path,-Name,-Mode,-Time,-Date,-Size)

Возвращает файлы директории Path. РежимModeявляется суммой любого сочетания элементов из следующего набора:

  • 1 – только на чтение (readonly);

  • 2 – скрытые (hidden);

  • 4 – исключить системные файлы;

  • 16 – директории;

  • 32 – архивные.

disk(?DiskName)

Устанавливает или возвращает имя (из одной буквы) логического диска, который используется по умолчанию. При установке не используйте двоеточие с именем диска DiskName.

display(+Term)

display(+Handle,+Term)

Выводит терм в префиксной польской записи на стандартное устройство вывода или устройство, заданное идентификатором потока Handle.

E

eq(?X,?Y)

Определяет, являются ли XиYодним и тем же объектом данных.

erase(+Ref)

Удаляет терм, хранящийся под заданным ссылочным номером, и сохраняет след для термов, которые были удалены.

eraseall(+Key)

Удаляет все термы, хранящиеся под заданным ключом.

errcode(-OldCode,+NewCode)

Возвращает код сообщения OldCodeо самой последней синтаксической ошибке или ошибке ввода/вывода и устанавливает хранящийся код в новое значениеNewCode.

expand_term(+Term,-Newterm)

Преобразует терм, построенный согласно системе обозначений DCG-грамматики, в эквивалентный ему терм Пролога.

expunge

Удаляет системные ссылки на удаленные термы базы данных.

F

fail

Эта цель никогда не согласуется.

file_list(+Filename)

Сохраняет содержимое базы данных в файл с именем Filename.

file_list(+Filename,+Name/Arity)

Сохраняет фразы с заданным именем и арностью Name/Arity в файл с именем Filename.

fileerrors(?Old,?New)

Разрешает или запрещает сообщения об ошибках ввода/вывода или возвращает текущую установку этого флага. Для того чтобы разрешить сообщения, установите Newвon, в противном случае установитеNewвoff.

findall(?Term,+Goal,-List)

Собирает все экземпляры терма Term, при которых цельGoalсогласуется, и возвращает эти экземпляры в виде неупорядоченного спискаList. Предполагается, что для всех свободных переменных имеет место экзистенциальная квантификация.

float(?X)

Согласуется, если Xявляется вещественным числом.

float_text(?Number,?Text,?Format)

Конвертирует число в строку согласно спецификации, заданной в аргументе Format,или конвертирует строку в вещественное число. АргументомFormatможет быть

  • fixed(N)– известный формат с фиксированной точкой без хвостовых пробелов и сNцифрами после десятичной точки;

  • scientific(N)– формат с плавающей точкой иNцифрами после десятичной точки.

flush

Удаляет все символы из буфера клавиатуры.

functor(?Struct,?Name,?Arity)

Возвращает имя структуры и ее арность.

G

gc

Сборка мусора. Восстанавливает неиспользуемое стековое пространство.

get(?Char)

get(+Handle,?Char)

Считывает следующий символ со стандартного устройства ввода или из файлового потока с идентификатором Handle, пропуская непечатные символы, и унифицирует код ASCII сChar.

get0(?Char)

get0(+Handle,?Char)

Считывает следующий символ со стандартного устройства ввода или из файлового потока с идентификатором Handleи унифицирует код ASCII сChar. Предикатget0не пропускает непечатные символы.

get0_noecho(?Char)

Считывает следующий символ со стандартного устройства ввода и унифицирует код ASCII с Char. Предикатget0_noechoне производит эхопечать символа на стандартное устройство вывода.

get_bit(+Bit,+Int,-Value)

Возвращает в Value(либо 0, либо 1) значение указанного бита целого числа.

get_cursor(-Low_scan,-High_scan)

Возвращает текущую форму курсора.

getEnvVar(+Variable,-/+Valve)

Позволяет получить значение переменной окружения (например, PATH). Не согласуется, если не указано имя переменной.

ground(?Term)

Согласуется, если терм Termне содержит свободных переменных, т.е. любой подтерм терма не является свободной переменной.

H

halt

Производит выход из интерпретатора или откомпилированного приложения.

halt(+Exit_code)

Производит выход из интерпретатора или откомпилированного приложения с кодом завершения Exit_code.

hard_erase(+Ref)

Удаляет терм базы данных с указанным ссылочным номером. В отличие от eraseпредикатhard_eraseне сохраняет следов удаленных термов.

I

ifthen(+P,+Q)

Выполняет цель Q, если согласуется цельP. Если цельPне согласуется, то предикатifthenсогласуется без выполнения целиQ.

ifthenelse(+P,+Q,+R)

Выполняет цель Q, если согласуется цельP, в противном случае выполняет цельR.

in(+Port,?Byte)

Считывает байт из заданного порта ввода/вывода.

inc(+N,-X)

Увеличивает на 1 число Nи возвращает результат вX.

instance(+Ref,-Term)

Возвращает терм, связанный с заданным ссылочным номером.

int_text(?Integer,?Text)

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

integer(?X)

Согласуется, если Xявляется целым числом.

X is E

Оценивает (вычисляет) выражение Eи унифицирует результат вычисления сX.

K

key(+Key,-Ref)

Возвращает ссылочный номер заданного ключа.

key_count(+Key,-Count)

Возвращает количество термов базы данных, хранящихся под заданным ключом.

keyb(-Ascii,-Scan)

keyb(-Ascii,-Scan,-/+Flags)

Считывает следующий символ с клавиатуры и возвращает его ASCII- и Scan-коды. В случае двух аргументов множество флагов Flagsвозвращается как сумма произвольного сочетания из следующего набора:

  • 1 – нажата клавиша, правыйshift;

  • 2 – нажата клавиша, левыйshift;

  • 4 – нажата клавишаcontrol;

  • 8– нажата клавишаalt;

  • 16– активен режимscroll lock;

  • 32– активен режимcaps lock;

  • 128– активен режим вставки.

keyb_peek(-Ascii,-Scan)

keyb_peek(-Ascii,-Scan,-/+Flags)

Считывает следующий символ с клавиатуры и возвращает его ASCII- и Scan-коды и при этом не удаляет символ из буфера. В случае двух аргументов аргумент Flagsимеет то же значение, что и в случае предикатаkeyb.

keys(?Key)

Возвращает имя и арность ключа текущего мира данных. Если указан конкретный ключ Key, то согласуется при наличии указанного ключа в текущем мире данных.

keysort(+L1,-L2)

Сортирует список L1согласно стандартному порядку сравнения термов. Элементы списка должны иметь видKey -Value. Дубликаты элементов не удаляются. Отсортированный список возвращается в аргументеL2.

L

leash(+Mode)

Устанавливает режим работы с портом. Аргумент Modeможет иметь значенияfull,tight,halfилиloose.

length(+List,-N)

Возвращает длину NспискаList.

list_text(?List,?String)

Конвертирует список символов в строку или конвертирует атом или строку в список символов.

listing

Выводит на стандартное устройство вывода все предикаты текущего кодового мира.

listing(+Name)

listing(+Name/Arity)

listing(+[Name/Arity,Name/Arity])

Для заданного предиката или списка предикатов выводит на стандартное устройство вывода все фразы, его (предикат) или их (предикаты из списка) определяющие.

load_key(+Filename,+Key)

Загружает содержимое файла в базу данных под указанный ключ.

lock

Используется для блокировки возможности использования Ctrl-Breakдля немедленного завершения программы. Предикатlockдобавляет 1 к системному семафору (счетчику блокировок). Должен использоваться совместно с предикатомunlock.

M

mkdir(+Path)

Создает новую директорию. Если аргумент Pathявляется полным именем пути (включая имя диска и имена директорий), то директория будет создана так, как это точно указано. Если аргументPath– это просто имя без указания пути, тогда директория создается в текущей директории.

mth_ref(+Ref,+Dir,-NewRef)

Возвращает либо предыдущий (Dir = -1), либо следующий (Dir = 1) ссылочный номер базы данных для указанного ссылочного номераRef.

N

name(?Atom,?List)

Конвертирует список в атом или конвертирует атом (целое число) в список.

nl

nl(+Handle)

Производит переход на новую строку на стандартном устройстве вывода или в файловом потоке с идентификатором Handle.

nodebug

nodebug(-File)

Выключает отладчик. Если используется аргумент File, то в нем возвращается имя файла, в который производилась эхопечать сообщений отладчика.

nonvar(?X)

Согласуется, если Xне является свободной переменной.

nospy(+Name)

nospy(+Name/Arity)

Удаляет точки слежения из указанного предиката.

not(+P)

Не согласуется, если цель Pможет быть согласована; в противном случае согласуется.

notrace

notrace(-File)

Предикат делает то же самое, что и предикат nodebug.

nref(+Ref,-Next)

Для указанного терма возвращает ссылочный номер терма следующего за ним в цепочке термов, хранящихся под тем же самым ключом.

nth_char(+N,-String,-Char)

Возвращает ASCII-код N-ого от начала строки символа. Нумерация символов в строке начинается с 0.

nth_ref(+Key,+N,-Ref)

Возвращает ссылочный номер N-ого по порядку терма в цепочке термов, хранящихся под указанным ключом.

number(?X)

Согласуется, если Xявляется числом (целым или вещественным).

O

op(+Prec,+Assoc,+Op)

Задает старшинство, ассоциативность и имя оператора.

open(-Handle,+Filename,+Access)

Открывает существующий файл. Аргумент Accessможет иметь значения

  • r– чтение;

  • w– запись;

  • a– добавление;

  • rw– чтение/запись;

  • ra– чтение/добавление;

  • dw– защита от записи;

  • drw– защита от чтения/записи;

  • cn– создание, если такого файла нет;

  • fe– отказ от работы, если файл уже существует;

  • re– замена файла, если уже существует;

  • ni– не наследуется порожденным дочерним процессом.

Если указывается более чем один режим доступа, нужно использовать список, например, режим чтения с защитой от записи [r,dw].

P

p_open(-/+Handle,+Filename,+Access)

Открывает файл с заданным именем Filename. Если такого файла нет в текущей директории,p_openпроизводит поиск в директориях, указанных в переменной окруженияpathфайлаautoexec.bat.

p_open(-Handle,+Filename,+Type,+Pathvar)

Открывает файл с заданным именем Filename.Pathvarпозволяет включить такие переменные пути какinclude,helpилиpath.

pfname(+FileName,?/+Prefix,?/+Name,?/+Extension, ?/+HasExt)

Разбирает имя файла на компоненты его пути: префикс, имя и расширение. HasExt– признак наличия расширения и может быть равен 121 или 110 (ASCII-коды символовyиn).

pref(+Ref,-Prev)

Возвращает ссылочный номер предыдущего терма цепочки термов.

put(+Char)

put(+Handle,+Char)

Выводит символ на стандартное устройство вывода или файл с дескриптором Handle.

R

randomize(+Seed)

Переустанавливает генератор случайных чисел. Аргумент Seedявляется целым числом.

read(-Term)

read(+Handle,-Term)

Считывает терм со стандартного устройства ввода или файла с дескриптором Handle.

read_ascib(+Handle,+Text)

Считывает текстовое поле из файла с дескриптором Handle;длина поля указывается в первом байте, считываемом из файла.

read_asciw(+Handle,+Text)

Считывает текстовое поле из файла с дескриптором Handle;длина поля указывается в первом слове (16 битах) считываемых, из файла.

read_asciz(+Handle,+Text)

Считывает «заканчивающееся нулем» текстовое поле из файла с дескриптором Handle.

read_asciz_field(+Handle,+Width,+Text)

Считывает «заканчивающееся нулем» текстовое поле заданной ширины из файла с дескриптором Handle.

read_float(+Handle,+Float)

Считывает следующие 8 байт из файла с дескриптором Handleкак вещественное число.

read_int8(+Handle,+Integer)

Считывает следующие 8 бит из файла с дескриптором Handleкак целое число.

read_int16(+Handle,+Integer)

Считывает следующие 16 бит из файла с дескриптором Handleкак целое число.

read_int32(+Handle,+Integer)

Считывает следующие 32 бита из файла с дескриптором Handleкак целое число.

read_line(+Handle,-Line)

Считывает строку файла с дескриптором Handle.

read_string(+MaxLength,-String)

read_string(+Handle,+MaxLength,-String)

Считывает строку из MaxLengthсимволов либо со стандартного устройства ввода, либо из файла с дескрипторомHandle.

reconsult(+Filename)

Считывает фразы в базу знаний из файла, заменяя любые предикаты, уже представленные в базе знаний, набором фраз, обнаруженным в файле.

record_after(+Ref,?Term,-Newref)

Добавляет терм в цепочку после терма с ссылочным номером Refи возвращает ссылочный номер, присвоенный добавленному терму.

record_before(+Ref,?Term,-Newref)

Добавляет терм в цепочку до терма с ссылочным номером Ref и возвращает ссылочный номер присвоенный добавленному терму.

record_visi(+Goal,+Type,+Offset)

Обеспечивает низкоуровневый доступ к таблице видимости. Typeможет иметь следующие значения:1– prolog,2– eval,3– evalpost, аOffset– это адрес предиката. Для того чтобы удалить определение видимости, установитеType=0.

recorda(+Key,?Term,-Ref)

Вставляет терм в начало цепочки термов и возвращает ссылочный номер, назначенный добавленному терму.

recordb(+BTree,+Sort_Key,+Term)

Записывает терм в b-дерево.

recorded(+Key,?Term,-Ref)

Возвращает через поиск с возратом термы и связанные с ними ссылочные номера, хранящиеся под заданным ключом.

recorded(+Key,+Dir,?Term,-Ref)

Возвращает через поиск с возратом термы и связанные с ними ссылочные номера, хранящиеся под заданным ключом. Порядок поиска задается с помощью аргумента Dir:1– прямой;0– обратный.

recorded_nth(+Key,+N,-Term,-Ref)

Возвращает N-ый терм, хранящийся под ключом базы данных, и связанный с ним ссылочный номер.

recorded_ref(+Ref,+Dir,?Term,-Ref)

Возвращает через поиск с возвратом термы и связанные с ними ссылочные номера, хранящиеся до или после терма с указанным ссылочным номером. Порядок поиска задается с помощью аргумента Dir:1– прямой;0– обратный.

recorded_terms(+Key,?Match,-Terms)

Возвращает в списке все термы, хранящиеся под ключом, которые унифицируются с термом Match.

recorded_tro(+Key,?Term,-Ref)

Возвращает через поиск с возратом термы и связанные с ними ссылочные номера, хранящиеся под заданным ключом. Предикат recorded_troиспользует оптимизацию остаточной рекурсии и, следовательно, может быть более эффективным, чем предикатrecorded.

recordh(+Table_name,+Sort_key,+Term)

Записывает терм в хэш-таблицу.

recordz(+Key,?Term,-Ref)

Вставляет терм в конец цепочки термов и возвращает ссылочный номер, назначенный добавленному терму.

ref(?X)

Согласуется, если Xявляется ссылочным номером базы данных.

refPartition(+Ref,-Partition)

Возвращает раздел (partition) базы данных, в котором хранится терм с указанным ссылочным номером.

removeallb(+BTree)

Удаляет b-дерево.

removeallh(+Table_name)

Удаляет хэш-таблицу.

removeb(+BTree,+Sort_key,?Term)

Удаляет терм из b-дерева. Если Termявляется свободной переменной, тогда удаляется первый терм подSort_key.

removeb(+BTree,+Sort_key)

Удаляет все термы из b-дерева, которые связаны с указанным Sort_key.

removeh(+Table_name,+Sort_key,?Term)

Удаляет терм из хэш-таблицы. Если Termявляется свободной переменной, тогда удаляется первый терм подSort_key.

rename(+Filename,+NewName)

Изменяет имя файла.

repeat

Всегда согласуется (в том числе и тогда, когда обнаруживается в ходе поиска с возвратом).

replace(+Ref,+Term)

replace(+Ref,+Term,-NewRef)

Заменяет терм, имеющий указанный ссылочный номер, термом, заданным в аргументе Term. В версии с тремя аргументами,NewRefбудет тем же самым что иRefдо тех пор, пока не потребуется сменить страницу базы данных. В этом случаеNewRefбудет новым ссылочным номером, принадлежащим новой странице.

replaceb(+BTree,+Sort_key,+Old_term,+New_term)

Заменяет терм, хранящийся в указанной позиции в b-дереве.

replaceh(+Hashtable,+Key,?Term0,+Term)

Если Term0хранится в хэш-таблице под заданным ключом, то он заменяется термомTerm.

reset_op

Возвращает определения операторов к значениям, принятым по умолчанию.

resetspy

Очищает все точки слежения.

restore

Отменяет все изменения, сделанные в базе данных с тех пор, как она была сохранена в последний раз.

restore(+Name)

Восстанавливает базу данных, заданную именем Name.

retract(+Clause)

Удаляет первое вхождение указанной фразы из базы данных.

retrieveb(+BTree,?Sort_key,?Term)

Возвращает терм из b-дерева.

retrieveb_keys(+BTree,-Keys)

Возвращает все ключи Keysиз b-дерева в виде списка.

retrieveb_nth(+BTree,+N,-Sort_key)

Возвращает N-ый ключ из b-дерева.

retrieveb_terms(+BTree,-Terms)

Возвращает все термы Termsиз b-дерева в виде списка.

retrieveb_terms(+BTree,+Sort_key,-Terms)

Возвращает все термы Terms,связанные с указаннымSort_key,из b-дерева в виде списка.

retrieveh(+Table_name,?Sort_key,?Term)

Возвращает терм из хэш-таблицы.

rmdir(+Path)

Удаляет директорию.

S

save

Сохраняет все изменения, сделанные в текущей базе данных с тех пор, как она была в последний раз сохранена.

save(+Name)

Сохраняет внутреннюю базу данных в файл с заданным именем Name.

scan_code(+Ascii,-Scan)

Возвращает Scan-код, связанный с кодомAscii.

screen_height(?/+Old,?/+New)

Позволяет изменить высоту экрана (в строках) к одному из возможных значений – 25,43 (как EGA, так и VGA), или50(только VGA).

searchPath(+PathSpec,+FileSpec,+Flags, -/+CompleteFileSpec)

Позволяет производить поиск файла на диске. Аргумент PathSpecуказывает как следует искать. Если Вы хотите узнать значение переменной окружения, вам нужно установить второй бит флага. Имеют значение следующие биты флагаFlag:1– поиск в текущей директории;2 PathSpecявляется переменной окружения;4– поиск директории, содержащей EXE-файл приложения.

see(+Filename)

Открывает файл для чтения и делает его текущим устройством ввода.

see_h(+Handle)

Ранее открытый файл с дескриптором Handleстановится текущим устройством ввода.

seeing(?Filename)

Возвращает имя файла, который был открыт на чтение с помощью предиката see. Если использовался предикатsee_h, то цельseeingне согласуется.

seek(+Handle,+Offset,+Method,-NewLoc)

Перемещает внутренний указатель файла к указанной позиции в файле. Аргумент Offsetпредставляет собой относительную позицию внутри файла в байтах.Methodуказывает стартовую точку от которой вычисляется смещениеOffset,и может быть:bof– началом файла;eof– концом файла илиcurrent– текущей позицией.

seen

Завершает ввод из текущего открытого файла и закрывает файл.

set_bit(+Bit,+NewValue,+OldInt,-NewInt,-OldValue)

Устанавливает значение бита в целом числе, возвращая новое целое число и старое значение бита.

set_bits(+OldInt,+Mask,+Data,-NewInt)

Устанавливает в целом числе набор битов, заданный маской Mask, в значения, указанные в аргументеData.

set_cursor(+Low_scan,+High_scan)

Изменяет форму курсора так, как это задано аргументами Low_scanиHigh_scan.

set_cursorshape(+Shape)

Позволяет изменить форму курсора к одному из четырех вариантов: 0– скрытый курсор,1– прямоугольник (█),2– половина прямоугольника (▄) или3– знак подчеркивания (_).

setof(?Term,+Goal,-Set)

Собирает все экземпляры терма Term, при которых согласуется цельGoal, и возвращает их в виде упорядоченного списка без дубликатов (Set).

setup_editor(+Bkgrnd,+Border,+Status,+ROE,+SOE,+Indent)

Изменяет цвета и другие установки редактора Arity/Prolog32.

shell

Позволяет выполнить команды операционной системы из интерпретатора команд. Для возврата в программу (интерпретатор) введите exit. Этот предикат всегда согласуется.

shell(+Command)

Выполняет команду операционной системы и согласуется.

skip(+Char)

skip(+Handle,+Char)

Считывает и пропускает символы со стандартного устройства ввода или файла с дескриптором Handleдо тех пор, пока не будет обнаружен символChar.

sort(+L1,-L2)

Сортирует список L1по возрастанию, удаляя дубликаты, и возвращает отсортированный список вL2.

sortkey(+Key)

Сортирует термы хранящиеся под ключом базы данных.

spy(+Name)

spy(+Name/Arity)

Специфицирует предикат как точку слежения при отладке.

statistics

Показывает окно, которое демонстрирует всю статистику по использованию системы Arity/Prolog32.

statistics(+Info,-Struct)

Возвращает информацию об использовании системы интерпретатором Arity/Prolog32. АргументInfoможет быть стеком базы данных, локальным стеком, глобальным стеком, trail-стеком, корзиной мусора, версией, edb, кэшем.

stdin(+Filename,+Goal)

Делает указанный файл стандартным устройством ввода при доказательстве указанной цели.

stdinout(+InFile,+OutFile,+Goal)

Делает указанные файлы стандартными устройствами ввода и вывода при доказательстве указанной цели.

stdout(+Filename,+Goal)

Делает указанный файл стандартным устройством вывода при доказательстве указанной цели.

string(?X)

Согласуется, если Xявляется строкой.

string_length(+String,?Length)

Возвращает длину строки. ЕслиLengthявляется целым числом, то согласуется, если это длина строкиString.

string_lower(+Text,-Lower)

Преобразует текст Textк эквивалентной строке в нижнем регистре.

string_search(+SubString,+String,-Location)

Производит поиск подстроки в строке и возвращает (в случае успеха) начальную позицию найденного вхождения в аргументе Location.Locationявляется смещением (начиная с 0). Этот предикат недетерминированный.

string_search(+Case,+SubString,+String,-Location)

Производит поиск подстроки в строке и возвращает (в случае успеха) начальную позицию найденного вхождения в аргументе Location.Locationявляется смещением (начиная с 0). Этот предикат недетерминированный. ЕслиCaseустановлен в0, поиск ведется с учетом регистра. ЕслиCaseустановлен в1, поиск ведется без учета регистра.

string_term(?String,?Term)

Преобразует строку или атом в терм или терм в строку.

string_termq(?/+Quotestring,?/+Term)

Версия string_term, которая работает подобно writeq.

string_upper(+Text,-Lower)

Преобразует текст Textк эквивалентной строке в верхнем регистре.

substring(+InString,+N,+Length,-OutString)

Извлекает подстроку из строки. Аргумент Nзадает начало подстроки (символы строки нумеруются начиная с 0). АргументLengthзадает длину подстроки.

syntaxerrors(?Old,?New)

Позволяет или запрещает сообщения об ошибках синтаксиса Arity/Prolog32или возвращает текущую установку для этих сообщений.

system(?Predicate)

Определяет, является ли предикат Predicateвычисляемым (системным, не интерпретируемым, «evaluable») предикатом. Если аргументPredicateне является свободной переменной, то он может быть либо именем предиката, либо парой имя/арность.

system(?Predicate,-Old,+New)

Позволяет вам задавать свойство «видимость» указанного предиката, делая предикат либо видимым, либо нет. Значение onозначает, что видимость предиката запрещена.

sysflag(+FlagNo,-Old,+New)

Возвращает/устанавливает значение системных флагов. В настоящее время лишь один системный флаг доступен для пользователей: флаг доступности предохраняющего сохранения FlagNo = 11, значение по умолчанию которогоoff.

T

tab(+Num)

Выводит указанное количество пробелов на стандартное устройство вывода. Аргумент Numдолжен быть в диапазоне 0 – 255.

tab(+Handle,+Num)

Выводит указанное количество пробелов в файл с указанным дескриптором. Аргумент Numдолжен быть в диапазоне 0 – 255.

tchar(-Char,-Attr)

Возвращает символ и атрибут цвета в текущей позиции экранного курсора.

tell(+Filename)

Открывает файл для записи и делает его текущим устройством вывода.

tell_h(+Handle)

Производит вывод в открытый ранее файл с дескриптором Handle.

telling(?Filename)

Возвращает имя файла, который был открыт для записи предикатом tell. Если был использован предикатtell_h, тоtellingтерпит неудачу.

term_concat(+Functor,+Args,-Term)

Возвращает терм Term, созданный из предложенных функтора и списка аргументов.

tget(?Row,?Column)

Возвращает координаты текущей позиции экранного курсора внутри текущего окна.

tget_screen(?Row,?Column)

Возвращает абсолютные экранные координаты текущей позиции курсора.

time(?time(Hours,Minutes,Seconds,Hundredths))

Возвращает текущее время или устанавливает его на системных часах.

tmove_screen(+Row,+Column)

Перемещает курсор к заданным координатам экрана.

told

Закрывает файл, который был открыт для записи.

trace

Включает отладчик, устанавливая его в режим creep.

trace(+File)

Включает трассировку, создает новый файл и сохраняет информацию по трассировке в этот файл.

true

Этот запрос всегда успешен.

U

unlock

Вычитает 1 из системного семафора. Используется вместе с предикатом lockдля выделения участка кода программы так, чтоCtrl-Breakне будет завершать исполнение программы до тех пор, пока обработка выделенного участка не будет завершена.

V

var(?X)

Определяет, является ли Xсвободной переменной.

varnames(?Term)

Назначает пригодное для печати имя каждой переменной терма.

W

wa(+Count,+Attribute)

Изменяет байт – цветовой аттрибут набора символов экрана. Количество символов набора задается аргументом Count, а сам набор начинается с текущей позиции куросора.

wc(+Count,+Char)

Выводит на экран заданное количество копий указанного символа в текущее окно, начиная с текущей позиции курсора.

wca(+Count,+Char,+Attribute)

Выводит на экран заданное количество копий указанного символа с использованием аттрибута цвета Attributeв текущее окно, начиная с текущей позиции курсора.

what_btrees(-Btree)

Возвращает через поиск с возвратом имена всех существующих на данный момент b-деревьев.

what_worlds(?X)

Возвращает через поиск с возвратом имена всех существующих на данный момент миров.

workspace(-OldWorkspaceNumber,+NewWorkspaceNumber)

Возвращает/устанавливает номер текущего рабочего пространства базы данных (0...3).

write(+Term)

write(+Handle,+Term)

Выводит терм на стандартное устройство вывода или в файл с указанным дескриптором.

write_ascib(+Handle,+Text)

Записывает текстовое поле Textв файл с дескрипторомHandle, снабжая его префиксом в виде одного байта, представляющего собой длину поля.

write_asciw(+Handle,+Text)

Записывает текстовое поле Textв файл с дескрипторомHandle, снабжая его префиксом в виде одного слова (16 бит), представляющего собой длину поля.

write_asciz(+Handle,+Text)

Записывает текстовое поле, заканчивающееся нулем, в файл с дескриптором Handle.

write_asciz_field(+Handle,+Width,+Text)

Записывет текстовое поле указанной длины, заканчивающееся нулем в файл с дескриптором Handle.

write_ctrl_text(+Key,+Label)

Выводит на экран метку элемента управления окна диалога с подходящим атрибутом клавиши быстрого доступа.

write_float(+Handle,+Float)

Выводит число с плавающей точкой в файл с дескриптором Handleв 8-байтном формате.

write_int8(+Handle,+Integer)

Выводит целое число в файл с дескриптором Handleв 8-битном формате.

write_int16(+Handle,+Integer)

Выводит целое число в файл с дескриптором Handleв 16-битном формате.

write_int32(+Handle,+Integer)

Выводит целое число в файл с дескриптором Handleв 32-х битном формате.

write_key(+Key,+File,+Backup)

Записывает ключ базы данных в ASCII-файл и если Backupравен1и имеется существующая версия файлаFile, то она сохраняется в виде .BAK файла.

writeq(+Term)

writeq(+Handle,+Term)

Выводит терм на стандартное устройство вывода или в файл с указанным дескриптором, заключая атомы и функторы в кавычки так, чтобы терм читался далее как синтаксически корректный терм Пролога.

Приложение В