Подтвердить что ты не робот

Как создать факт в SWI-Prolog?

Я просто хочу создать что-то вроде: like(x,y). Я пробовал в течение долгого времени и очень расстроен, может кто-нибудь, пожалуйста, скажите мне, как это сделать???!!!

4b9b3361

Ответ 1

Я предполагаю, что вы используете swi в интерактивном режиме и пытаетесь войти в этот факт, дает вам такую ​​ошибку:

1 ?- like(x, y).
ERROR: toplevel: Undefined procedure: like/2 (DWIM could not correct goal)

Поскольку этот факт не существует в базе данных. Если это так, попробуйте сначала подтвердить этот факт:

2 ?- assert(like(x,y)).
true.

Затем вы можете попробовать:

3 ?- like(x, y).
true.

На этот раз запрос завершается успешно, поскольку этот факт существует в базе данных.

Лучшим подходом может быть запись ваших предложений в файл, а затем consult их. Swog proog имеет emacs-подобный редактор, который вы можете вызвать, набрав

emacs.

в командной строке. Или используйте собственный редактор, а затем обратитесь к файлу. Swog proog поставляется с множеством графических инструментов, которые могут помочь; посмотреть руководство для более подробной информации.

Ответ 2

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

Например,

animals.pl

bigger(elephant, tiger).
bigger(tiger, rabbit).
bigger(rabbit, sparrow).
bigger(sparrow, ant).

Вы также можете использовать функцию assert для определения фактов в терминале пролога.

1 ?- assert(bigger(elephant, rabbit)).
true.

Перейдите по этой ссылке, чтобы получить больше информации.