Let\'s consider the following Prolog program (from \"The Art of Prolog\"):
natural_number(0).
natural_number(s(X)) :- natural_number(X).
plus(X, 0, X) :- na
To us, it's apparent that the two clauses for plus are 'disjunctive'. We can say that because we know that 0 \= s(Y). But (I think) such analysis in general is prohibitive, and Prolog then consider such branch still to be proved: here a trace showing that the call (7) is still 'open' for alternatives after the first solution has been found.
