constraint propagation