There is no clear, generally accepted opinion about these concepts. However, they are usually based more on the observed answers, rather than on the number of decisions. In certain contexts, concepts are very related to implementation. Uncertain may mean: leaves the selection point open. And sometimes certain means: they never even create a point of choice.
Answers and Decisions
To see the difference, consider the goal length(L, 1) . How many solutions does he have? L = [a] is one, L = [23] other ... but all these solutions are compactly represented using one answer substitution: L = [_] , which, therefore, contains infinitely many solutions. In any case, in all the implementations that I know of, length(L, 1) is the defining goal.
Now consider the goal of repeat , which has exactly one solution, but infinitely many answers. This goal is considered vague.
If you are interested in limitations, everything becomes even more developed. In library(clpfd) target X #> Y, Y #> X has no solution, but another answer. Combine this with repeat : infinitely many answers and no solution.
In addition, the append(Xs, Ys, []) target append(Xs, Ys, []) has exactly one solution, as well as exactly one answer, however, it is considered undefined in many implementations, since in these implementations it leaves an open choice point.
In an ideal implementation, there would be no answers without solutions (other than false ), and there would be no determinism if there were more than one answer. But then all this is in most cases insoluble.
So, whenever you use these concepts, make sure at what level things are meant. Rather, I will explicitly say: multiple answers, multiple solutions, do not leave (unnecessary) the choice point open.