Я проверяю, подключен ли граф и почему-то становится ложным, когда он должен быть правдой.Проверка, подключен ли граф.
allConnected([]).
allConnected(A|L) :- checkConnect(A,L), allConnected(L).
checkConnect([],[]).
checkConnect(X, Head|Y) :- isConnected(X,Head), checkConnect(X,Y).
isConnected(X,Y) :- edge(X,Y); edge(Y,X).
edge(a,b).
edge(b,c).
edge(c,a).
Что я делаю для моего предиката проверяет, если каждый узел в allConnected ([а, Ь, с]) связно. Я должен быть правдой, но не могу определить свою ошибку, я пробовал использовать трассировку, но это не помогает.
изменения в 'allConnected ([A | L]): - ... ', иначе он никогда не будет соответствовать. После этого он будет зависеть навсегда :) – CapelliC
@CapelliC: Эта проблема специфична для SWI. Только SWI разрешает операторам более 1000 аргументов. – false