Automated Reasoning About Actions: A Logic Programming Approach