Since a valid plan must be allocated resources with respect to all the resource types in the domain, the abstract plan can either be iteratively scheduled with respect to the resources of each type, as is done in procedural scheduling, or all the constraints for the different resource types can be declared together and solved simultaneously by the CSP solver.