我在prolog中写了一个程序,我有下一个代码:
isa(dumbo, smallelephant).
isa(cuatropataspequeñas, extremidad).
isa(cuatropatas, extremidad).
isa(trompa, cabeza).
isa(smallelephant, elephant).
isa(elephant, animal).
subclass(Class, Sup) :- isa(Class, Sup).
subclass(Class, Sup) :- isa(Class, Midclass), subclass(Midclass, Sup).
partOf(head, animal).
partOf(tip, animal).
partOf(t1, smallelephant).
partOf(t2, elephant).
partOf(h1, elephant).
hasPart(Object, Part) :- partOf(Part, Object).
hasPart(Object, Part) :- subclass(Object, Class), hasPart(Class, Part), not(is(_,Part)).
根据这些事实和规则,我在执行“hasPart(dumbo,X)”时获得了结果。是下一个:
?- hasPart(dumbo, X).
X = t1;
X = t2;
X = h1;
X = t2;
X = h1;
false.
但我只想得到t1,t2和t3。我怎么能这样做?
非常感谢你!