not(P):- call(P), !, fail. not(P). not2(P) :- call(P), assert(why(P)), !, fail. not2(P).