stopÏaP&
(stoppable(P))0 = P0 È {stop} &
SKIP, x=stop
(stoppable(P))/<x>= {
stoppable(P/x), x ≠ stop
, - .
reset.
resettable(P). reset ÏaP ( reset P). resettable(P) , P :
(1) reset Î resettable(P);
(2) reset resettable(P);
(3) reset resettable(P) .
: resettable(P)/<a, b, reset> = resettable(P)
.2. resettable(P).
().
resetÏaP&
resettable(P) =start(P,P),
(start(P,Q))0 = P0 È {reset} &
start(Q,Q), x=reset
(start(P,Q))/<x>= {
start(P/x,Q), x ≠ reset
back.
backtrackable(P). back ÏaP ( back P). backtrackable(P) , P :
(1) back Î backtrackable(P);
(2) back
backtrackable(P);
(3) back backtrackable(P)
- .
: backtrackable(P) / <a, b, back> = backtrackable(P) / < a >
.3. backtrackable(P).
().
backÏaP&
backtrackable(P) =recover(P,P),
(recover(P,Q))0 = P0 È {back} &
Q, x=back
(recover(P,Q))/<x>= {
recover(P/x, recover(P,Q)), x ≠ back
.
on off coroutine(P).
(aP È aQ) ∩ {off,on} = Æ. coroutine(P,Q) :
(1) coroutine(P,Q) P,
(1.1) off , Q,
(1.2) on P ;
(2) coroutine(P,Q) :
(2.1) off o P Q, Q ;
(2.2) . (1.2).
coroutine(P,Q) :
.4. coroutine(P,Q).
, , ...