| OCR Text |
Show 16 2.3 Retraction. Stallman and Sussman (6) and Steele and Sussman [2] use retraction, a method similar to dependency propagation, to satisfy a network of constraints. Each time a network is satisfied, a record is kept of how values in the network were deduced by maintaining dependency links from the premises to the deduced value. A premise is a value used to compute another value. Every value in the network has a (possibly empty) set of premises and a (possibly empty) set of dependents. When computing a value V, the satisfaction system rrust ensure that the change is propagated to V's dependent values. Since the change to V invalidates the relations between v and its premises the change must also be propagated to V's premises. H the system failed to account for V's premises then it would not ensure that all the constraints between V and its premises and dependents are satisfied. In retraction, a variable can be bound to a value or unbound. When binding an unbound variable, dependency links are created from the variable's premises to the newly bound variable. When rebinding a bound variable, we must first unbind it, or remove the dependency links from its premises. Unbinding a variable is called retracting the variable. A variable with no premises is called an ultimate premise. When a variable with dependents is retracted, its dependents are retracted also. H we change an ultimate premise, then we retract the variable and its dependents. The variable and its dependents are now unbound. Constraint satisfaction occurs by propagating the new value to the unbound variables. When changing a variable which is not an ultimate premise, then things are harder. In figure 6, c was deduced from a and band e was deduced from c and d. A and bare ultimate premises of c, and a, band dare the ultimate premises of e. If we choose to change an ultimate premise such as d we retract it first as In figure 7. Retracting d causes e to be retracted also. Now we can propagate from d to e. E is still premised on c and d so the dependency link structure remains the same, as in figure 6. H instead we choose to change c, which is not an ultimate premi$e, just retracting c and e will not satisfy the network. Either a orb must also be retracted. When a variable which is not an ultimate premise is retracted, we rrust find and retract one of its ultimate premises |