如何在Prolog中创建此规则?

时间:2019-04-29 14:33:34

标签: prolog

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

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

  • 汉堡是一种食物。
  • 三明治是食物。
  • 披萨是食物。
  • 三明治是午餐。
  • 比萨是晚餐。
  • 每种食物都是一顿饭,或者如果一切都是食物,那一切都是一顿饭。

ps。这不是家庭作业,这是我自己的任务,我想知道如何正确创建此规则。

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

dinner(pizza).

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

1 个答案:

答案 0 :(得分:1)

首先,将英语句子翻译为一阶逻辑句子。

every food is a meal
=> forall X (food(X) -> meal(X))
anything is a meal if it is a food
=> if it is a food, it is a meal
=> if X is a food, X is a meal
=> forall X (food(X) -> meal(X))

然后,将一阶逻辑语句转换为Prolog Horn子句:

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

这是多余的,只能写一次。