Программа об экспертных системах :
pribor('CD-ROM'):-
yes('под ним','стол'),
no('под ним','бутылки'),
no('нажимать SHIFT','пальцем'),
no('нажимать SHIFT','ногой'),
yes('нахождение на нем','чашки с чаем'),
no('наличие','липкости'),
no('возможность разнести','в щепки'),
yes('раскрутка','диска'),
yes('мигание','лампочки'),
no('большое количество','клавиш').
pribor('стол'):-
yes('нажимать SHIFT','пальцем'),
no('нажимать SHIFT','ногой'),
no('под ним','стол'),
yes('под ним','бутылки'),
yes('нахождение на нем','чашки с чаем'),
yes('наличие','липкости'),
yes('возможность разнести','в щепки'),
no('раскрутка','диска'),
no('мигание','лампочки'),
no('большое количество','клавиш').
pribor('клавиатура'):-
yes('под ним','стол'),
no('под ним','бутылки'),
yes('нажимать SHIFT','пальцем'),
no('нажимать SHIFT','ногой'),
yes('наличие','липкости'),
yes('большое количество','клавиш'),
yes('мигание','лампочки'),
no('нахождение на нем','чашки с чаем'),
no('возможность разнести','в щепки'),
no('раскрутка','диска').
pribor('пианино'):-
no('под ним','стол'),
yes('под ним','бутылки'),
no('нажимать SHIFT','пальцем'),
yes('нажимать SHIFT','ногой'),
no('мигание','лампочки'),
yes('нахождение на нем','чашки с чаем'),
no('раскрутка','диска'),
yes('большое количество','клавиш'),
yes('наличие','липкости'),
yes('возможность разнести','в щепки').
pribor('монитор'):-
yes('под ним','стол'),
yes('под ним','бутылки'),
no('нажимать SHIFT','пальцем'),
no('нажимать SHIFT','ногой'),
no('нахождение на нем','чашки с чаем'),
no('мигание','лампочки'),
no('раскрутка','диска'),
no('большое количество','клавиш'),
yes('наличие','липкости'),
yes('возможность разнести','в щепки').
pribor('телефон'):-
yes('под ним','стол'),
no('под ним','бутылки'),
no('нажимать SHIFT','пальцем'),
no('нажимать SHIFT','ногой'),
yes('большое количество','клавиш'),
yes('наличие','липкости'),
no('нахождение на нем','чашки с чаем'),
no('мигание','лампочки'),
no('раскрутка','диска'),
yes('возможность разнести','в щепки').
yes(X,Y):-xyes(X,Y),!.
yes(X,Y):-not(xno(X,Y)),
demander(X,Y,yes).
no(X,Y):-xno(X,Y),!.
no(X,Y):-not(xyes(X,Y)),
demander(X,Y,no).
demander(X,Y,Ans):-
repeat,
nl,write(' Для прибора характерно:'),
write(X),
tab(2),write(Y),tab(2),write('? '),
read(L1),(L1=yes;L1=no),
memoire(X,Y,L1),!,
Ans=L1.
memoire(X,Y,yes):-
asserta(xyes(X,Y)).
memoire(X,Y,no):-
asserta(xno(X,Y)).
retractall(X,Y):-
repeat,not(retract(X,Y)).
begin:-
nl,
write('Программа по виду определяет ПРИБОР.'),
nl,
pribor(N),!,
nl,
write('Судя по всему ето : '),write(N),
clear_base.
begin:-
nl,
write('Такого ещё не знаем прибора !!!').
clear_base:-
retractall(xyes(_,_)),
retractall(xno(_,_)).