Программирование в Логике. Чанышев О.Г. - 24 стр.

UptoLike

Составители: 

47
fail.
искать_синоним_кто(_):-retractall(временно(_)),!,fail.
искать_синоним_отношения(Лексема):-
сот(Отн,СписокОтн),
загрузить_список(СписокОтн),
временно(Лексема),!,
retractall(временно(_)),assert(отн(Отн));
fail.
искать_синоним_отношения(_):-retractall(временно(_)),!,fail.
искать_синоним_что(Лексема):-
соб(Что,СписокЧто),
загрузить_список(СписокЧто),
временно(Лексема),!,
retractall(временно(_)),assert(что(Что));
fail.
искать_синоним_что(_):-retractall(временно(_)),!,fail.
загрузить_список([]).
загрузить_список([H|T]):-
assert(временно(H)),
загрузить_список(T).
ответ1(Кто,Отношение,Что):-
ф(Кто,Отношение,Что),!,
write("otvet1"),nl,
write("Да."),nl;!,write("Нет."),nl.
ответ2(Кто,Что):-
ф(Кто,Отношение,Что),
write("otvet2"),nl,
write(Кто," ",Отношение," ",Что),nl,
fail.
ответ2(_,_).
ответ3(Кто,Отношение):-
ф(Кто,Отношение,Что),
48
write("otvet3"),nl,
write(Кто," ",Отношение," ",Что),nl,
fail.
ответ3(_,_).
ответ4(Кто):-
ф(Кто,Отношение,Что),
write("otvet4"),nl,
write(Кто," ",Отношение," ",Что),nl,
fail.
ответ4(_).
ответ5(Отношение,Что):-
ф(Кто,Отношение,Что),
write("otvet5"),nl,
write(Кто," ",Отношение," ",Что),nl,
fail.
ответ5(_,_).
ответ6(Отношение):-
ф(Кто,Отношение,Что),
write("otvet6"),nl,
write(Кто," ",Отношение," ",Что),nl,
fail.
ответ6(_).
ответ7(Что):-
ф(Кто,Отношение,Что),
write("otvet7"),nl,
write(Кто," ",Отношение," ",Что),nl,
fail.
ответ7(_).
спросить:-
write("Введите Ваш вопрос:"),nl,
readln(Вопрос),
upper_lower(Вопрос,Q),
ответить(Q),!;
!.
fail.                                                          write("otvet3"),nl,
искать_синоним_кто(_):-retractall(временно(_)),!,fail.         write(Кто," ",Отношение," ",Что),nl,
                                                               fail.
искать_синоним_отношения(Лексема):-                            ответ3(_,_).
сот(Отн,СписокОтн),
загрузить_список(СписокОтн),                                   ответ4(Кто):-
временно(Лексема),!,                                           ф(Кто,Отношение,Что),
retractall(временно(_)),assert(отн(Отн));                      write("otvet4"),nl,
fail.                                                          write(Кто," ",Отношение," ",Что),nl,
искать_синоним_отношения(_):-retractall(временно(_)),!,fail.   fail.
                                                               ответ4(_).
искать_синоним_что(Лексема):-
соб(Что,СписокЧто),                                            ответ5(Отношение,Что):-
загрузить_список(СписокЧто),                                   ф(Кто,Отношение,Что),
временно(Лексема),!,                                           write("otvet5"),nl,
retractall(временно(_)),assert(что(Что));                      write(Кто," ",Отношение," ",Что),nl,
fail.                                                          fail.
искать_синоним_что(_):-retractall(временно(_)),!,fail.         ответ5(_,_).

загрузить_список([]).                                          ответ6(Отношение):-
загрузить_список([H|T]):-                                      ф(Кто,Отношение,Что),
                                                               write("otvet6"),nl,
assert(временно(H)),загрузить_список(T).
                                                               write(Кто," ",Отношение," ",Что),nl,
                                                               fail.
ответ1(Кто,Отношение,Что):-
                                                               ответ6(_).
ф(Кто,Отношение,Что),!,
write("otvet1"),nl,                                            ответ7(Что):-
write("Да."),nl;!,write("Нет."),nl.                            ф(Кто,Отношение,Что),
                                                               write("otvet7"),nl,
ответ2(Кто,Что):-                                              write(Кто," ",Отношение," ",Что),nl,
ф(Кто,Отношение,Что),                                          fail.
write("otvet2"),nl,                                            ответ7(_).
write(Кто," ",Отношение," ",Что),nl,                           спросить:-
fail.                                                          write("Введите Ваш вопрос:"),nl,
ответ2(_,_).                                                   readln(Вопрос),
                                                               upper_lower(Вопрос,Q),
ответ3(Кто,Отношение):-                                        ответить(Q),!;
ф(Кто,Отношение,Что),                                          !.

                             47                                                          48