To check whether a call Goal succeeds without binding variables, the call not not Goal can be used. Note that !/0 does not cut through not/1.
Success: not fail . not 1 == 2 . not X==1 . not not X = 1. % does not bind X Fail: not(X=1). not(true). not(3 == 3).