我需要一个谓词elements(X,L)
,其中X是类似neg X
,X and Y
的操作,并返回一个列表L,其中包含操作中的所有元素,如[X,Y]
。< / p>
我已经有了这些:
elements(neg X, [X]).
elements(X and Y, [X,Y]).
elements(X or Y, [X,Y]).
elements(X imp Y, [X,Y]).
但我不知道如何使其适用于X imp (Y or Z)
等复杂的操作。
答案 0 :(得分:2)
我不擅长选择运算符优先级,但这就是我输入的内容:
:- op(100, fx, neg).
:- op(200, xfy, and).
:- op(200, xfy, or).
:- op(300, xfy, imp).
elements(Term, Variables) :- term_variables(Term, Variables).
这似乎符合你的指定:
?- elements(X imp (Y and Z), Q).
Q = [X, Y, Z].
你的问题还有更多吗?