#| ******************************************************************************* 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. *******************************************************************************|# ; oops - noticed by -- domain allows pushing an ; object through the door while your holding another. ; Screws up putdown... ; modified by and changing types... (setq *OPERATORS* '( ;(GOTO-BOX ; (params ( )) ; (preconds ; (and (is-box ) ; (inroom ) ; (inroom robot ))) ; (effects ((add (next-to robot )) ; (del (at robot )) ; (if (next-to robot )(del (next-to robot )))))) ; for testing (PICKUP-OBJ (params ()) (preconds (and (arm-empty) (next-to robot ) (carriable ))) (effects ((del (arm-empty)) (del (next-to <*30>)) (del (next-to <*31> )) (add (holding ))))) (PUTDOWN (params ()) (preconds (holding )) ; (inroom robot ) (effects ((del (holding <*35>)) (add (next-to robot )) (add (arm-empty))))) (PUTDOWN-NEXT-TO (params ( )) (preconds (and (holding ) (is-object ) (inroom ) (inroom ) (next-to robot ))) (effects ((del (holding <*35>)) (add (next-to )) (add (next-to robot )) ; ordering important (add (next-to )) (add (arm-empty))))) ; Steve, if you add this back in, add appropriate scrs too. (PUSH-TO-DR (params ( )) (preconds (and (is-door ) (dr-to-rm ) (inroom ) (next-to robot ) (pushable ))) (effects ((del (next-to robot <*3>)) (del (next-to <5>)) (del (next-to <*13> )) (add (next-to )) (add (next-to robot ))))) (PUSH-THRU-DR (params ( )) (preconds (and (is-room ) (dr-to-rm ) (is-door ) (dr-open ) (next-to ) (next-to robot ) (pushable ) (connects ) (inroom ))) (effects ( (del (next-to robot <*1>)) ;confuses regres-state-diff ; next to one thing at a time, so must (del (next-to <*12>)) ; be next to door, but complication, box ; isnt oh well (del (next-to <*7> )) (del (inroom robot <*21>)) (del (inroom <*22>)) (add (inroom robot )) (add (inroom )) (add (next-to robot ))))) (GO-THRU-DR (params ( )) (preconds (and (arm-empty) (is-room ) (dr-to-rm ) (is-door ) (dr-open ) (next-to robot ) (connects ) (inroom robot ))) (effects ( (del (next-to robot <*19>)) ; robot must be next to door only (del (inroom robot <*20>)) (add (inroom robot ))))) (CARRY-THRU-DR (params ( )) (preconds (and (is-room ) (dr-to-rm ) (is-door ) (dr-open ) (is-object ) (holding ) (connects ) (inroom ) (inroom robot ) (next-to robot ))) (effects ( (del (next-to robot <*48>)) ;confuses regres-state-diff (del (inroom robot <*41>)) (del (inroom <*42>)) (add (inroom robot )) (add (inroom ))))) (GOTO-DR (params ( )) (preconds (and (is-door ) (dr-to-rm ) (inroom robot ))) (effects ((del (next-to robot <*18>)) (add (next-to robot ))))) (PUSH-BOX (params ( )) (preconds (and (is-object ) (is-object ) (inroom ) (inroom ) (pushable ) (next-to robot ))) (effects ((del (next-to robot <*14>)) (del (next-to <*5>)) (del (next-to <*6> )) (add (next-to robot )) (add (next-to robot )) (add (next-to )) (add (next-to )) ))) (GOTO-OBJ (params ( )) (preconds (and (is-object ) (inroom ) (inroom robot ))) (effects ((add (next-to robot )) (del (next-to robot <*109>))))) (OPEN (params ()) (preconds (and (is-door ) (unlocked ) (next-to robot ) (dr-closed ))) (effects ((del (dr-closed )) (add (dr-open ))))) (CLOSE (params ()) (preconds (and (is-door ) (next-to robot ) (dr-open ))) (effects ((del (dr-open )) (add (dr-closed ))))) ; should probably kill carriable scr rule (LOCK (params ( )) (preconds (and (is-door ) (is-key ) (holding ) (dr-to-rm ) (inroom ) (next-to robot ) (dr-closed ) (unlocked ))) (effects ((del (unlocked )) (add (locked ))))) (UNLOCK (params ( )) (preconds (and (is-door ) (is-key ) (holding ) (dr-to-rm ) (inroom ) (inroom robot ) (next-to robot ) (locked ))) (effects ((del (locked )) (add (unlocked ))))) )) (setq *INFERENCE-RULES* nil)