Exercise 4.64. Louis Reasoner mistakenly deletes the outranked-by rule (section 4.4.1) from the data base. When he realizes this, he quickly reinstalls it. Unfortunately, he makes a slight change in the rule, and types it in as (rule (outranked-by ?staff-person ?boss) (or (supervisor ?staff-person ?boss) (and (outranked-by ?middle-manager ?boss) (supervisor ?staff-person ?middle-manager)))) Just after Louis types this information into the system, DeWitt Aull comes by to find out who outranks Ben Bitdiddle. He issues the query (outranked-by (Bitdiddle Ben) ?who) After answering, the system goes into an infinite loop. Explain why. ———————————————————————————————————————————————————————————————————————— First ?staff-person and ?boss are bound to (Bitdiddle Ben) and ?who respectively. Then (supervisor ?staff-person ?boss) is matched in the context of this frame against the database, which finds Ben Bitdiddle's supervisor. Then to find the remaining answers from the other branch of the or expression, the interpreter will need to evaluate (outranked-by ?middle-manager ?boss) where ?middle-manager is not yet bound, and ?boss is bound to ?who. One of the bindings of this new subexpression will be to bind ?middle-manager to (Bitdiddle Ben), since nothing prevents this in the bindings and expressions already reached, and the system will then be in an infinite loop.