This assignment asks you to determine whether a given predicate is true in the state that results from a given state by the application of a given list of actions. You should not find an explicit full state description of each of the intermediate states, but instead use the the algorithm implicit in the axiom schema toward the top of page 334 of the Russell & Norvig text. You may use either Prolog or Java for this assignment.
If you use Java, you should modify your solution (or my solution) to Assignment 4, so that the PlanningState class has a boolean-valued public method isTrue that takes a ground literal represented as a Literal object, and a list of actions represented as a List of Actions, and determines whether the literal is true when each of the actions in the list is applied (in order) to the state.
If you use Java, you do not need to worry about the AStar class of Assigment 3. Your PlanningState class need not implement the State interface from Assignment 1. You may make the this class's method findMatches method of the private if you want, or omit it entirely. You may omit other methods or classes from Assignment 3 that you do not use. If you do use part or all of my solution to Assignment 3, don't forget to document that you are doing this.
If you use Prolog, you should define a binary predicate true whose first argument is expected to be an instantiated ground literal represented as a Prolog structure and whose second argument is expected to be a Prolog structure whose functor is named result, whose first argument is the name of a state, and whose second argument is a list of actions, each represented by a Prolog structure. Some examples can be found as arguments to the test_case predicate in the Prolog version of this assignment's test file. You should hardcode the associations between a state name, its description, and its legal actions into your program (that is, into your knowledge base) rather than construct a state object incrementally as in Assignment 3. Note that you needn't define a result predicate.
No matter which language you use, you may
A4 that is available from the class web site. If you're using Prolog, simply add your predicates to the test file available from the class web site, and test with the query test..For both languages, you are to turn in both hard and soft copies of all of your code as well as a hard copy of the results of your testing. Please don't turn in a CD unless it's absolutely necessary.
For Java, Please email a zipped file (not a *.rar file) if at all possible. Otherwise you can send me an email separate text file attachements, or submit your soft copy on a diskette. For Prolog, you can simply email me a copy of your updated test file.
For Prolog hints, follow the new link on the class home page labeled Prolog hints.