43 ','
:env_choice_point(
CP),
45 '$call'(
X,
CP,(
X,
Y),
M),
46 '$call'(
Y,
CP,(
X,
Y),
M).
61 ';'
:env_choice_point(
CP),
65 '$call'(
A,
CP,(
X->A;Y),
M)
67 '$call'(
Y,
CP,(
X->A;Y),
M)
71 '$current_module'
:env_choice_point(
CP),
76 '$call'(
A,
CP,(
X*->A;Y),
M)
78 '$call'(
Y,
CP,(
X*->A;Y),
M)
81 ';'
:env_choice_point(
CP),
83 (
'$call'(
X,
CP,(
X;Y),
M)
; '$call'(
Y,
CP,(
X;Y),
M) ).
87 '|'
:env_choice_point(
CP),
89 (
'$call'(
X,
CP,(
X|Y),
M)
; '$call'(
Y,
CP,(
X|Y),
M) ).
141 '->'
:env_choice_point(
CP),
142 '$current_module'(
M),
143 (
'$call'(
X,
CP,(
X->Y),
M)
-> '$call'(
Y,
CP,(
X->Y),
M) ).
146*->*->/** @pred 0:Condition 0:Action is iso
148This construct implements the so-called <em>soft-cut</em>. The control is
150 + If _Condition_ succeeds at least once, the
151semantics is the same as ( _Condition_, _Action_).
154 _Condition_ does not succeed, the semantics is that of (\\+
155 _Condition_, _Else_).
157 In other words, if _Condition_
158succeeds at least once, simply behave as the conjunction of
159 _Condition_ and _Action_, otherwise execute _Else_.
161The construct _A B_, i.e. without an _Else_ branch, is
162translated as the normal conjunction _A_, _B_.
206 :parent_choice_point(
CP),
207 parent_choice_point
:cut_at(
0,
CP).
235\+(
G)
:- \+ '$execute'(
G).
237not(
G)
:- \+ '$execute'(
G).
267 '$execute'
:- '$repeat'.
278 '$repeat' :- '$repeat'.
335 '$execute'(
G),
'$execute'.
338(
:- G)
:- '$execute'(
G),
'$execute'.
340(
?- G)
:- '$execute'(
G).
342'$$!'(
CP)
:- '$cut_by'(
CP).
347
current_choice_point( -CP )