dfs(X, [X]) :- goal(X). dfs(X, [X | L]) :- successor(X,S),dfs(S, L). goal(g). successor(s, a). successor(s, b). successor(a, b). successor(a, c). successor(b, c). successor(b, d). successor(c, d). successor(c, g).