Hello everyone,

I’m a complete beginner in the domain of logic programming, so probably my question will sound weird for experts. However, I’m interested in how this idea would be expressed in idiomatic Prolog.

Let’s assume, I define some facts like:

f(a, b).

f(a, c).

f(a, d).

f(a, e).

If I get the semantic model of Prolog right, facts are true by their very definition. Now let’s assume, I want to model some situation, where the combinations (a, d) or (a, e) are not allowed, since, for whatever reason, only a and b / a and c are compatible. How can I find out, that f(a, d) and f(a, e) are stated erroneously?

Coming mainly from statically typed functional languages, I’m probably too much thinking about value range limitations strictly enforced by types to find an idiomatic solution in Prolog. Or probably the idea of “wrong facts” cannot be expressed in Prolog?

Thanks very much in advance for any hints!

Kind regards,

Thomas