私はこの表記から変換しようとしています:
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] ).