OK
[12] (parse '(john picked up the ball and dropped it in the box))
-------------------------- 
Processing word JOHN 
-------------------------- 
<<< split-config (HUMAN NAME (JOHN) GENDER (MALE))
<<< split-rest NAME : (JOHN)
<<< config-gap NAME88
<<< split-config (JOHN)
<<< split-rest GENDER : (MALE)
<<< config-gap GENDER89
<<< split-config (MALE)
	Adding to *wm*: CON87
			CON87 = (HUMAN NAME NAME88 GENDER GENDER89)
<<< spawn-dforms con: CON87 dforms: (SAVE-CHARACTER) gap: ()
<<< spawn-name con CON87 head SAVE-CHARACTER args ((QUOTE CON87))
	Spawning: DEM90 = (SAVE-CHARACTER CON87)
		===================== DEM90 ====================
		T: 
		A: Bind the MYCON to the MOST-RECENT-CHARACTER; if there
		   is no LOCAL-CHARACTER bind the MYCON to it also
		==================================================
<<< run-demon-atm d-atm DEM90 con CON87
<<< param-environ d-name SAVE-CHARACTER argums (CON87)
<<< run-demon d-name SAVE-CHARACTER
			kill ()
			test ()
			+act (+ACT (SET! *MOST-RECENT-CHAR* MYCON) (AND (NULL? 
*LOCAL-CHAR*) (SET! *LOCAL-CHAR* MYCON)) (SPAWN MYCON (PRINT-COMMENT MYCON MYCON)))
			-act ()
<<<test ()
	Executing: DEM90 = (SAVE-CHARACTER CON87)
<<< spawn con: (QUOTE CON87) dform: (PRINT-COMMENT MYCON MYCON)
<<< spawn-dform con CON87 dform (PRINT-COMMENT MYCON MYCON)
<<< spawn-name con CON87 head PRINT-COMMENT args ((QUOTE CON87) (QUOTE CON87))
	Spawning: DEM91 = (PRINT-COMMENT CON87 CON87)
	Killing: DEM90 = (SAVE-CHARACTER CON87)
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks #T
<<< run-demon-atm d-atm DEM91 con CON87
<<< param-environ d-name PRINT-COMMENT argums (CON87 CON87)
<<< run-demon d-name PRINT-COMMENT
			kill ()
			test ()
			+act (+ACT (OUT T 1 new character: ~a~% (DEMON-EVAL 
MYCON)))
			-act ()
<<<test ()
	Executing: DEM91 = (PRINT-COMMENT CON87 CON87)
	new character: (HUMAN NAME NAME88 GENDER GENDER89)
	Killing: DEM91 = (PRINT-COMMENT CON87 CON87)
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks #T
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks ()
-------------------------- 
Processing word PICKED 
-------------------------- 
	Adding to *wm*: CON92
			CON92 = ()
<<< spawn-dforms con: CON92 dforms: ((PICK-UP?) (DECIDE?)) gap: ()
<<< spawn-name con CON92 head PICK-UP? args ((QUOTE CON92))
	Spawning: DEM93 = (PICK-UP? CON92)
		===================== DEM93 ====================
		T: If the next word is UP ...
		A: Set the MYCON to the grasp configuration
		==================================================
<<< spawn-name con CON92 head DECIDE? args ((QUOTE CON92))
	Spawning: DEM94 = (DECIDE? CON92)
		===================== DEM94 ====================
		T: Search for a person or a physical object after the
		   MYCON
		A: Set the MYCON to the decision configuration
		==================================================
<<< run-demon-atm d-atm DEM94 con CON92
<<< param-environ d-name DECIDE? argums (CON92)
<<< run-demon d-name DECIDE?
			kill (KILL (DEMON-EVAL MYCON))
			test (TEST (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON 
MYCON)) (CLASS? (CON-HEAD CON) (QUOTE (HUMAN PHYS-OBJ))))) MYCON NIL (QUOTE AFT)))
			+act (+ACT (CON-SET MYCON (GET (QUOTE PICKED) (QUOTE M2))))
			-act ()
<<< run-demon-atm d-atm DEM93 con CON92
<<< param-environ d-name PICK-UP? argums (CON92)
<<< run-demon d-name PICK-UP?
			kill (KILL (DEMON-EVAL MYCON))
			test (TEST (EQ? *NEXT-W* (QUOTE UP)))
			+act (+ACT (CON-SET MYCON (GET (QUOTE PICKED) (QUOTE M1))))
			-act ()
<<<test #T
	Executing: DEM93 = (PICK-UP? CON92)
<<< split-config (GRASP ACTOR H <== (EXP (QUOTE HUMAN) (QUOTE BEF)) OBJECT X <== (EXP (QUOTE PHYS-OBJ) (QUOTE AFT)) INSTR (MOVE ACTOR H OBJECT (FINGERS) TO X))
<<< split-rest ACTOR : H
<<< atm-gap ACTOR95
<<< spawn-dforms con: CON92 dforms: (EXP (QUOTE HUMAN) (QUOTE BEF)) gap: ACTOR95
<<< spawn-name con CON92 head EXP args ((QUOTE CON92) (QUOTE ACTOR95) (QUOTE 
HUMAN) (QUOTE BEF))
	Spawning: DEM96 = (EXP CON92 ACTOR95 HUMAN BEF)
		===================== DEM96 ====================
		T: Search in the given DIRection for a CON in one of
		   the given CLASSES until a boundary is reached
		A: Bind the CON to the given GAP
		==================================================
<<< split-rest OBJECT : X
<<< atm-gap OBJECT97
<<< spawn-dforms con: CON92 dforms: (EXP (QUOTE PHYS-OBJ) (QUOTE AFT)) gap: 
OBJECT97
<<< spawn-name con CON92 head EXP args ((QUOTE CON92) (QUOTE OBJECT97) (QUOTE 
PHYS-OBJ) (QUOTE AFT))
	Spawning: DEM98 = (EXP CON92 OBJECT97 PHYS-OBJ AFT)
		===================== DEM98 ====================
		T: Search in the given DIRection for a CON in one of
		   the given CLASSES until a boundary is reached
		A: Bind the CON to the given GAP
		==================================================
<<< split-rest INSTR : (MOVE ACTOR H OBJECT (FINGERS) TO X)
<<< config-gap INSTR99
<<< split-config (MOVE ACTOR H OBJECT (FINGERS) TO X)
<<< split-rest ACTOR : H
<<< atm-gap ACTOR95
<<< split-rest OBJECT : (FINGERS)
<<< config-gap OBJECT100
<<< split-config (FINGERS)
<<< split-rest TO : X
<<< atm-gap OBJECT97
		CON92 = (GRASP ACTOR ACTOR95 OBJECT OBJECT97 INSTR INSTR99)
	Killing: DEM93 = (PICK-UP? CON92)
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks #T
<<< run-demon-atm d-atm DEM98 con CON92
<<< param-environ d-name EXP argums (CON92 OBJECT97 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< run-demon-atm d-atm DEM96 con CON92
<<< param-environ d-name EXP argums (CON92 ACTOR95 HUMAN BEF)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<<test CON87
	Executing: DEM96 = (EXP CON92 ACTOR95 HUMAN BEF)
		ACTOR95 <-- CON87
	Killing: DEM96 = (EXP CON92 ACTOR95 HUMAN BEF)
<<< run-demon-atm d-atm DEM94 con CON92
<<< param-environ d-name DECIDE? argums (CON92)
<<< run-demon d-name DECIDE?
			kill (KILL (DEMON-EVAL MYCON))
			test (TEST (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON 
MYCON)) (CLASS? (CON-HEAD CON) (QUOTE (HUMAN PHYS-OBJ))))) MYCON NIL (QUOTE AFT)))
			+act (+ACT (CON-SET MYCON (GET (QUOTE PICKED) (QUOTE M2))))
			-act ()
<<< run-demon kill-part CON92
	Killing: DEM94 = (DECIDE? CON92)
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks #T
<<< run-demon-atm d-atm DEM98 con CON92
<<< param-environ d-name EXP argums (CON92 OBJECT97 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks ()
-------------------------- 
Processing word UP 
-------------------------- 
	Adding to *wm*: CON101
			CON101 = ()
<<< spawn-dforms con: CON101 dforms: (IGNOR) gap: ()
<<< spawn-name con CON101 head IGNOR args ((QUOTE CON101))
	Spawning: DEM102 = (IGNOR CON101)
<<< run-demon-atm d-atm DEM102 con CON101
<<< param-environ d-name IGNOR argums (CON101)
<<< run-demon d-name IGNOR
			kill ()
			test ()
			+act (+ACT (PUT MYCON (QUOTE IGNOR) T))
			-act ()
<<<test ()
	Executing: DEM102 = (IGNOR CON101)
	Killing: DEM102 = (IGNOR CON101)
<<< run-demon-atm d-atm DEM98 con CON92
<<< param-environ d-name EXP argums (CON92 OBJECT97 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks #T
<<< run-demon-atm d-atm DEM98 con CON92
<<< param-environ d-name EXP argums (CON92 OBJECT97 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks ()
-------------------------- 
Processing word THE 
-------------------------- 
	Adding to *wm*: CON103
			CON103 = ()
<<< spawn-dforms con: CON103 dforms: (IGNOR) gap: ()
<<< spawn-name con CON103 head IGNOR args ((QUOTE CON103))
	Spawning: DEM104 = (IGNOR CON103)
<<< run-demon-atm d-atm DEM104 con CON103
<<< param-environ d-name IGNOR argums (CON103)
<<< run-demon d-name IGNOR
			kill ()
			test ()
			+act (+ACT (PUT MYCON (QUOTE IGNOR) T))
			-act ()
<<<test ()
	Executing: DEM104 = (IGNOR CON103)
	Killing: DEM104 = (IGNOR CON103)
<<< run-demon-atm d-atm DEM98 con CON92
<<< param-environ d-name EXP argums (CON92 OBJECT97 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks #T
<<< run-demon-atm d-atm DEM98 con CON92
<<< param-environ d-name EXP argums (CON92 OBJECT97 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks ()
-------------------------- 
Processing word BALL 
-------------------------- 
<<< split-config (PHYS-OBJ CLASS (GAME-OBJ) NAME (BALL))
<<< split-rest CLASS : (GAME-OBJ)
<<< config-gap CLASS106
<<< split-config (GAME-OBJ)
<<< split-rest NAME : (BALL)
<<< config-gap NAME107
<<< split-config (BALL)
	Adding to *wm*: CON105
			CON105 = (PHYS-OBJ CLASS CLASS106 NAME NAME107)
<<< spawn-dforms con: CON105 dforms: (SAVE-OBJ) gap: ()
<<< spawn-name con CON105 head SAVE-OBJ args ((QUOTE CON105))
	Spawning: DEM108 = (SAVE-OBJ CON105)
		===================== DEM108 ====================
		T: 
		A: Bind the MYCON to the MOST-RECENT-OBJECT.
		==================================================
<<< run-demon-atm d-atm DEM108 con CON105
<<< param-environ d-name SAVE-OBJ argums (CON105)
<<< run-demon d-name SAVE-OBJ
			kill ()
			test ()
			+act (+ACT (SET! *MOST-RECENT-OBJ* MYCON))
			-act ()
<<<test ()
	Executing: DEM108 = (SAVE-OBJ CON105)
	Killing: DEM108 = (SAVE-OBJ CON105)
<<< run-demon-atm d-atm DEM98 con CON92
<<< param-environ d-name EXP argums (CON92 OBJECT97 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<<test CON105
	Executing: DEM98 = (EXP CON92 OBJECT97 PHYS-OBJ AFT)
		OBJECT97 <-- CON105
	Killing: DEM98 = (EXP CON92 OBJECT97 PHYS-OBJ AFT)
<<< run-demon-atm d-atm DEM77 con CON71
<<< param-environ d-name EXP argums (CON71 OBJECT76 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<<test CON105
	Executing: DEM77 = (EXP CON71 OBJECT76 PHYS-OBJ AFT)
		OBJECT76 <-- CON105
	Killing: DEM77 = (EXP CON71 OBJECT76 PHYS-OBJ AFT)
<<< demon-tasks #T
<<< demon-tasks ()
-------------------------- 
Processing word AND 
-------------------------- 
<<< split-config (*CONJ*)
	Adding to *wm*: CON109
			CON109 = (*CONJ*)
<<< spawn-dforms con: CON109 dforms: (IGNOR) gap: ()
<<< spawn-name con CON109 head IGNOR args ((QUOTE CON109))
	Spawning: DEM110 = (IGNOR CON109)
<<< run-demon-atm d-atm DEM110 con CON109
<<< param-environ d-name IGNOR argums (CON109)
<<< run-demon d-name IGNOR
			kill ()
			test ()
			+act (+ACT (PUT MYCON (QUOTE IGNOR) T))
			-act ()
<<<test ()
	Executing: DEM110 = (IGNOR CON109)
	Killing: DEM110 = (IGNOR CON109)
<<< demon-tasks #T
<<< demon-tasks ()
-------------------------- 
Processing word DROPPED 
-------------------------- 
<<< split-config (PTRANS ACTOR * <== (EXP (QUOTE HUMAN) (QUOTE BEF)) OBJECT THG 
<== (EXP (QUOTE PHYS-OBJ) (QUOTE AFT)) TO * <== (PREP (QUOTE (IN INTO ON)) (
QUOTE (HUMAN PHYS-OBJ)) (QUOTE AFT)) INSTR (PROPEL ACTOR (GRAVITY) OBJECT THG))
<<< split-rest ACTOR : *
<<< *-gap ACTOR112
<<< spawn-dforms con: CON111 dforms: (EXP (QUOTE HUMAN) (QUOTE BEF)) gap: 
ACTOR112
<<< spawn-name con CON111 head EXP args ((QUOTE CON111) (QUOTE ACTOR112) (QUOTE 
HUMAN) (QUOTE BEF))
	Spawning: DEM113 = (EXP CON111 ACTOR112 HUMAN BEF)
		===================== DEM113 ====================
		T: Search in the given DIRection for a CON in one of
		   the given CLASSES until a boundary is reached
		A: Bind the CON to the given GAP
		==================================================
<<< split-rest OBJECT : THG
<<< atm-gap OBJECT114
<<< spawn-dforms con: CON111 dforms: (EXP (QUOTE PHYS-OBJ) (QUOTE AFT)) gap: 
OBJECT114
<<< spawn-name con CON111 head EXP args ((QUOTE CON111) (QUOTE OBJECT114) (QUOTE PHYS-OBJ) (QUOTE AFT))
	Spawning: DEM115 = (EXP CON111 OBJECT114 PHYS-OBJ AFT)
		===================== DEM115 ====================
		T: Search in the given DIRection for a CON in one of
		   the given CLASSES until a boundary is reached
		A: Bind the CON to the given GAP
		==================================================
<<< split-rest TO : *
<<< *-gap TO116
<<< spawn-dforms con: CON111 dforms: (PREP (QUOTE (IN INTO ON)) (QUOTE (HUMAN 
PHYS-OBJ)) (QUOTE AFT)) gap: TO116
<<< spawn-name con CON111 head PREP args ((QUOTE CON111) (QUOTE TO116) (QUOTE (
IN INTO ON)) (QUOTE (HUMAN PHYS-OBJ)) (QUOTE AFT))
	Spawning: DEM117 = (PREP CON111 TO116 (IN INTO ON) (HUMAN PHYS-OBJ) AFT)
		===================== DEM117 ====================
		T: Search for a CON with one of the given CLASSES
		   and preceded by one of the given PREPOSITIONS
		A: The CON is bound to the given GAP
		==================================================
<<< split-rest INSTR : (PROPEL ACTOR (GRAVITY) OBJECT THG)
<<< config-gap INSTR118
<<< split-config (PROPEL ACTOR (GRAVITY) OBJECT THG)
<<< split-rest ACTOR : (GRAVITY)
<<< config-gap ACTOR119
<<< split-config (GRAVITY)
<<< split-rest OBJECT : THG
<<< atm-gap OBJECT114
	Adding to *wm*: CON111
			CON111 = (PTRANS ACTOR ACTOR112 OBJECT OBJECT114 TO 
TO116 INSTR INSTR118)
<<< run-demon-atm d-atm DEM117 con CON111
<<< param-environ d-name PREP argums (CON111 TO116 (IN INTO ON) (HUMAN PHYS-OBJ) AFT)
<<< run-demon d-name PREP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (PREP-SEARCH MYCON PREPS CLASSES DIR))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< run-demon-atm d-atm DEM115 con CON111
<<< param-environ d-name EXP argums (CON111 OBJECT114 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< run-demon-atm d-atm DEM113 con CON111
<<< param-environ d-name EXP argums (CON111 ACTOR112 HUMAN BEF)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<<test CON0
	Executing: DEM113 = (EXP CON111 ACTOR112 HUMAN BEF)
		ACTOR112 <-- CON0
	Killing: DEM113 = (EXP CON111 ACTOR112 HUMAN BEF)
<<< demon-tasks #T
<<< run-demon-atm d-atm DEM117 con CON111
<<< param-environ d-name PREP argums (CON111 TO116 (IN INTO ON) (HUMAN PHYS-OBJ) AFT)
<<< run-demon d-name PREP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (PREP-SEARCH MYCON PREPS CLASSES DIR))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< run-demon-atm d-atm DEM115 con CON111
<<< param-environ d-name EXP argums (CON111 OBJECT114 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks ()
-------------------------- 
Processing word IT 
-------------------------- 
	Adding to *wm*: CON120
			CON120 = ()
<<< spawn-dforms con: CON120 dforms: (FIND-OBJ-REF) gap: ()
<<< spawn-name con CON120 head FIND-OBJ-REF args ((QUOTE CON120))
	Spawning: DEM121 = (FIND-OBJ-REF CON120)
		===================== DEM121 ====================
		T: 
		A: Set the MYCON to the most recently mentioned object
		==================================================
<<< run-demon-atm d-atm DEM121 con CON120
<<< param-environ d-name FIND-OBJ-REF argums (CON120)
<<< run-demon d-name FIND-OBJ-REF
			kill ()
			test ()
			+act (+ACT (SET1 MYCON *MOST-RECENT-OBJ*))
			-act ()
<<<test ()
	Executing: DEM121 = (FIND-OBJ-REF CON120)
		CON120 <-- CON105
	Killing: DEM121 = (FIND-OBJ-REF CON120)
<<< run-demon-atm d-atm DEM117 con CON111
<<< param-environ d-name PREP argums (CON111 TO116 (IN INTO ON) (HUMAN PHYS-OBJ) AFT)
<<< run-demon d-name PREP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (PREP-SEARCH MYCON PREPS CLASSES DIR))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< run-demon-atm d-atm DEM115 con CON111
<<< param-environ d-name EXP argums (CON111 OBJECT114 PHYS-OBJ AFT)
<<< run-demon d-name EXP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (LET ((STOP-AT-CONJ (LAMBDA (C) (OR (AND (
CLASS? (CON-HEAD C) (QUOTE *CONJ*)) (IF (CLASS? (QUOTE HUMAN) CLASSES) 
*LOCAL-CHAR*)) (CLASS? (CON-HEAD C) (QUOTE BOUNDARY)))))) (SEARCH (LAMBDA (CON) (AND (NOT (EQ? CON MYCON)) (CLASS? (CON-HEAD CON) CLASSES))) MYCON STOP-AT-CONJ 
DIR)))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<<test CON120
	Executing: DEM115 = (EXP CON111 OBJECT114 PHYS-OBJ AFT)
		OBJECT114 <-- CON120
	Killing: DEM115 = (EXP CON111 OBJECT114 PHYS-OBJ AFT)
<<< demon-tasks #T
<<< run-demon-atm d-atm DEM117 con CON111
<<< param-environ d-name PREP argums (CON111 TO116 (IN INTO ON) (HUMAN PHYS-OBJ) AFT)
<<< run-demon d-name PREP
			kill (KILL (DEMON-EVAL MYGAP))
			test (TEST (PREP-SEARCH MYCON PREPS CLASSES DIR))
			+act (+ACT (LINK MYCON MYGAP TEST))
			-act ()
<<< demon-tasks ()
-------------------------- 
Processing word IN 
-------------------------- 
<<< split-config (PREP IS (IN))
<<< split-rest IS : (IN)
<<< config-gap IS123
<<< split-config (IN)
	Adding to *wm*: CON122
			CON122 = (PREP IS IS123)
<<< spawn-dforms con: CON122 dforms: (INS-AFT (QUOTE (PHYS-OBJ SETTING)) (QUOTE 
PREPOBJ)) gap: ()
<<< spawn-name con CON122 head INS-AFT args ((QUOTE CON122) (QUOTE (PHYS-OBJ 
SETTING)) (QUOTE PREPOBJ))
	Spawning: DEM124 = (INS-AFT CON122 (PHYS-OBJ SETTING) PREPOBJ)
		===================== DEM124 ====================
		T: Search for a CON with one of the given CLASSES
		A: Insert the given SLOT with the MYCON as its
		   GAP into the CON
		==================================================
<<< run-demon-atm d-atm DEM124 con CON122
<<< param-environ d-name