A major attraction of (pure) Prolog is that you can easily reorder goals and use all-solutions predicates to try different search strategies. Further, constraints like dif/2 help considerably to prune the search space. So yes, it can be brute force, but is often better than that.
Yes I agree. Still, the key insight of constraints like dif/2 may also be applicable in this concrete case to limit the candidates already before and even during the search. It is this automatic pruning that makes logic programming with constraints so fast for many combinatorial applications. You are right of course that it may end up in brute force though, if there is nothing to prune.
Popular field when I was in uni. IFP was popular-ish 10 years later. Not sure if anyone is still doing much now that computers are much faster, but I always liked it.
Smalltalk environments have used this as a fancy docsearch for ages now, I believe - Pharo has one. It's actually pretty nice for beginners to help them learn a standard library. It's unfortunate that the search space is probably to big for some of the less trivial examples you'd want (e.g.
the trickier Clojure collection functions).
https://youtu.be/OyfBQmvr2Hc?t=1h6m35s