如何在Prolog中创建此规则?

如何在Prolog中创建此规则?,prolog,Prolog,我需要在Prolog中创建此规则的帮助 问题是: 为Prolog创建事实和规则 汉堡是一种食物 三明治是一种食物 比萨饼是一种食物 三明治是午餐 比萨饼是晚餐 每一种食物都是一顿饭,如果它是一种食物,那么任何东西都是一顿饭 这不是家庭作业,这是我自己的作业,我想知道如何正确地创建这个规则 food(burger). food(sandwich). lunch(sandwich). dinner(pizza). meal(X) :- food(X) ; ... 首先,把英语句子翻译成一阶

我需要在Prolog中创建此规则的帮助

问题是: 为Prolog创建事实和规则

  • 汉堡是一种食物
  • 三明治是一种食物
  • 比萨饼是一种食物
  • 三明治是午餐
  • 比萨饼是晚餐
  • 每一种食物都是一顿饭,如果它是一种食物,那么任何东西都是一顿饭
这不是家庭作业,这是我自己的作业,我想知道如何正确地创建这个规则

food(burger).
food(sandwich).
lunch(sandwich).

dinner(pizza).

meal(X) :- food(X) ; ...

首先,把英语句子翻译成一阶逻辑句子

every food is a meal
=> forall X (food(X) -> meal(X))
然后,将一阶逻辑句翻译成Prolog Horn子句:

meal(X) :- food(X).
meal(X) :- food(X).
这是多余的,可以只写一次。

每种食物都是一餐,如果是食物,任何东西都是一餐。说同样的话。
meal(X) :- food(X).
meal(X) :- food(X).