Doesn't loop with an impossible goal under BFS:
?- solve(bs,foo,X,Y,Z). .. no
Doesn't loop under DFS:
?- solve(bs,ls,X,Z). bs gp bs cc gp ls X = 6, Z = [ls,cc,gp,bs] ? ;