For this several notions are introduced. Logical variable is called "principal" if it is used in principal occurrences and at some point during evaluation is unified or bound. Principal occurrence is called "volatile" if it uses principal logicals. PrincipalObserverDispatcher's task is to track volatile occurrences by enabling uni observers on all free logicals in principal occ-s. RewindVolatileOccurrencesStage then on events of incremental usage of volatile occurrences (e.g. match on it, or continued activation) resets journal cursor to the position of initial occurrence activation, where it can be re-evaluated with fresh, unaffected, logicals. It's the only stage that goes backwards in journal. So in this way unification is incrementally cancelled. link to MPSCR-62 (docs) |
||
|---|---|---|
| .. | ||
| src | ||
| test | ||
| Test.iml | ||
| pom.xml | ||