Go backward to Other no-change impasses.
Go up to Responding to impasses.

Constraint-failure impasses
---------------------------

*Necessity preferences* (require and prohibit) encode knowledge that a
certain object must, or must not, be selected if the goal is to be achieved.
When there are conflicting necessity preferences for a given context slot, a
constraint-failure impasse arises.  There is no way to override a necessity
preference by adding more preferences.  This impasse can be resolved only by
either causing some of the preferences to retract, or by modifying a decision
higher in the context.

Because necessity preferences usually arise from domain-dependent knowledge,
the default response can only be to modify the next higher decision in the
context stack.  When a constraint-failure impasse arises, default productions
create reject and reconsider preferences for the context object in the slot
immediately above the one with the impasse.  This is the minimal change to
the context that guarantees to end the constraint-failure impasse.  If there
is a constraint-failure impasse for the top problem space, Soar halts because
no further progress is possible.