#| ******************************************************************************* PRODIGY Version 2.01 Copyright 1989 by Steven Minton, Craig Knoblock, Dan Kuokka and Jaime Carbonell The PRODIGY System was designed and built by Steven Minton, Craig Knoblock, Dan Kuokka and Jaime Carbonell. Additional contributors include Henrik Nordin, Yolanda Gil, Manuela Veloso, Robert Joseph, Santiago Rementeria, Alicia Perez, Ellen Riloff, Michael Miller, and Dan Kahn. The PRODIGY system is experimental software for research purposes only. This software is made available under the following conditions: 1) PRODIGY will only be used for internal, noncommercial research purposes. 2) The code will not be distributed to other sites without the explicit permission of the designers. PRODIGY is available by request. 3) Any bugs, bug fixes, or extensions will be forwarded to the designers. Send comments or requests to: prodigy@cs.cmu.edu or The PRODIGY PROJECT, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA 15213. *******************************************************************************|# (setq SCR-NODE-SELECT-RULES nil) (setq SCR-GOAL-SELECT-RULES '((SELECT-FIRST-GOAL (lhs (and (current-node ) (not-top-level-node ) (list-of-candidate-goals ) (is-first-goal ))) (rhs (select goal ))) )) (setq SCR-OP-SELECT-RULES '( (MINIMUM-EFFORT-GOTO (lhs (and (current-node ) (current-goal (next-to robot )) (candidate-op GOTO-OBJ) (known (~ (is-door ))))) (rhs (select operator GOTO-OBJ))) (DO-GOTO-DR (lhs (and (current-node ) (current-goal (next-to robot )) (known (is-door )) (candidate-op GOTO-DR))) (rhs (select operator GOTO-DR))) )) (setq SCR-BINDINGS-SELECT-RULES nil) (setq SCR-NODE-REJECT-RULES nil) (setq SCR-GOAL-REJECT-RULES '( (LOCK-AFTER-INROOM (lhs (and (current-node ) (candidate-goal (locked )) (candidate-goal (inroom )) (known (dr-to-rm )))) (rhs (reject goal (locked )))) (ROBOT-INROOM-LAST (lhs (and (current-node ) (candidate-goal (inroom )) (candidate-goal (inroom robot )) (not-equal robot))) (rhs (reject goal (inroom robot )))) (CLOSE-DOORS-AFTER-INROOM-OBJ (lhs (and (current-node ) (candidate-goal (closed )) (candidate-goal (inroom )) (not-equal robot))) (rhs (reject goal (closed )))) (CLOSE-DOORS-AFTER-INROOM (lhs (and (current-node ) (candidate-goal (closed )) (candidate-goal (inroom robot )) (known (dr-to-rm )))) (rhs (reject goal (closed )))) (INROOM-OVER-NEXT-TO-1 (lhs (and (current-node ) (candidate-goal (inroom )) (candidate-goal (next-to )))) (rhs (reject goal (next-to )))) (INROOM-OVER-NEXT-TO-2 (lhs (and (current-node ) (candidate-goal (inroom )) (candidate-goal (next-to )))) (rhs (reject goal (next-to )))) )) (setq SCR-OP-REJECT-RULES '( (PUSH-OBJ-TOBE-NEXTTO (lhs (and (current-node ) (current-goal (next-to )) (candidate-op PUSH-TO-DR) (known (~ (is-door ))))) (rhs (reject operator PUSH-TO-DR))) (CARRY-IF-CARRIABLE (lhs (and (current-node ) (current-goal (next-to )) (candidate-op PUTDOWN-NEXT-TO) (known (~ (carriable ))) (known (~ (carriable ))))) (rhs (reject operator PUTDOWN-NEXT-TO))) (PUSH-IF-PUSHABLE (lhs (and (current-node ) (current-goal (next-to )) (candidate-op PUSH-BOX) (known (~ (pushable ))) (known (~ (pushable ))))) (rhs (reject operator PUSH-BOX))) (PUSH-IF-PUSHABLE-THRU-DOOR (lhs (and (current-node ) (current-goal (inroom )) (candidate-op PUSH-THRU-DR) (known (~ (pushable ))))) (rhs (reject operator PUSH-THRU-DR))) (CARRY-IF-CARRIABLE-THRU-DOOR (lhs (and (current-node ) (current-goal (inroom )) (candidate-op CARRY-THRU-DR) (known (~ (carriable ))))) (rhs (reject operator CARRY-THRU-DR))) (ONLY-PUSH-BOX (lhs (and (current-node ) (current-goal (next-to robot )) (candidate-op PUSH-BOX))) (rhs (reject operator PUSH-BOX))) (ONLY-CARRY-BOX-THRU-DOOR (lhs (and (current-node ) (current-goal (inroom robot )) (candidate-op CARRY-THRU-DR))) (rhs (reject operator CARRY-THRU-DR))) (ONLY-PUSH-BOX-THRU-DOOR1 (lhs (and (current-node ) (current-goal (inroom robot )) (candidate-op PUSH-THRU-DR))) (rhs (reject operator PUSH-THRU-DR))) (ONLY-PUSH-BOX-THRU-DOOR2 (lhs (and (current-node ) (current-goal (next-to )) (candidate-op PUSH-THRU-DR))) (rhs (reject operator PUSH-THRU-DR))) (ONLY-PUTDOWN-NEXT-TO-1 (lhs (and (current-node ) (current-goal (arm-empty)) (candidate-op PUTDOWN-NEXT-TO))) (rhs (reject operator PUTDOWN-NEXT-TO))) (ONLY-PUTDOWN-NEXT-TO-2 (lhs (and (current-node ) (current-goal (inroom )) (candidate-op PUTDOWN-NEXT-TO))) (rhs (reject operator PUTDOWN-NEXT-TO))) )) (setq SCR-BINDINGS-REJECT-RULES '( (DONT-PUTDOWN-NEXT-TO-IF-NOT-CARRIABLE (lhs (and (current-node ) (current-op PUTDOWN-NEXT-TO) (candidate-bindings ( )) (known (~ (carriable ))))) (rhs (reject bindings ( )))) (DONT-PUSH-TO-IF-NOT-CARRIABLE (lhs (and (current-node ) (current-op PUSH-BOX) (candidate-bindings ( )) (known (~ (pushable ))))) (rhs (reject bindings ( )))) (UNLOCK-FROM-RM-YOUR-IN (lhs (and (current-node ) (current-op UNLOCK) (candidate-bindings ( )) (is-bound ) (known (inroom robot )) (not-equal ) (known (dr-to-rm )))) (rhs (reject bindings ( )))) (PUSH-OTHER-BOX (lhs (and (current-node ) (current-op PUSH-BOX) (candidate-bindings ( )) (in-goal-exp (inroom )) (known (inroom )) (not-equal ))) (rhs (reject bindings ( )))) (MOVE-OTHER-BOX (lhs (and (current-node ) (current-op PUTDOWN-NEXT-TO) (candidate-bindings ( )) (in-goal-exp (inroom )) (known (inroom )) (not-equal ))) (rhs (reject bindings ( )))) )) (setq SCR-NODE-PREFERENCE-RULES nil) (setq SCR-GOAL-PREFERENCE-RULES '((HOLDING-LAST (lhs (and (current-node ) (candidate-goal ) (is-equal (holding )) (candidate-goal ) (not-equal ))) (priority 1) (rhs (prefer goal (holding )))) (CLOSE-LATE (lhs (and (current-node ) (candidate-goal (closed )) (candidate-goal ) (or (is-equal (open )) (and (is-equal (inroom )) (not-equal robot)) (is-equal (next-to ))))) (priority 1) (rhs (prefer goal (closed )))) (LOCK-LATE (lhs (and (current-node ) (candidate-goal (locked )) (candidate-goal ) (or (is-equal (open )) (and (is-equal (inroom )) (not-equal robot)) (is-equal (next-to ))))) (priority 1) (rhs (prefer goal (locked )))) )) (setq SCR-OP-PREFERENCE-RULES nil) (setq SCR-BINDINGS-PREFERENCE-RULES '( (LOCK-FROM-RM-YOUR-IN (lhs (and (current-node ) (current-op LOCK) (candidate-bindings ( )) (candidate-bindings ( )) (is-bound ) (is-bound ) (not-equal ) (known (inroom robot )) (known (dr-to-rm )))) (priority 1) (rhs (prefer bindings ( )( )))) (PUSH-FROM-SAME-ROOM (lhs (and (current-node ) (current-op PUSH-TO-DR) (candidate-bindings ( )) (candidate-bindings ( )) (is-bound ) (is-bound ) (known (inroom )) (known (~ (inroom ))))) (priority 1) (rhs (prefer bindings ( ) ( )))) (CARRY-FROM-NEXT-ROOM (lhs (and (current-node ) (current-op CARRY-THRU-DR) (candidate-bindings ( )) (candidate-bindings ( )) (is-bound ) (is-bound ) (not-equal ) (known (inroom robot )) (known (dr-to-rm )))) (priority 1) (rhs (prefer bindings ( ) ( )))) (PUSH-FROM-NEXT-ROOM (lhs (and (current-node ) (current-op PUSH-THRU-DR) (candidate-bindings ( )) (candidate-bindings ( )) (is-bound ) (is-bound ) (not-equal ) (known (inroom robot )) (known (dr-to-rm )))) (priority 1) (rhs (prefer bindings ( ) ( )))) (GO-FROM-NEXT-ROOM (lhs (and (current-node ) (current-op GO-THRU-DR) (candidate-bindings ( )) (candidate-bindings ( )) (is-bound ) (is-bound ) (not-equal ) (known (inroom robot )) (known (dr-to-rm )))) (priority 1) (rhs (prefer bindings ( ) ( )))) ; (GO-FROM-NEXT-ROOM ; (lhs (and (current-node ) ;; (current-op GOTO-DR) ; (candidate-bindings ( )) ; (candidate-bindings ( )) ; (is-bound ) ; (is-bound ) ; (not-equal ) ; (known (inroom robot )))) ; (priority 1) ; (rhs (prefer bindings ( ) ; ( )))) ; ; (PUSH-FROM-NEXT-ROOM ; (lhs (and (current-node ) ; (current-op PUSH-TO-DR) ; (candidate-bindings ( )) ; (candidate-bindings ( )) ; (is-bound ) ; (is-bound ) ; (not-equal ) ; (known (inroom robot )))) ; (priority 1) ; (rhs (prefer bindings ( ) ; ( )))) ))