Here it is:
I have added the “Rollback” action and the “Decision Lozenge” on redo. The latter seems really necessary to account for the ability to have deterministic and semi-deterministic predicates. Or is done differently?
Here it is:
I have added the “Rollback” action and the “Decision Lozenge” on redo. The latter seems really necessary to account for the ability to have deterministic and semi-deterministic predicates. Or is done differently?
SWI-Prolog always creates a choice point for a call when in debug mode.   That allows for retry.  It also kills LCO.   Often that is what you want during debugging.   These debug choicepoints are not shown by the A command (and also not by the graphical debugger).
Don’t forget that unification of an attributed variable can “insert” a new goal at various points in the diagram.

Also that there are non-backtracking predicates (nb_setval/2 et al) that are unaffected by “rollback” …
The following link is dead.
I found this one instead.