Last Update: 19 October 2003
Note: or material is highlighted |
IF : (put-on $object $support)
;; i.e., if WM contains (put-on ...)
THEN: mark (first WM);
;; "mark" implements "remove" by marking the WM entry so that it won't be matched
add (put-at *object (space on *support)).
;; "add" puts item at front of WM & moves other items down;
;; overflow falls off
IF : (put-at $object $newplace)
THEN: mark (first WM);
add (target *object *newplace);
add (grasp *object).
IF : (move $object);
($support supports *object)
THEN: mark (*support supports *object).
IF : (move $object)
THEN: mark (first WM);
notice (target *object $newplace);
;; "notice" moves item to front of WM
do (move-hand *newplace);
do (ungrasp).
IF : (grasp $object);
(*object supports nothing);
;; items must be in WM in that order
THEN: mark (first WM);
add (move *object);
do (move-hand (top-of *object));
do (grasp *object).
IF : (grasp $object);
(*object supports $obstruction)
THEN: add (put-on *obstruction floor).
IF : (grasp $object)
THEN: find (*object supports ?x);
notice (grasp *object).
in P7 returns