import java.util.List; import java.util.LinkedList; public class A4 { public static void test(Literal lit, PlanningState s, LinkedList actions) { if (s.isTrue(lit, actions)) System.out.print("true: "); else System.out.print("not true: "); System.out.println(lit); } public static void main(String args[]) { // an action that moves a block x from some other block // to the table LinkedList parameters5 = new LinkedList(); parameters5.add(new Term("?x")); parameters5.add(new Term("?y")); LiteralList preconds5 = new LiteralList(); preconds5.addLiteral(new Literal("on ?x ?y")); preconds5.addLiteral(new Literal("clear ?x")); LiteralList addList5 = new LiteralList(); addList5.addLiteral(new Literal("ontable ?x")); addList5.addLiteral(new Literal("clear ?y")); LiteralList deleteList5 = new LiteralList(); deleteList5.addLiteral(new Literal("on ?x ?y")); Action action5 = new Action("moveToTable", parameters5, preconds5, addList5, deleteList5); // an action that moves a block x from the table // to the top of a block y LinkedList parameters6 = new LinkedList(); parameters6.add(new Term("?x")); parameters6.add(new Term("?y")); LiteralList preconds6 = new LiteralList(); preconds6.addLiteral(new Literal("ontable ?x")); preconds6.addLiteral(new Literal("clear ?x")); preconds6.addLiteral(new Literal("clear ?y")); LiteralList addList6 = new LiteralList(); addList6.addLiteral(new Literal("on ?x ?y")); LiteralList deleteList6 = new LiteralList(); deleteList6.addLiteral(new Literal("ontable ?x")); deleteList6.addLiteral(new Literal("clear ?y")); Action action6 = new Action("moveFromTable", parameters6, preconds6, addList6, deleteList6); // an action that moves a block x from the top of block y // to the top of block z LinkedList parameters7 = new LinkedList(); parameters7.add(new Term("?x")); parameters7.add(new Term("?y")); parameters7.add(new Term("?z")); LiteralList preconds7 = new LiteralList(); preconds7.addLiteral(new Literal("on ?x ?y")); preconds7.addLiteral(new Literal("clear ?x")); preconds7.addLiteral(new Literal("clear ?z")); LiteralList addList7 = new LiteralList(); addList7.addLiteral(new Literal("on ?x ?z")); addList7.addLiteral(new Literal("clear ?y")); LiteralList deleteList7 = new LiteralList(); deleteList7.addLiteral(new Literal("on ?x ?y")); deleteList7.addLiteral(new Literal("clear ?z")); Action action7 = new Action("move", parameters7, preconds7, addList7, deleteList7); // The state representing // C // A B // ---------------------- // | | PlanningState blockState0 = new PlanningState(); blockState0.addLiteral(new Literal("on c a")); blockState0.addLiteral(new Literal("clear b")); blockState0.addLiteral(new Literal("clear c")); blockState0.addLiteral(new Literal("ontable a")); blockState0.addLiteral(new Literal("ontable b")); blockState0.addLiteral(new Literal("red a")); blockState0.addLiteral(new Literal("yellow b")); blockState0.addLiteral(new Literal("green c")); blockState0.addAction(action5); blockState0.addAction(action6); blockState0.addAction(action7); LinkedList actionList1= new LinkedList(); test(new Literal("on c a"), blockState0, actionList1); test(new Literal("ontable a"), blockState0, actionList1); test(new Literal("clear b"), blockState0, actionList1); test(new Literal("red a"), blockState0, actionList1); test(new Literal("on c b"), blockState0, actionList1); test(new Literal("on a c"), blockState0, actionList1); test(new Literal("ontable c"), blockState0, actionList1); test(new Literal("clear a"), blockState0, actionList1); test(new Literal("green b"), blockState0, actionList1); actionList1.add(new PastAction("move c a b")); System.out.println(); System.out.println("===================="); test(new Literal("on c a"), blockState0, actionList1); test(new Literal("ontable a"), blockState0, actionList1); test(new Literal("clear b"), blockState0, actionList1); test(new Literal("red a"), blockState0, actionList1); test(new Literal("on c b"), blockState0, actionList1); test(new Literal("on a c"), blockState0, actionList1); test(new Literal("ontable c"), blockState0, actionList1); test(new Literal("clear a"), blockState0, actionList1); test(new Literal("green b"), blockState0, actionList1); actionList1.add(new PastAction("moveFromTable a c")); System.out.println(); System.out.println("===================="); test(new Literal("on c a"), blockState0, actionList1); test(new Literal("ontable a"), blockState0, actionList1); test(new Literal("clear b"), blockState0, actionList1); test(new Literal("red a"), blockState0, actionList1); test(new Literal("on c b"), blockState0, actionList1); test(new Literal("on a c"), blockState0, actionList1); test(new Literal("ontable c"), blockState0, actionList1); test(new Literal("clear a"), blockState0, actionList1); test(new Literal("green b"), blockState0, actionList1); // The state representing // A F // C D // E B // ---------------------- // | | PlanningState blockState1 = new PlanningState(); blockState1.addLiteral(new Literal("clear a")); blockState1.addLiteral(new Literal("on a c")); blockState1.addLiteral(new Literal("on c e")); blockState1.addLiteral(new Literal("ontable e")); blockState1.addLiteral(new Literal("clear f")); blockState1.addLiteral(new Literal("on f d)")); blockState1.addLiteral(new Literal("on d b")); blockState1.addLiteral(new Literal("ontable b")); blockState1.addLiteral(new Literal("red a")); blockState1.addLiteral(new Literal("yellow b")); blockState1.addLiteral(new Literal("green c")); blockState1.addAction(action5); blockState1.addAction(action6); blockState1.addAction(action7); LinkedList actionList2= new LinkedList(); actionList2.add(new PastAction("moveToTable a c")); actionList2.add(new PastAction("moveToTable f d")); actionList2.add(new PastAction("moveToTable c e")); actionList2.add(new PastAction("moveFromTable e f")); actionList2.add(new PastAction("move d b e")); actionList2.add(new PastAction("moveFromTable c d")); actionList2.add(new PastAction("moveFromTable b c")); actionList2.add(new PastAction("moveFromTable a b")); System.out.println("===================="); test(new Literal(" on a b"), blockState1, actionList2); test(new Literal("on b c "), blockState1, actionList2); test(new Literal("on c e"), blockState1, actionList2); test(new Literal("on e f"), blockState1, actionList2); test(new Literal("clear a"), blockState1, actionList2); test(new Literal("clear b"), blockState1, actionList2); test(new Literal("clear c"), blockState1, actionList2); test(new Literal("clear d"), blockState1, actionList2); test(new Literal("ontable a"), blockState1, actionList2); test(new Literal("ontable c"), blockState1, actionList2); test(new Literal("ontable e"), blockState1, actionList2); test(new Literal("ontable f"), blockState1, actionList2); test(new Literal("yellow a"), blockState1, actionList2); test(new Literal("yellow b"), blockState1, actionList2); test(new Literal("yellow c"), blockState1, actionList2); test(new Literal("yellow d"), blockState1, actionList2); } }