cut and not
We can write the not predicate usinga cut operator:not(P) :- P, !, fail.not(P).
Uses built-in fail predicate that always fails
Cut operator prevents the search algorithm from backtracking to use the second rule to satisfy P when the first rule already failed
2nd rule applies only if P cannot be proven