我试图从这个符号转换:
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] ).