pjd@demon.siemens.com (dr. funk) (03/01/91)
TO NL PR [] END TO EXEC.RULES :RULES LABEL "ERL IF EMPTYP :RULES [OP "TRUE] IF EXEC.RULE FIRST :RULES [OP "FALSE] MAKE "RULES (BF :RULES) GO "ERL END TO EXEC.RULE :RULE MAKE "COND FIRST BF :RULE MAKE "NOTICED.ITEMS [] IF NOT MATCH.LOOP :COND [OP "FALSE] MIGRATE.LOOP :NOTICED.ITEMS PRE.TRACE FIRST :RULE EXEC.LOOP LAST :RULE POST.TRACE OP "TRUE END TO MATCH.LOOP :LIST LABEL "ML IF EMPTYP :LIST [OP "TRUE] IF MATCH FIRST :LIST :PAD [MAKE "LIST (BF :LIST) GO "ML] [OP "FALSE] END TO RULE :WORD MAKE "NAME :WORD MAKE "PRED [] MAKE "ACTION [] END TO PRE.TRACE :NAME PR SE [Executing rule] :NAME END TO EXEC.LOOP :LIST LABEL "EL IF EMPTYP :LIST [STOP] EXEC.ACTION SUB.ITEM FIRST :LIST MAKE "LIST (BF :LIST) GO "EL END TO POST.TRACE PR [Pad after execution.] PRETTY :PAD END TO SHOVE :ITEM MAKE "PAD FPUT :ITEM :PAD END TO MARK :ITEM MAKE "PAD DELETE :ITEM :PAD MAKE "PAD FPUT (LIST "Marked :ITEM) :PAD END TO MIGRATE.LOOP :LIST LABEL "ML IF EMPTYP :LIST [STOP] MIGRATE FIRST :LIST MAKE "LIST (BF :LIST) GO "ML END TO MATCH :PATTERN :LIST LABEL "ML IF EMPTYP :LIST [OP "FALSE] IF MATCH.ITEM :PATTERN FIRST :LIST [REMEMBER FIRST :LIST OP "TRUE] MAKE "LIST (BF :LIST) GO "ML END TO NOTICE :ITEM MAKE "NOTICED.ITEMS [] IF MATCH :ITEM :PAD [MIGRATE.LOOP :NOTICED.ITEMS] END TO REMEMBER :ITEM MAKE "NOTICED.ITEMS FPUT :ITEM :NOTICED.ITEMS END TO SYMBOL :P :W IF (FIRST :P) = "#> [MAKE (BF :P) :W OP "TRUE] IF (FIRST :P) = "#< [OP (THING BF :P) = :W] OP OR (:P = "?) (:W = :P) END TO PRETTY :LIST LABEL "PL IF EMPTYP :LIST [STOP] TYPE "# PR FIRST :LIST MAKE "LIST (BF :LIST) GO "PL END TO SUB.WORD :WORD IF (FIRST :WORD) = "#< [OP THING BF :WORD] IF :WORD = "#*#* [OP FIRST :PAD] OP :WORD END TO SUB.ITEM :ITEM IF EMPTYP :ITEM [OP []] IF WORDP :ITEM [OP SUB.WORD :ITEM] OP FPUT (SUB.ITEM FIRST :ITEM) SUB.ITEM BF :ITEM END TO EXEC.INST :OP :ITEM IF :OP = "SHOVE [SHOVE :ITEM STOP] IF :OP = "MARK [MARK :ITEM STOP] IF :OP = "NOTICE [NOTICE :ITEM STOP] IF :OP = "SEND [NL PR :ITEM NL STOP] IF :OP = "RECEIVE [NL (TYPE :ITEM "# ) SHOVE RL NL STOP] RUN :ITEM END TO EXEC.ACTION :ACTION EXEC.INST FIRST :ACTION SUB.ITEM FIRST BF :ACTION END TO DELETE :ITEM :LIST LOCAL "NEW MAKE "NEW [] LABEL "DL IF EMPTYP :LIST [OP :NEW] IF :ITEM = FIRST :LIST [OP (SE :NEW BF :LIST)] MAKE "NEW LPUT (FIRST :LIST) :NEW MAKE "LIST BF :LIST GO "DL END TO MIGRATE :ITEM MAKE "PAD DELETE :ITEM :PAD MAKE "PAD FPUT :ITEM :PAD END TO ACTION :LIST MAKE "ACTION LPUT :LIST :ACTION END TO END.OF.RULE MAKE "RULE.BASE LPUT (FPUT :NAME LIST :PRED :ACTION) :RULE.BASE END TO PRED :LIST MAKE "PRED LPUT :LIST :PRED END TO MAIN.LOOP LABEL "ML IF EXEC.RULES :RULE.BASE [STOP] GO "ML END TO MATCH.ITEM :P :S IF EMPTYP :P [OP "TRUE] IF EMPTYP :S [OP "FALSE] IF WORDP :P [OP SYMBOL :P :S] IF AND LISTP :P LISTP :S [OP AND (MATCH.ITEM (FIRST :P) (FIRST :S)) (MATCH.ITEM (BF :P) (BF :S))] END TO CONSULT TYPE [Goal:# ] MAKE "PAD FPUT RL [] MAIN.LOOP END -- paul j. drongowski siemens corporate research inc pjd@demon.siemens.com princeton, new jersey 08540 (617) 734-6547
pjd@demon.siemens.com (dr. funk) (03/01/91)
TO INIT.ROBBIE MAKE "RULE.BASE [] P1 P2 P3 P4 P5 P6 P7 RECYCLE (PR NODES [free nodes.]) END TO P1 RULE "P1 PRED [PUT.ON #>OBJECT #>SUPPORT] ACTION [MARK #*#*] ACTION [SHOVE [PUT.AT #<OBJECT [SPACE ON #<SUPPORT]]] END.OF.RULE END TO P2 RULE "P2 PRED [PUT.AT #>OBJECT #>NEWPLACE] ACTION [MARK #*#*] ACTION [SHOVE [TARGET #<OBJECT #<NEWPLACE]] ACTION [SHOVE [GRASP #<OBJECT]] END.OF.RULE END TO P3 RULE "P3 PRED [MOVE #>OBJECT] PRED [#>SUPPORT SUPPORTS #<OBJECT] ACTION [MARK [#<SUPPORT SUPPORTS #<OBJECT]] END.OF.RULE END TO P4 RULE "P4 PRED [MOVE #>OBJECT] ACTION [MARK #*#*] ACTION [NOTICE [TARGET #<OBJECT #>NEWPLACE]] ACTION [SEND [Move.hand #<NEWPLACE]] ACTION [SEND [Ungrasp]] END.OF.RULE END TO P5 RULE "P5 PRED [GRASP #>OBJECT] PRED [#<OBJECT SUPPORTS NOTHING] ACTION [MARK #*#*] ACTION [SHOVE [MOVE #<OBJECT]] ACTION [SEND [Move.hand [TOP OF #<OBJECT]]] ACTION [SEND [Grasp #<OBJECT]] END.OF.RULE END TO P6 RULE "P6 PRED [GRASP #>OBJECT] PRED [#<OBJECT SUPPORTS #>OBSTRUCTION] ACTION [SHOVE [PUT.ON #<OBSTRUCTION FLOOR]] END.OF.RULE END TO P7 RULE "P7 PRED [GRASP #>OBJECT] ACTION [RECEIVE [What is on #<OBJECT]] ACTION [NOTICE [GRASP #<OBJECT]] END.OF.RULE END -- paul j. drongowski siemens corporate research inc pjd@demon.siemens.com princeton, new jersey 08540 (617) 734-6547
pjd@demon.siemens.com (dr. funk) (03/01/91)
?INIT.ROBBIE 1821 free nodes. ?GO Executing rule P2 Pad after execution. GRASP TABLE TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P7 What is on TABLE TABLE SUPPORTS LAMP Pad after execution. GRASP TABLE TABLE SUPPORTS LAMP TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P6 Pad after execution. PUT.ON LAMP FLOOR GRASP TABLE TABLE SUPPORTS LAMP TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P1 Pad after execution. PUT.AT LAMP [SPACE ON FLOOR] Marked [PUT.ON LAMP FLOOR] GRASP TABLE TABLE SUPPORTS LAMP TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P2 Pad after execution. GRASP LAMP TARGET LAMP [SPACE ON FLOOR] Marked [PUT.AT LAMP [SPACE ON FLOOR]] Marked [PUT.ON LAMP FLOOR] GRASP TABLE TABLE SUPPORTS LAMP TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P7 What is on LAMP LAMP SUPPORTS NOTHING Pad after execution. GRASP LAMP LAMP SUPPORTS NOTHING TARGET LAMP [SPACE ON FLOOR] Marked [PUT.AT LAMP [SPACE ON FLOOR]] Marked [PUT.ON LAMP FLOOR] GRASP TABLE TABLE SUPPORTS LAMP TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P5 Move.hand [TOP OF LAMP] Grasp LAMP Pad after execution. MOVE LAMP Marked [GRASP LAMP] LAMP SUPPORTS NOTHING TARGET LAMP [SPACE ON FLOOR] Marked [PUT.AT LAMP [SPACE ON FLOOR]] Marked [PUT.ON LAMP FLOOR] GRASP TABLE TABLE SUPPORTS LAMP TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P3 Pad after execution. Marked [TABLE SUPPORTS LAMP] MOVE LAMP Marked [GRASP LAMP] LAMP SUPPORTS NOTHING TARGET LAMP [SPACE ON FLOOR] Marked [PUT.AT LAMP [SPACE ON FLOOR]] Marked [PUT.ON LAMP FLOOR] GRASP TABLE TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P4 Move.hand [SPACE ON FLOOR] Ungrasp Pad after execution. TARGET LAMP [SPACE ON FLOOR] Marked [MOVE LAMP] Marked [TABLE SUPPORTS LAMP] Marked [GRASP LAMP] LAMP SUPPORTS NOTHING Marked [PUT.AT LAMP [SPACE ON FLOOR]] Marked [PUT.ON LAMP FLOOR] GRASP TABLE TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P7 What is on TABLE TABLE SUPPORTS NOTHING Pad after execution. GRASP TABLE TABLE SUPPORTS NOTHING TARGET LAMP [SPACE ON FLOOR] Marked [MOVE LAMP] Marked [TABLE SUPPORTS LAMP] Marked [GRASP LAMP] LAMP SUPPORTS NOTHING Marked [PUT.AT LAMP [SPACE ON FLOOR]] Marked [PUT.ON LAMP FLOOR] TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P5 Move.hand [TOP OF TABLE] Grasp TABLE Pad after execution. MOVE TABLE Marked [GRASP TABLE] TABLE SUPPORTS NOTHING TARGET LAMP [SPACE ON FLOOR] Marked [MOVE LAMP] Marked [TABLE SUPPORTS LAMP] Marked [GRASP LAMP] LAMP SUPPORTS NOTHING Marked [PUT.AT LAMP [SPACE ON FLOOR]] Marked [PUT.ON LAMP FLOOR] TARGET TABLE XYZ Marked [PUT.AT TABLE XYZ] Executing rule P4 Move.hand XYZ Ungrasp Pad after execution. TARGET TABLE XYZ Marked [MOVE TABLE] Marked [GRASP TABLE] TABLE SUPPORTS NOTHING TARGET LAMP [SPACE ON FLOOR] Marked [MOVE LAMP] Marked [TABLE SUPPORTS LAMP] Marked [GRASP LAMP] LAMP SUPPORTS NOTHING Marked [PUT.AT LAMP [SPACE ON FLOOR]] Marked [PUT.ON LAMP FLOOR] Marked [PUT.AT TABLE XYZ] ?RECYCLE PR NODES 1736 ?SETWRITE [] -- paul j. drongowski siemens corporate research inc pjd@demon.siemens.com princeton, new jersey 08540 (617) 734-6547