not(P):- call(P), !, fail.
not(P).

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

