Constraint algorithm