X ; Y
X
or Y
. Try X
first; if it fails (possibly after being backtracked into), try Y
.
(X -> Y)
X
, then try Y
, otherwise fail. Y
will not be backtracked into.
(X -> Y ; Z)
X
, then try Y
, else try Z
. X
will not be backtracked into.
not X
\+X
or not(X)
) Succeed only when X fails.
true
repeat
fail
!
true
, but cannot be backtracked past, and prevents any other clauses of the predicate it occurs in from being tried.
abort
|
|