A system in which a constraint solver is given constraints one at a time by an inference engine (as is found in Prolog). The solver adds the new constraint to an initially empty set of solved constraints. If the new constraint is consistent with the solved constraints it will be added to the set. If it was inconsistent, the inference engine backtracks. This is the basis of Constraint Logic Programming.