diff --git a/src/lib/si.pl b/src/lib/si.pl index 0e29c190..8a642289 100644 --- a/src/lib/si.pl +++ b/src/lib/si.pl @@ -40,6 +40,7 @@ term_si/1, chars_si/1, dif_si/2, + not_si/1, when_si/2]). :- use_module(library(lists)). @@ -100,6 +101,17 @@ dif_si(X, Y) :- ; throw(error(instantiation_error,dif_si/2)) ). +%% not_si(+Goal). +% +% True if Goal is not provable. Instantiation error if Goal is not +% ground. + +:- meta_predicate(not_si(0)). + +not_si(Goal) :- + term_si(Goal), + \+ Goal. + :- meta_predicate(when_si(+, 0)). %% when_si(Condition, Goal).