Cut + Fail achieve Negation
Fail is a system predicate that fails.
_ is a wild-card variable.
The first rule attempts to satisfy X . If X fails, then the second rule succeeds, because _ unifies with any term.
If X succeeds, then the fail predicate forces failure, and the cut prevents consideration of the second rule.
Note that if not ( X ) succeeds, it merely means that X is not provable according to the database.
X may or may not be actually false.