Goal,Rules. камеры для покраски prime 3000 |
Вторым аргументом предиката solve(Goal,Rules) в программе 7 является список правил, используемых для редукции предковых вершин цели Goal в текущем дереве доказательства. Список правил обновляется с помощью предиката solve в процессе редукции цели. Для представления правила выбрана структура rule(A,B). Единственным предикатом, на который влияет выбор представления правила, является предикат display_rule.
Выясним рекомендации для Боба:
?- solve(hy(bob,Y),[]).
bob имеет симптом мышечные боли? why.
хочу воспользоваться правилом:
Если bob имеет симптом мышечные боли и bob имеет симптом лихорадка
то bob имеет простуда
bob имеет симптом мышечные боли? why.
хочу воспользоваться правилом:
Если bob имеет простуда и not bob имеет уязвимый возраст
то bob - рекомендовано лечь в постель и принять аспирин
bob имеет симптом мышечные боли? why.
хочу воспользоваться правилом:
Если member(лечь в постель и принять аспирин,
[лечь в постель и принять аспирин,вызвать врача])
и bob - рекомендовано лечь в постель и принять аспирин
то hy(bob, лечь в постель и принять аспирин)
% три дополнительных правила для respond
respond(why,A,Rules):-
var(Rules),!,
write(' хочу использовать ложность '),
write(A),nl,
ask(A,Answer),
respond(Answer,A,[]).
respond(why,A,[Rule|Rules]):-
write(' хочу воспользоваться правилом:'),
display_rule(Rule),
ask(A,Answer),
respond(Answer,A,Rules).
respond(why,A,[]):-
write(' <== возможности объяснения исчерпаны '),nl,
ask(A,Answer),
respond(Answer,A,[]).
known(A):-A,!.
known(A):-
untrue(A).
display_query(A):-
write(A),
write('?').
display_rule(rule(A,B)):-
nl,write('Если '),
write_conjunction(B),
write(' то '),
write(A),nl.
write_conjunction((A,B)):-
!,write(A),write(' и '),
write_conjunction(B).
write_conjunction(A):-
write(A),nl.
|
Опубликовал vovan666
May 23 2013 07:24:37 ·
0 Комментариев ·
4464 Прочтений ·
|
|