Правило уточнения плана из системы AL3 для решения шахматных задач (Bratko 1982)



Рисунок 14. 4.  Правило уточнения плана из системы  AL3
для решения шахматных задач  (Bratko  1982).

Условие - это набор простых утверждений, соединенных между собой операторами  и  и  или.   Мы также разрешим в части условия использовать оператор  не,  хотя и с некоторыми оговорками. При надлежащем прологовском определении этих операторов (как это сделано на Рисунок 14.5) правила станут синтаксически верными предложениями Пролога. Заметим, что оператор  и  связывает операнды сильнее, чем  или,  что соответствует обычным соглашениям.

line();

% Небольшая база знаний для идентификации животных

:- ор( 100, xfx, [имеет, 'кормит детенышей',
                                'не может', ест, откладывает, это]).

:- ор( 100, xf, [плавает, летает, хорошо]).

прав1:        если
                        Животное имеет шерсть
                        или
                        Животное 'кормит детенышей' молоком
                   то
                        Животное это млекопитающее.
прав2:        если
                        Животное имеет перья


                        или
                        Животное летает и
                        Животное откладывает яйца
                   то
                        Животное это птица.
прав3:        если
                        Животное это млекопитающее и
                        ( Животное ест мясо
                        или
                        Животное имеет 'острые зубы' и
                        Животное имеет когти и
                        Животное имеет
                            'глаза, направленные вперед' )
                   то
                        Животное это хищник.
прав4:        если
                        Животное это хищник и
                        Животное имеет
                                'рыжевато-коричневый цвет' и
                        Животное имеет 'темные пятна'
                   то
                        Животное это гепард.
прав5:        если
                        Животное это хищник и
                        Животное имеет
                                'рыжевато-коричневый цвет' и
                        Животное имеет 'черные полосы'
                   то
                        Животное это тигр,
прав6:        если
                        Животное это птица и
                        Животное 'не может' летать и
                        Животное плавает
                   то
                        Животное это пингвин,
прав7:        если
                        Животное это птица и
                        Животное летает хорошо
                   то
                        Животное это альбатрос.

факт:  X это животное :-
        принадлежит( X, [гепард, тигр, пингвин, альбатрос]).

можно_спросить( _ 'кормит детенышей'_,
        'Животное' 'кормит детенышей' 'Чем').

можно_спросить( _ летает, 'Животное' летает).

можно_спросить( _ откладывает яйца,
        'Животное' откладывает яйца).

можно_спросить( _ ест _, 'Животное' ест 'Что').

можно_спросить( _ имеет _,'Животное' имеет 'Нечто').

можно_спросить( _ 'не может' _,
        'Животное' 'не может' 'Что делать').

можно_спросить( _ плавает, 'Животное' плавает).

можно_спросить( _ летает хорошо,
        'Животное' летает хорошо).

line();

Содержание раздела