0
我正在嘗試一個定理證明程序。但規則4似乎執行不力。序言程序出全局堆棧錯誤
% delete
del(X, [X | Tail], Tail).
del(X, [Y | Tail], [Y | Tail1]) :-
del(X, Tail, Tail1).
% remove
remove(X, Y, L1, L2) :-
del(X, L1, L3),
del(Y, L3, L2).
% prove
prove(true).
prove([L1 seq L2]) :-
seq(L1, L2),
!.
% Rule 1
seq(L1, L2) :-
member(X, L1),
member(X, L2),
!.
% Rule 4
seq(L1, L2) :-
Z = or(X, Y),
del(Z, L2, L4),
remove(X, Y, L3, L4),
seq(L1, L3).
prove([[p] seq [q]]).
- 生成錯誤,這是正確的。
prove([[p] seq [q, r]]).
- 生成錯誤,正確。
但prove([[p] seq [q or r]]).
- 超出全局堆棧。然後我認爲規則4有什麼問題。
任何想法如何解決這個問題?非常感謝。
您的整個程序,請嗎?我只是看到你需要'seq'的運算符聲明 – false 2014-08-30 17:19:19