在Prolog中构造XOR/3

在Prolog中构造XOR/3,prolog,xor,Prolog,Xor,我有以下关于/3命题逻辑的子句 statement(false). statement(true). not(false, true). not(true, false). and(false, false, false). and(false, true, false). and(true, false, false). and(true, true, true). or(false, false, false). or(false, true, true). o

我有以下关于/3命题逻辑的子句

statement(false).
statement(true).

not(false, true).
not(true,   false).

and(false, false, false).
and(false, true,   false).
and(true,   false, false).
and(true,   true,   true).

or(false, false, false).
or(false, true,   true).
or(true,   false, true).
or(true,   true,   true).

implying(X, Y, Z) :- not(X, Not_X) , or(Not_X, Y, Z).
如何添加XOR子句?

这应该可以

xor(false, false, false).
xor(false, true,  true).
xor(true,  false, true).
xor(true,  true,  false).
您可以使用以下选项之一:选择第一个(p∨ Q)∧ (P∧ Q) ,

你会得到:

?- forall(xor(P,Q,R),writeln(xor(P,Q,R))).
xor(false,false,false)
xor(false,true,true)
xor(true,false,true)
xor(true,true,false)
true.
?- forall(xor(P,Q,R),writeln(xor(P,Q,R))).
xor(false,false,false)
xor(false,true,true)
xor(true,false,true)
xor(true,true,false)
true.