?-  родитель( боб,пат).

Найдя этот факт в программе, система ответит

        yes           (да)

Другим вопросом мог бы быть такой:

        ?-  родитель( лиз,пат).

Система ответит

        no            (нет),

поскольку в программе ничего не говорится отом, является ли Лиз родителем Пат. Программаответит "нет" и на вопрос

        ?-  родитель( том,бен).

потому, что имя Бен в программе даже неупоминается.

Можно задавать и более интересные вопросы.Например:"Кто является родителем Лиз?"

       ?-  родитель( X, лиз).

На этот раз система ответит не просто "да"или "нет". Она скажет нам, каким должно бытьзначение X (ранее неизвестное), чтобывышеприведенное утверждение было истинным.Поэтому мы получим ответ:

        X  =  том

Вопрос "Кто дети Боба?" можно передатьпролог-системе в такой форме:

        ?-  родитель( боб, X).

В этом случае возможно несколько ответов.Сначала система сообщит первое решение:

        X  =  энн

Возможно, мы захотим увидеть и другие решения. Онашем желании мы можем сообщить системе (вомногих реализациях для этого надо набрать точкус запятой), и она найдет другой ответ:

        X  =  пат

Если мы потребуем дальнейших решений, системаответит "нет", поскольку все решенияисчерпаны.

Нашей программе можно задавать и более общиевопросы: "Кто чей родитель?" Приведем другуюформулировку этого вопроса:

        Найти X и Y такие, что X -родитель Y.

На Прологе это записывается так:

        ?-  родитель( X, Y).

Система будет по очереди находить все пары вида"родитель-ребенок". По мере того, как мыбудем требовать от системы новых решений, онибудут выводиться на экран одно за другим до техпор, пока все они не будут найдены. Ответывыводятся следующим образом:



19 из 538