solve(true):- !. solve(\+P):- !, \+solve(P). solve( (P, Q) ) :- !, solve(P), solve(Q). solve(kwyjibo(P)):- P=[H|T],!,name(S,P),write(S). solve(kwyjibo(P)):- !,write(P). solve( P ) :- clause(P, Body), solve(Body). %Note: the 'write' isn't 'pure' prolog/logic %Also note that generating solutions (rather than testing) will be... wonky. %Dummy Facts: person(earl). person(moo). person(mindy). %So, solve(person(moo)) succeeds, % solve(person(foxwell)) fails, % solve(person(X)) solves for X. % %solve(person(earl),person(mindy)) will NOT succeed, %however %solve((person(earl),person(mindy)) *will*!