У меня проблема с определением процедур в Прологе.У меня есть два исходных файла, и я хочу проконсультироваться с движком Prolog.Это можно сделать, вызвав Prolog как swipl -g «['1.pl', '2.pl'].
Оба файла сгенерированы другой программой, написанной на другом языке программирования, и я могу 'точное прогнозирование содержимого файлов заранее.
Проблема в том, что в одном из файлов всегда есть правило
predicate1(X):-predicate2(X).
Но иногда правило
predicate2(something):-body
не существует в обоих файлах, и я получаю сообщение об ошибке "Предикат2" не определен при выполнении некоторых запросов для предиката 1.
Если я включаю строку
:- dynamic(predicate2/2).
водин из файлов, который помогает, только если предикат / 2 не определен в другом файле (в противном случае я получаю что-то вроде «вы действительно уверены, что хотите переопределить предикат2 / 2?». И здесь я не хочу переопределять что-то, чтобысохранить данные из другого файла.
Итак, я понятия не имею, как сделать предикат просто «определенным». Мне нужно решение для SWI-Prolog или SICStus Prolog. (к сожалению, версии не имеют разделадля определения прогнозаест, как визуальный пролог)