]> Repositorios git - scryer-prolog.git/commitdiff
ADDED: not_si/1
authorMarkus Triska <[email protected]>
Sun, 18 Jan 2026 08:57:37 +0000 (09:57 +0100)
committerMarkus Triska <[email protected]>
Sun, 18 Jan 2026 08:58:31 +0000 (09:58 +0100)
For a recent example that would benefit from this, see "Prolog Basics
Explained with Pokémon" by @alexpetros:

    https://unplannedobsolescence.com/blog/prolog-basics-pokemon/

Thank you a lot!

src/lib/si.pl

index 0e29c190d0879b108406733ba45015175a2daf64..8a64228997fe3397f8184b976a6dffbe180ef143 100644 (file)
@@ -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).