A single constraint can remove values that cannot participate in any solution to that constraint. For A<B, the largest current value for A and the smallest current value for B are incompatible with the inequality. The diagram marks only the values pruned by this exact application, so the visual story is local and auditable.

highlighted = computed this step

A loses the largest slot

A loses 3. Bound-consistency for A<B says A cannot sit at the top of its current domain when B must be larger. Why: if A used that endpoint, no larger value would remain for B in this step's domain.

A3A\not=3
apply A before B123A123B123C123

B loses the smallest slot

B loses 1. The same constraint also works from the other side: B cannot sit at the bottom if A must be smaller. Why: that endpoint would leave no legal supporting value for A.

B1B\not=1
apply A before B123A123B123C123

Reduced domains

After A<B, the domains are A{1,2} B{2,3} C{1,2,3}. Interpretation: the grid is smaller, but it is not solved yet. Why: propagation keeps only values that can still satisfy the fired constraint, then waits for later constraints to continue the work.

A<B prunes endpoints\text{A<B prunes endpoints}
apply A before B123A123B123C123

Diagram note

Just-pruned cells are the values removed by this exact constraint application; remaining candidate cells are still possible. Propagation is sound here: it erases only values that cannot satisfy the local precedence relation. The important distinction is that pruning is not choosing a value; it is only deleting values that have lost support. Pixel positions are rounded for layout; every number shown is exact.

a constraint removes impossible values\text{a constraint removes impossible values}
apply A before B123A123B123C123