мясо'. В соответствии с базой знаний рис. 14.5 имеем трассу
[( питер это хищник) по прав3,
( питер это тигр) по прав5 ]
Смысл ее можно выразить так:
Я могу использовать 'питер ест мясо' для того, чтобы проверить по прав3, что 'питер это хищник'.
Далее, я могу использовать 'питер это хищник' для того, чтобы проверить по прав5, что 'питер это тигр'.
Ответ решающее И / ИЛИ-дерево для вопроса Цель. Общая форма
представления для объекта Ответ:
Заключение было Найдено
где Найдено - это обоснование для результата Заключение. Следующие три примера иллюстрируют различные варианты ответов:
(1) ( соед( радиатор, предохр1) это правда) было
'найдено как факт'
(2) (питер ест мясо) это ложь было сказано
(3) (питер это хищник) это правда было
( 'выведено по' прав3 из
(питер это млекопитающее) это правда было
( 'выведено по' прав1 из
(питер имеет шерсть) это правда было сказано)
и
(питер ест мясо) это правда было сказано )
На рис. 14.10 показана прологовская программа для процедуры рассмотреть. В этой программе реализованы принципы разд. 14.4.1 с использованием только что описанных структур данных.
% Процедура
%
% рассмотреть( Цель, Трасса, Ответ)
%
% находит Ответ на вопрос Цель. Трасса - это цепочка
% целей-предков и правил. 'рассмотреть' стремится найти
% положительный ответ на вопрос. Ответ 'ложь' выдается
% только в том случае, когда рассмотрены все возможности,
% и все они дали результат 'ложь'.
:-ор( 900, xfx, :).
:-ор( 800, xfx, было).
:-ор( 870, fx, если).
:-ор( 880, xfx, то).
:-ор( 550, xfy, или).
:-ор( 540, xfy, и).
:- ор( 300, fx, 'выведено по').
:- ор( 600, xfx, из).
:- ор( 600, xfx, по).
% В программе предполагается,что ор( 700, хfх, это), ор( 500, fx, не)
рассмотреть( Цель, Трасса, Цель это правда
было 'найдено как факт') :-
факт : Цель.
% Предполагается, что для каждого типа цели
% существует только одно правило
рассмотреть( Цель, Трасса,