Negation and don't-care
Outside not, the don’t-care _ behaves like a fresh, use-once variable: divisor(_, 6) is just divisor(X, 6) for a throwaway X.
Under not, that shortcut breaks: not p(_) and not p(X) are not the same.
not p(X)reads ∃X. ¬p(X) — “someXis not inp”. The ∃ sits outside the negation, soXmust be bound elsewhere; on its ownnot p(X)is unsafe.not p(_)reads ¬∃X. p(X) — “pholds of nothing”. The ∃ sits inside the negation.
So not p(_) is safe on its own: _ needs no binding. It succeeds exactly when p is empty.
The difference is quantifier scope: under
not, the don't-care's ∃ stays inside the negation, turning not p(_) into the test "is p empty?".