I have to find a logically consistent subset of multiple fact sets (databases). Is there a logic programming language with built-in facilities to do this? If not, are there logic programming languages allowing to operate on multiple fact databases at the same time?
For example, I could use an extra argument for each fact to denote, which database it belongs to, e.g.:
class(1, elephant, mammal)
class(2, elephant, mammal)
class(3, elephant, fish)
In this case, databases 1
and 2
are consistent. Database 3
is not consistent with the other ones. I'm looking for native language mechanism to avoid implementation "tricks" like this example.\
This question can be rephrased as a consistency between different rule sets. The example above would look like this:
is(x, mammal) :- is(x, elephant) /* rule set #1 */
is(x, mammal) :- is(x, elephant) /* rule set #2 */
is(x, fish) :- is(x, elephant) /* rule set #3 */