Результаты не сравниваются с данными фактами

Используя пролог, создайте код для получения некоторых сравниваемых выходных данных, но некоторые выходные данные не работают должным образом кажется, это не сравнивать с фактами. здесь код

fact(Fact) :- Fact,!.
fact(Fact):-Fact = ..[Rel, Arg1, Arg2],isa(Arg1, SuperArg).
SuperFact =..[Rel,SuperArg,Arg2].
covers(animal,skin).
isa(fish,animal).
isa(bird,animal).
isa(mammal,animal).
isa(shark,fish).
isa(salmon,fish).
isa(parrot,bird).
isa(penguin,bird).
speacial_organ(fish,gills).
travel(fish,swim).
birth(bird,lay_eggs).
special_organ(bird,wings).
travel(bird,fly).
birth(fish,lay_eggs).
birth(mammal,not_lay_eggs).
birth(shark,not_lay_eggs).
nature(shark,dangerous).
food(salmon,delicacy).
colour(parrot,green).
travel(penguin,walk).

это вопросы, которые я хочу найти ответы из этой программы

• Может ли попугай летать?
• Какого цвета попугай?
• Есть ли у попугаев шкура?
• Акулы опасны?

1 ответ

Решение

Шаг первый: определить рефлексивное транзитивное замыкание isa/2 (названный is_a/2 В следующих).

иша (рыба, животные).
иша (птицы, животные).
иша (млекопитающее, животное).
иша (акула, рыба).
иша (лосось, рыба).
иша (попугай, птица).
иша (пингвин, птица).

is_a(X, Y):-
   закрытие0(isa, X, Y).

Шаг второй: укажите остальные факты (сгруппированные по показателю предиката).

Крышки (животные, кожа).

special_organ (рыба, жабры).
special_organ (птица, крылья).

путешествия (рыба, плавание).
путешествия (птица, муха).
путешествия (пингвин, прогулка).

рождение (птицы, lay_eggs).
рождение (рыба, lay_eggs).
рождение (млекопитающее, not_lay_eggs).
рождение (акулы, not_lay_eggs).

природа (акулы, опасно).

еда (лосось, слабость).

цвет (попугай, зеленый).

Шаг третий: давайте зададим несколько вопросов!

  • Могут ли летать попугаи?

    ? - is_a (попугай, X), путешествие (X, полет).
       X = птица; ложный.
  • Какого цвета попугаи?

    ? - is_a (попугай, X), цвет (X, цвет).
       Цвет = зеленый, X = попугай; ложный.
  • У попугаев есть кожа?

    ? - is_a (попугай, X), обложки (X, кожа).
       X = животное; ложный.
  • Акулы опасны?

    ? - is_a (акула, X), природа (X, опасно).
       X = акула; ложный.
Другие вопросы по тегам