如何在prolog中用DCG进行算术运算

如何在prolog中用DCG进行算术运算,prolog,operators,dcg,clpfd,Prolog,Operators,Dcg,Clpfd,对于上面的代码,如果X=1,我将得到 verb_phrase(X,P)--> trans_verb(X,X+1,P1), noun_phrase(X+1,P1,P). “…”表示不重要的代码。 但是我真的想得到2而不是1+1。 有人能告诉我怎么做吗?如果你在对整数进行推理,最干净的方法是使用CLP(FD)约束进行算术运算 您可以在DCGs中使用{}/1来嵌入Prolog目标。例如: (...1+1...). 是否缺少一个X#>0? :- use_module(library(clpfd

对于上面的代码,如果X=1,我将得到

verb_phrase(X,P)--> trans_verb(X,X+1,P1), noun_phrase(X+1,P1,P).
“…”表示不重要的代码。 但是我真的想得到2而不是1+1。
有人能告诉我怎么做吗?

如果你在对整数进行推理,最干净的方法是使用CLP(FD)约束进行算术运算

您可以在DCGs中使用
{}/1
来嵌入Prolog目标。例如:

(...1+1...).
是否缺少一个
X#>0
:- use_module(library(clpfd)).

verb_phrase(X0, P)--> { X #= X0 + 1 }, trans_verb(X0, X, P1), noun_phrase(X, P1, P).