如何解释和Y1等系列。 。 。 ,Yn在prolog程序中

时间:2015-04-19 20:42:28

标签: prolog

对于我的练习,我有这个课程。考虑以下Prolog程序,它实现了从变量和函数符号plus构建的简单术语。

variable(x).
variable(y).
term(X) :- variable(X).
term(plus(X,Y)):- term(X), term(Y).

a)在Prolog中实现谓词uses(TERM, A),如果TERM是使用plus构建的术语,A是最外层plus的参数,则为真} TERM的符号,即term(TERM)为真,此外,TERM = plus(A,_)TERM = plus(_,A).

b)在Prolog中实现谓词contains(TERM, X),如果TERM是使用plus构建的术语且XTERM的子项,则为真。换句话说,如果contains(TERM, X)为真,或者如果uses(TERM, X)为真,则n > 0为真 有Y1,. . . ,Yn个元素• uses(TERM,Y1) • uses(Yn,X) • uses(Yi−1,Yi) for all i ∈ {2, . . . , n}. ,以便以下陈述成立:

?- contains(t1,t2)

如果t1t2是基础条款,请确保对所有查询uses(TERM, A) :- term(TERM), (TERM=plus(A,_); TERM=plus(_,A)).的评估终止。

到目前为止,我已经提出了以下解决方案:

a)TERM

我很困惑这个解决方案是否正确。在他们使用“moreover”的问题中,为此我将(TERM=plus(A,_); TERM=plus(_,A))保留在第一个括号中,如contains(TERM, X) :- uses(TERM, X). contains(TERM, X) :- uses(TERM, I), contains(I,X). 。这是对的吗?

b)

Y1,. . . ,Yn

我在这里很困惑我的答案是否正确。我不知道如何在Prolog中解释像{{1}}这样的系列。

0 个答案:

没有答案