简单的Prolog程序

时间:2011-02-17 15:16:49

标签: prolog

我正在尝试自学一些Prolog,以便我能够确定它是否适合解决我遇到的问题。基本上问题是,给定一系列关于项目之间交互的规则,确定哪些项目可用,不可用,已选择和未被选中。

但即便是最简单的部分,我也失败了!我大大减少了问题的大小,只是为了看看我能做些什么。以下是我的知识库:

selected(A) :- implied(A).
implied(B) :- implies(A,B),selected(A).

implied(option_one).
implies(option_one,option_two).

当我查询时:

selected(X).

我只回来了option_two。

似乎有一些非常基本的东西,我在这里不理解,但在我看来,如果option_one也应该回到该列表中(特别是因为其中一个事实是'隐含的(option_one)'。 / p>

如果重要的话,我已经尝试使用P#和SWI-Prolog,它们会得到相同的结果。

1 个答案:

答案 0 :(得分:3)

当您第一次回答X = option_two时,请按; 以获得下一个回答

?- selected(X).
X = option_two ;
X = option_one.

或者你可以使用这样的smth来显示所有匹配的东西:

?- selected(X), writeln(X), fail.
option_two
option_one
false.