4.2.8 Summary of Control Predicates
- :P
,
:Q ISO - prove P and Q
- :P
;
:Q ISO - prove P or Q
- +M
:
:P ISO - call P in module M
- :P
->
:Q;
:R ISO - if P succeeds, prove Q; if not, prove R
- :P
->
:Q ISO - if P succeeds, prove Q; if not, fail
!
ISO- cut any choices taken in the current procedure
\+
:P ISO- goal P is not provable
- ?X
^
:P - there exists an X such that P is provable (used in
setof/3
and bagof/3
)
block
:P declaration- declaration that predicates specified by P should
block until sufficiently instantiated
call(
:P)
ISOcall(
:P,...)
- execute P or P
(...)
call_cleanup(
:Goal,
:Cleanup)
- Executes the procedure call Goal. When Goal succeeds
determinately, is cut, fails, or raises an exception,
Cleanup is executed.
call_residue_vars(
:Goal,
?Vars)
- Executes the procedure call Goal. Vars is unified
with the list of new variables created during the call that remain
unbound and have blocked goals or attributes attached to them.
fail
ISO- fail (start backtracking)
false
- same as fail
freeze(
+Var,
:Goal)
- Blocks Goal until
nonvar(
Var)
holds.
if(
:P,
:Q,
:R)
- for each solution of P that succeeds, prove Q; if none, prove R
once(
:P)
ISO- Find the first solution, if any, of goal P.
otherwise
- same as true
repeat
ISO- succeed repeatedly on backtracking
true
ISO- succeed
when(
+Cond,
:Goal)
- block Goal until Cond holds
Send feedback on this subject.