一阶逻辑和序言

时间:2012-03-15 23:26:54

标签: prolog first-order-logic

我试图了解prolog如何代表一阶逻辑。我怎样才能在动物类型列表中代表:

狗(点)。

猫(nyny)。

蝇(哈里)

所有动物都是哺乳动物或昆虫?

2 个答案:

答案 0 :(得分:4)

我认为你所指的只是以下内容:

mammal(X) :- dog(X).
mammal(X) :- cat(X).
insect(X) :- fly(X).

也就是说,哺乳动物要么是狗,要么是猫。您必须明确指定属于该哺乳动物类别的类别。昆虫一样。

将此与您的一阶逻辑问题相关联,mammal的第一个条目将为:对于每个X,其中X是狗,X也是哺乳动物(对猫而言),依此类推。 / p>

答案 1 :(得分:4)

我延长了@ Diego Sevilla的答案,包括动物是什么的原始问题,并添加了执行。

% Your original facts
dog(spot).
cat(nyny).
fly(harry).

% @ Diego Sevilla's predicates
mammal(X) :- dog(X).
mammal(X) :- cat(X).
insect(X) :- fly(X).

% Defining what an animal is - either insect or (;) mammal
animal(X) :- insect(X) ; mammal(X). 

% Running it, to get the names of all animals
?- animal(X).
X = harry ;
X = spot ;
X = nyny.