3 + 5 = X?
X = 8
3 + X = 8?
X = 5
5 + X = 8?
X = 3
In most programming languages, you can't infer a parameter by specifying a result.
(Though that's not strictly what's going on here, either)
You could further say something like X + Y = 8 and get
X = 0, Y = 8
X = 1, Y = 7
etc. for some definitions.
Which is, as the OP was getting at, sometimes incredibly useful.
If you're asking "is there anything in the wild that I would know of and uses this?" then the answer is probably "no".
Most of the prolog projects I've ever seen are pretty inbred; implementing compilers or interpreters, hooks for another language-type things. Though it must be said that I'm not deeply embedded in the prolog community.
It means the tools you write for one use can be used completely differently than you intended, and in ways that continue to give you those "whoa!" moments.
An extremely (imho) good source for information on logic programs and how they are implemented is here: http://www.ida.liu.se/~ulfni/lpp/
A more practical guide to actually compiling these logic programs efficiently (or as efficient as they can be) is documented in Modern Compiler Design by Dick Grune et al. They actually describe the workings of a somewhat simplified workings of a Warren Abstract Machine (WAM) which can (to my knowledge) now approach to within an order of magnitude of standard programming languages. Pretty amazing when the generality of logic programming is considered. Details on the WAM here: http://en.wikipedia.org/wiki/Warren_Abstract_Machine