%------------------------------------------------------------------------ % Program in which {p,q} should fail while {r} should succeed. % Needs negative simplification (for the answer of r). %------------------------------------------------------------------------ :- table p/0, q/0, r/0. p :- tnot(q), fail. p :- tnot(r), fail. q :- p. r :- tnot(p). %------------------------------------------------------------------------ test :- p, fail. test :- ( p -> ( tnot(p) -> writeln('p is undefined') ; writeln('p is true') ) ; writeln('p is false (OK)') ), ( q -> ( tnot(q) -> writeln('q is undefined') ; writeln('q is true') ) ; writeln('q is false (OK)') ), ( r -> ( tnot(r) -> writeln('r is undefined') ; writeln('r is true (OK)') ) ; writeln('r is false') ).