【发布时间】:2011-01-07 13:15:56
【问题描述】:
我正在尝试从这个符号转换:
A and (B or C) equ A and B or A and C)
到标准逻辑符号,例如and(A,B), or(A,B), neg(A)...
我认为我最好的方法是使用 DCG(我提出这个问题是因为我想练习 DCG)。任何想法为什么我的转换不起作用?到目前为止,我刚刚写了析取和得到变量的情况。我想要的答案应该是 or(atom(X),atom(Y))。
convert1(atom(X)) --> [X], {var(X)},!.
convert1(or(X,Y)) --> convert1(X), [or], convert1(Y).
test_convert1( F ) :-
phrase( convert1( F ), [X, or, Y] ).
【问题讨论】: