% Predicates for simulating logical formula false:-!,fail. % The boolean predicate boolean(true). boolean(false). boolean(P,Q):-boolean(P),boolean(Q). boolean(P,Q,R):-boolean(P,Q), boolean(R). % definition of implication. :-op(600,xfx,=>). false=>true. false=>false. true=>true. % definition of logical equivalence :-op(600,xfx,iff). true iff true. false iff false. :-op(600, yfx, and). true and true. :-op(600, yfx, or). true or false. false or true. true or true. pbool(P):-P, write('true '), ! ; write('false '). truthtable(P):-boolean(P), write(P), nl,fail. truthtable(P,Q):-boolean(P),pbool(P), write(Q), nl,fail. truthtable(P,Q,R):-boolean(P),boolean(Q), pbool(P),pbool(Q), write(R), nl,fail. truthtable(P,Q,R,S):-boolean(P),boolean(Q), pbool(P),pbool(Q),pbool(R), write(S), nl,fail.