A singleton domain is a strong signal because it turns uncertainty into a forced value. Once B is forced to one value, A<B becomes tighter and removes another value from A. This is the cascade that makes propagation useful before search: one forced domain can make another domain forced.

highlighted = computed this step

B is singleton

B has the singleton value 2. A singleton domain means the value is forced unless a later contradiction appears. Why: once B has only one candidate, the neighboring A<B constraint can compare A against that exact remaining value.

B={2}B=\{2\}
reapply A before B123A123B123C123

A loses one more value

Reapplying A<B removes 2 from A. This is the cascade effect: a forced value in one domain removes support from a neighbor. Why: A must be strictly below the singleton value for B.

A2A\not=2
reapply A before B123A123B123C123

The cascade closes

The domains are now A{1} B{2} C{3}. Interpretation: no global search choice was made; repeated local reasoning forced every variable. Why: the precedence chain leaves only one supported candidate in each domain. This is why singleton domains matter: they turn a relation into a concrete bound for the next relation.

singleton domains close the chain\text{singleton domains close the chain}
reapply A before B123A123B123C123

Diagram note

Solved cells are singleton values; just-pruned cells are the values removed by this final application. This is still propagation, not search: the result comes from deterministic domain reduction. The forced value is visible because the domain has collapsed to one candidate. Pixel positions are rounded for layout; every number shown is exact.

singletons can force more propagation\text{singletons can force more propagation}
reapply A before B123A123B123C123