1. A method for reusing information associated with a constraint solving operation for a problem domain, the method comprising: receiving a canonical representation for a constraint problem from the problem domain; searching through a problem cache for an entry which corresponds to the canonical representation, wherein the problem cache stores a set of entries, and wherein each entry includes a previously stored canonical representation and a corresponding solver heuristic for the previously stored canonical representation; and if a corresponding entry does not exist in the problem cache, producing an entry in the problem cache for the canonical representation; otherwise, if a corresponding entry exists in the problem cache, generating a solution to the canonical representation by reusing a solver heuristic associated with the corresponding entry in the problem cache, which involves retrieving the solver heuristic from the corresponding entry.