Job shop scheduling: An investigation in constraint-directed reasoning