У меня есть файл пролога, который классифицирует заданный предикатный бонгард (A, X) с заданными фоновыми фактами. Фрагмент правил:
bongard(A,[neg]) :- triangle(A,C), \+ in(A,C,D), !.
bongard(A,[neg]) :- \+ triangle(A,C), !.
...
Я выполняю эту программу так: swipl -s file.pl -g "bongard(a, X), write(X)"
, чтобы получить классификацию для этого предиката.
Теперь я также хотел бы знать, какое правило сработало и фактически ограничило переменную. Есть какой-нибудь изящный способ сделать это? Прямо сейчас мне нужно сохранить дополнительные n файлов для исходного файла пролога с n правилами. File1 имеет первое правило, file2 - первые 2 правила .. Вы поняли. Таким образом, если File2 классифицирует правило, я знаю, что второе правило сработало.
Есть ли у кого-нибудь лучшие предложения по этому поводу?
РЕДАКТИРОВАТЬ: А как насчет того, чтобы присвоить предикату уникальный номер «bongard (A, X, nr)», я мог бы записать (X) и записать (Nr), чтобы я знал, какой предикат сработал?