Sweep-based propagation for string constraint solving