specific errors with TADS under Rapper

Bob is about to put the ball on the table. One specific and clear error, which is apparently an error in TADS, is that the ball, being put on the table, ends up in the large box that’s on the table.

Then, when you take that box, the ball stays on the table. An error with the lister or something.

Here is the transcript, from the moment Bob enters the room and puts the ball on the table. Bob’s raptrace is on:

[rant]Bob enters from the south.

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]…satisfied
trying rDo rObjOn [Ball, KitchenTable] for rObjOn [Ball, KitchenTable]…firing
Action resolved: [rObjOn, [Ball, KitchenTable]]
Full backwards path: [[rObjOn, [Ball, KitchenTable]]].

z
Time passes…

look
Kitchen
Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table (on which are a big box (which contains a small box) and a ball) here.

Bob is standing here.

take ball
Taken.

put ball on table
Done.

look
Kitchen
Kitchen. South to living room. Southeast to Bathroom.
You see a kitchen table (on which are a big box (which contains a small box) and a ball) here.
Bob is standing here.

take big box
Taken.

drop it
Dropped.

take ball
Taken.

put ball on table
Done.

undo
Taking back one turn: “put ball on table”.

Kitchen
Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table and a big box (which contains a small box) here.

Bob is standing here.

look
Kitchen
Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table and a big box (which contains a small box) here.

Bob is standing here.

undo
Taking back one turn: “look”.

Kitchen
Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table and a big box (which contains a small box) here.

Bob is standing here.

undo
Taking back one turn: “take ball”.

Kitchen
Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table (on which is a ball) and a big box (which contains a small box) here.

Bob is standing here.

  • huh. containment error.
    Comment not recorded. Use SCRIPT if you want to start recording the transcript.[/rant]

Now that’s a TADS error, from what I can tell. There are also Rapper errors, or at least cases where RAP fails to fail gracefully, that I’ll post in the hopes someone can help me unravel where the bugs are.

Conrad.
t3RAP.zip (53.7 KB)

The RAP-specific transcript, which cuts off at the time Bob completes his mission. Most notably, when Bob has an empty plan, nothing happens… which is fine, but there are times when Bob has an empty plan when it seems to a human that his problems are solveable.

Also, when Bob does things successfully in full view, those actions are not reported to the player. Thus when Bob puts the ball on the table, he just seems to be standing there. Nothing evident has happened at all.

I’m still learning all this.

Conrad.

[rant]The following output is for debugging and instructional purposes, and only prints when the game is being run in debug mode:

rBuildMap: generating entry lists
living room: kitchen bedroom
kitchen: living room bathroom
bedroom: living room door_to bedroomcloset
bedroomcloset: door_to bedroom
bathroom: kitchen
rBuildMap: producing default plans
rBuildMap: living room = [[rBe, rIn, Kitchen, rDo, rIn, LivingRoom], [rBe, rIn, Bedroom, rDo, rIn, LivingRoom]]
rBuildMap: kitchen = [[rBe, rIn, LivingRoom, rDo, rIn, Kitchen], [rBe, rIn, Bathroom, rDo, rIn, Kitchen]]
rBuildMap: bedroom = [[rBe, rIn, LivingRoom, rDo, rIn, Bedroom], [rBe, rOpen, ClosetDoor, rBe, rIn, BedroomCloset, rDo, rIn, Bedroom]]
rBuildMap: bedroomcloset = [[rBe, rOpen, BedroomClosetDoor, rBe, rIn, Bedroom, rDo, rIn, BedroomCloset]]
rBuildMap: bathroom = [[rBe, rIn, Kitchen, rDo, rIn, Bathroom]]

This is a simple testbed for RAP (Reactive Agent Planner) version 1.2 for TADS 3.

The game is a simple map of a small apartment. There’s a key in the kitchen, another in the bathroom cabinet, and a ball locked in a lockbox in the bedroom closet (also locked).

There is one RAP-enabled actor, a dog named Rupert, who starts in the living room with you, the player. His primary goal is to get the ball and put it on the kitchen table. As the planbase is not sophisticated, Rupert has perfect knowledge of the state and location of all objects at all times.

This test map is trivial, but it does demonstrate a RAP actor’s ability to react to game events - Rupert will begin by seeking two keys, one for the closet door, the other for the lockbox; if you get the keys, he will ask you for them and follow you. [In this version of the testgame, the PC is also a RAP-enabled actor, and will automatically give items asked for; this is just for testing and probably not good default behavior.] If you unlock the obstacles yourself he will ignore the keys and go straight for the ball. If you have the ball he will follow you, and ask you for it. If he gets the ball, he will give it to you; then he will ask for it back.

Test: the player is also a RAP-enabled actor, and is programmed to automatically accept Rupert’s request for items.

The debugging spell >RAPTRACE RUPERT will let you read Rupert’s thought processes. (The verb is only available in debug mode.)

Test: Rupert is temporarily disabled, in favor of Bob, who is designed to test t3knowledge and t3rapOrder.
Try:

BOB, PUT BALL ON TABLE

RAP TESTBED
Reactive Agent Planner ver. 1.2 testbed
Copyright © 1998 by Nate Cull
Tads-3 port and revision/extension (t3RAP) Copyright © 2002-2004 by Steve Breslin

Living Room

Living room. South to bedroom. North to kitchen.

Bob and Rupert are standing here.

raptrace bob
Bob’s rTrace is now on.

bob, put ball on table
RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…satisfied
trying rBe rReachable BronzeKey for rHave BronzeKey
trying rBe rOpen Cupboard for rReachable BronzeKey
trying rBe rReachable Cupboard for rOpen Cupboard
trying rBe rIn Bathroom for rReachable Cupboard
trying rBe rIn Kitchen for rIn Bathroom
trying rBe rIn LivingRoom for rIn Kitchen…satisfied
trying rDo rIn Kitchen for rIn Kitchen…firing
Action resolved: [rIn, Kitchen]
Full backwards path: [[rIn, Kitchen], [rIn, Bathroom], [rReachable, Cupboard], [rOpen, Cupboard], [rReachable, BronzeKey], [rHave, BronzeKey], [rUnlocked, LockBox], [rOpen, LockBox], [rReachable, Ball], [rHave, Ball], [rObjOn, [Ball, KitchenTable]]].
Bob leaves to the north.

n
Kitchen

Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table (on which is a big box) here.

Bob is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…satisfied
trying rBe rReachable BronzeKey for rHave BronzeKey
trying rBe rOpen Cupboard for rReachable BronzeKey
trying rBe rReachable Cupboard for rOpen Cupboard
trying rBe rIn Bathroom for rReachable Cupboard
trying rBe rIn Kitchen for rIn Bathroom…satisfied
trying rDo rIn Bathroom for rIn Bathroom…firing
Action resolved: [rIn, Bathroom]
Full backwards path: [[rIn, Bathroom], [rReachable, Cupboard], [rOpen, Cupboard], [rReachable, BronzeKey], [rHave, BronzeKey], [rUnlocked, LockBox], [rOpen, LockBox], [rReachable, Ball], [rHave, Ball], [rObjOn, [Ball, KitchenTable]]].
Bob leaves to the southeast.

se
Bathroom

A bathroom. Northwest to Kitchen.
There’s a small cupboard.

Bob is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…satisfied
trying rBe rReachable BronzeKey for rHave BronzeKey
trying rBe rOpen Cupboard for rReachable BronzeKey
trying rBe rReachable Cupboard for rOpen Cupboard…satisfied
trying rDo rOpen Cupboard for rOpen Cupboard…firing
Action resolved: [rOpen, Cupboard]
Full backwards path: [[rOpen, Cupboard], [rReachable, BronzeKey], [rHave, BronzeKey], [rUnlocked, LockBox], [rOpen, LockBox], [rReachable, Ball], [rHave, Ball], [rObjOn, [Ball, KitchenTable]]].
Bob opens the cupboard, revealing a bronze key.

take key
Taken.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan
Bob cannot see that.

nw
Kitchen

Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table (on which is a big box) here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

s
Living Room

Living room. South to bedroom. North to kitchen.

Rupert is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

drop key
Dropped.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…satisfied
trying rBe rReachable BronzeKey for rHave BronzeKey
trying rBe rIn LivingRoom for rReachable BronzeKey
trying rBe rIn Kitchen for rIn LivingRoom
trying rBe rIn Bedroom for rIn LivingRoom
trying rBe rIn LivingRoom for rIn Kitchen…dupe
trying rBe rIn Bathroom for rIn Kitchen…satisfied
trying rDo rIn Kitchen for rIn Kitchen…firing
Action resolved: [rIn, Kitchen]
Full backwards path: [[rIn, Kitchen], [rIn, LivingRoom], [rReachable, BronzeKey], [rHave, BronzeKey], [rUnlocked, LockBox], [rOpen, LockBox], [rReachable, Ball], [rHave, Ball], [rObjOn, [Ball, KitchenTable]]].

take key
Taken.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

n
Kitchen

Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table (on which is a big box) here.

Bob is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

Bob cannot see that. Bob must be holding the ball to do that.

se
Bathroom

A bathroom. Northwest to Kitchen.
There’s a small cupboard.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

nw
Kitchen

Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table (on which is a big box) here.

Bob is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

Bob cannot see that. Bob must be holding the ball to do that.

s
Living Room

Living room. South to bedroom. North to kitchen.

Rupert is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

s
Bedroom

Bedroom. North to living room. West (through door) to closet.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

w

(first trying to open the closet door)
The closet door seems to be locked.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

unlock closet
What do you want to unlock it with?

key
The bronze key doesn’t fit the lock.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

n
Living Room

Living room. South to bedroom. North to kitchen.

Rupert is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

n
Kitchen

Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table (on which is a big box) here.

Bob is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

Bob cannot see that. Bob must be holding the ball to do that.

open box
Opening the big box reveals a small box.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

Bob cannot see that. Bob must be holding the ball to do that.

take small box
Taken.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

Bob cannot see that. Bob must be holding the ball to do that.

open small box
Opening the small box reveals an iron key.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

Bob cannot see that. Bob must be holding the ball to do that.

take key
You take the iron key.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

Bob cannot see that. Bob must be holding the ball to do that.

close box
Which box do you mean, the small box, or the big box?

small box
Closed.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

Bob cannot see that. Bob must be holding the ball to do that.

put small box in big box
Done.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

Bob cannot see that. Bob must be holding the ball to do that.

s
Living Room

Living room. South to bedroom. North to kitchen.

Rupert is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

s
Bedroom

Bedroom. North to living room. West (through door) to closet.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

unlock door with iron key
Unlocked.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

open it
You open the closet door.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

w
BedroomCloset

Bedroom closet. East (through door) to bedroom

You see a lock box here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

i
You are carrying a bronze key and an iron key.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rUnlocked LockBox for rOpen LockBox
trying rBe rHave BronzeKey for rUnlocked LockBox
trying rBe rNotOwnedByOther BronzeKey for rHave BronzeKey…empty plan

open box with bronze key
The story doesn’t understand that command.

unlock box with bronze key
You unlock the lock box.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rReachable LockBox for rOpen LockBox
trying rBe rIn BedroomCloset for rReachable LockBox
trying rBe rOpen BedroomClosetDoor for rIn BedroomCloset…satisfied
trying rBe rIn Bedroom for rIn BedroomCloset
trying rBe rIn LivingRoom for rIn Bedroom
trying rBe rOpen ClosetDoor for rIn Bedroom…satisfied
trying rBe rIn BedroomCloset for rIn Bedroom…dupe

e
Bedroom

Bedroom. North to living room. West (through door) to closet.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rReachable LockBox for rOpen LockBox
trying rBe rIn BedroomCloset for rReachable LockBox
trying rBe rOpen BedroomClosetDoor for rIn BedroomCloset…satisfied
trying rBe rIn Bedroom for rIn BedroomCloset
trying rBe rIn LivingRoom for rIn Bedroom
trying rBe rOpen ClosetDoor for rIn Bedroom…satisfied
trying rBe rIn BedroomCloset for rIn Bedroom…dupe

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rReachable LockBox for rOpen LockBox
trying rBe rIn BedroomCloset for rReachable LockBox
trying rBe rOpen BedroomClosetDoor for rIn BedroomCloset…satisfied
trying rBe rIn Bedroom for rIn BedroomCloset
trying rBe rIn LivingRoom for rIn Bedroom
trying rBe rOpen ClosetDoor for rIn Bedroom…satisfied
trying rBe rIn BedroomCloset for rIn Bedroom…dupe

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rReachable LockBox for rOpen LockBox
trying rBe rIn BedroomCloset for rReachable LockBox
trying rBe rOpen BedroomClosetDoor for rIn BedroomCloset…satisfied
trying rBe rIn Bedroom for rIn BedroomCloset
trying rBe rIn LivingRoom for rIn Bedroom
trying rBe rOpen ClosetDoor for rIn Bedroom…satisfied
trying rBe rIn BedroomCloset for rIn Bedroom…dupe

close door
Closed.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rReachable LockBox for rOpen LockBox
trying rBe rIn BedroomCloset for rReachable LockBox
trying rBe rOpen BedroomClosetDoor for rIn BedroomCloset
trying rBe rReachable BedroomClosetDoor for rOpen BedroomClosetDoor
trying rBe rIn Bedroom for rReachable BedroomClosetDoor
trying rBe rIn LivingRoom for rIn Bedroom
trying rBe rOpen ClosetDoor for rIn Bedroom
trying rBe rIn Kitchen for rIn LivingRoom…satisfied
trying rDo rIn LivingRoom for rIn LivingRoom…firing
Action resolved: [rIn, LivingRoom]
Full backwards path: [[rIn, LivingRoom], [rIn, Bedroom], [rReachable, BedroomClosetDoor], [rOpen, BedroomClosetDoor], [rIn, BedroomCloset], [rReachable, LockBox], [rOpen, LockBox], [rReachable, Ball], [rHave, Ball], [rObjOn, [Ball, KitchenTable]]].

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rReachable LockBox for rOpen LockBox
trying rBe rIn BedroomCloset for rReachable LockBox
trying rBe rOpen BedroomClosetDoor for rIn BedroomCloset
trying rBe rReachable BedroomClosetDoor for rOpen BedroomClosetDoor
trying rBe rIn Bedroom for rReachable BedroomClosetDoor
trying rBe rIn LivingRoom for rIn Bedroom…satisfied
trying rDo rIn Bedroom for rIn Bedroom…firing
Action resolved: [rIn, Bedroom]
Full backwards path: [[rIn, Bedroom], [rReachable, BedroomClosetDoor], [rOpen, BedroomClosetDoor], [rIn, BedroomCloset], [rReachable, LockBox], [rOpen, LockBox], [rReachable, Ball], [rHave, Ball], [rObjOn, [Ball, KitchenTable]]].
Bob enters from the north.

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rReachable LockBox for rOpen LockBox
trying rBe rIn BedroomCloset for rReachable LockBox
trying rBe rOpen BedroomClosetDoor for rIn BedroomCloset
trying rBe rReachable BedroomClosetDoor for rOpen BedroomClosetDoor…satisfied
trying rDo rOpen BedroomClosetDoor for rOpen BedroomClosetDoor…firing
Action resolved: [rOpen, BedroomClosetDoor]
Full backwards path: [[rOpen, BedroomClosetDoor], [rIn, BedroomCloset], [rReachable, LockBox], [rOpen, LockBox], [rReachable, Ball], [rHave, Ball], [rObjOn, [Ball, KitchenTable]]].

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rReachable LockBox for rOpen LockBox
trying rBe rIn BedroomCloset for rReachable LockBox
trying rBe rOpen BedroomClosetDoor for rIn BedroomCloset…satisfied
trying rBe rIn Bedroom for rIn BedroomCloset…satisfied
trying rDo rIn BedroomCloset for rIn BedroomCloset…firing
Action resolved: [rIn, BedroomCloset]
Full backwards path: [[rIn, BedroomCloset], [rReachable, LockBox], [rOpen, LockBox], [rReachable, Ball], [rHave, Ball], [rObjOn, [Ball, KitchenTable]]].
Bob leaves through the closet door.

lock closet door with iron key

(first closing the closet door)
Locked.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball
trying rBe rOpen LockBox for rReachable Ball
trying rBe rReachable LockBox for rOpen LockBox…satisfied
trying rDo rOpen LockBox for rOpen LockBox…firing
Action resolved: [rOpen, LockBox]
Full backwards path: [[rOpen, LockBox], [rReachable, Ball], [rHave, Ball], [rObjOn, [Ball, KitchenTable]]].

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]
trying rBe rNotOwnedByOther Ball for rHave Ball…satisfied
trying rBe rReachable Ball for rHave Ball…satisfied
trying rDo rHave Ball for rHave Ball…firing
Action resolved: [rHave, Ball]
Full backwards path: [[rHave, Ball], [rObjOn, [Ball, KitchenTable]]].

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen
trying rBe rIn Bathroom for rIn Kitchen
trying rBe rIn Kitchen for rIn LivingRoom…dupe
trying rBe rIn Bedroom for rIn LivingRoom
trying rBe rIn Kitchen for rIn Bathroom…dupe
trying rBe rIn LivingRoom for rIn Bedroom…dupe
trying rBe rOpen ClosetDoor for rIn Bedroom
trying rBe rUnlocked ClosetDoor for rOpen ClosetDoor
trying rBe rHave IronKey for rUnlocked ClosetDoor
trying rBe rNotOwnedByOther IronKey for rHave IronKey…empty plan

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen
trying rBe rIn Bathroom for rIn Kitchen
trying rBe rIn Kitchen for rIn LivingRoom…dupe
trying rBe rIn Bedroom for rIn LivingRoom
trying rBe rIn Kitchen for rIn Bathroom…dupe
trying rBe rIn LivingRoom for rIn Bedroom…dupe
trying rBe rOpen ClosetDoor for rIn Bedroom
trying rBe rUnlocked ClosetDoor for rOpen ClosetDoor
trying rBe rHave IronKey for rUnlocked ClosetDoor
trying rBe rNotOwnedByOther IronKey for rHave IronKey…empty plan

n
Living Room

Living room. South to bedroom. North to kitchen.

Rupert is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen
trying rBe rIn Bathroom for rIn Kitchen
trying rBe rIn Kitchen for rIn LivingRoom…dupe
trying rBe rIn Bedroom for rIn LivingRoom
trying rBe rIn Kitchen for rIn Bathroom…dupe
trying rBe rIn LivingRoom for rIn Bedroom…dupe
trying rBe rOpen ClosetDoor for rIn Bedroom
trying rBe rUnlocked ClosetDoor for rOpen ClosetDoor
trying rBe rHave IronKey for rUnlocked ClosetDoor
trying rBe rNotOwnedByOther IronKey for rHave IronKey…empty plan

drop iron key
Dropped.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen
trying rBe rIn Bathroom for rIn Kitchen
trying rBe rIn Kitchen for rIn LivingRoom…dupe
trying rBe rIn Bedroom for rIn LivingRoom
trying rBe rIn Kitchen for rIn Bathroom…dupe
trying rBe rIn LivingRoom for rIn Bedroom…dupe
trying rBe rOpen ClosetDoor for rIn Bedroom
trying rBe rUnlocked ClosetDoor for rOpen ClosetDoor
trying rBe rHave IronKey for rUnlocked ClosetDoor
trying rBe rNotOwnedByOther IronKey for rHave IronKey…satisfied
trying rBe rReachable IronKey for rHave IronKey
trying rBe rIn LivingRoom for rReachable IronKey…dupe

take all

iron key: Taken.

iron key: You are already carrying the iron key.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen
trying rBe rIn Bathroom for rIn Kitchen
trying rBe rIn Kitchen for rIn LivingRoom…dupe
trying rBe rIn Bedroom for rIn LivingRoom
trying rBe rIn Kitchen for rIn Bathroom…dupe
trying rBe rIn LivingRoom for rIn Bedroom…dupe
trying rBe rOpen ClosetDoor for rIn Bedroom
trying rBe rUnlocked ClosetDoor for rOpen ClosetDoor
trying rBe rHave IronKey for rUnlocked ClosetDoor
trying rBe rNotOwnedByOther IronKey for rHave IronKey…empty plan

s
Bedroom

Bedroom. North to living room. West (through door) to closet.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen
trying rBe rIn Bathroom for rIn Kitchen
trying rBe rIn Kitchen for rIn LivingRoom…dupe
trying rBe rIn Bedroom for rIn LivingRoom
trying rBe rIn Kitchen for rIn Bathroom…dupe
trying rBe rIn LivingRoom for rIn Bedroom…dupe
trying rBe rOpen ClosetDoor for rIn Bedroom
trying rBe rUnlocked ClosetDoor for rOpen ClosetDoor
trying rBe rHave IronKey for rUnlocked ClosetDoor
trying rBe rNotOwnedByOther IronKey for rHave IronKey…empty plan

s
You can’t go that way. Obvious exits lead north, back to the living room; and west, to the bedroomcloset.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen
trying rBe rIn Bathroom for rIn Kitchen
trying rBe rIn Kitchen for rIn LivingRoom…dupe
trying rBe rIn Bedroom for rIn LivingRoom
trying rBe rIn Kitchen for rIn Bathroom…dupe
trying rBe rIn LivingRoom for rIn Bedroom…dupe
trying rBe rOpen ClosetDoor for rIn Bedroom
trying rBe rUnlocked ClosetDoor for rOpen ClosetDoor
trying rBe rHave IronKey for rUnlocked ClosetDoor
trying rBe rNotOwnedByOther IronKey for rHave IronKey…empty plan

unlock door with iron key and open it
Unlocked.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen
trying rBe rIn Bathroom for rIn Kitchen
trying rBe rIn Kitchen for rIn LivingRoom…dupe
trying rBe rIn Bedroom for rIn LivingRoom
trying rBe rIn Kitchen for rIn Bathroom…dupe
trying rBe rIn LivingRoom for rIn Bedroom…dupe
trying rBe rOpen ClosetDoor for rIn Bedroom
trying rBe rReachable ClosetDoor for rOpen ClosetDoor…satisfied
trying rDo rOpen ClosetDoor for rOpen ClosetDoor…firing
Action resolved: [rOpen, ClosetDoor]
Full backwards path: [[rOpen, ClosetDoor], [rIn, Bedroom], [rIn, LivingRoom], [rIn, Kitchen], [rReachable, KitchenTable], [rObjOn, [Ball, KitchenTable]]].
Someone opens the closet door from the other side.

The closet door is already open.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen
trying rBe rIn Bathroom for rIn Kitchen
trying rBe rIn Kitchen for rIn LivingRoom…dupe
trying rBe rIn Bedroom for rIn LivingRoom
trying rBe rIn Kitchen for rIn Bathroom…dupe
trying rBe rIn LivingRoom for rIn Bedroom…dupe
trying rBe rOpen ClosetDoor for rIn Bedroom…satisfied
trying rBe rIn BedroomCloset for rIn Bedroom…satisfied
trying rDo rIn Bedroom for rIn Bedroom…firing
Action resolved: [rIn, Bedroom]
Full backwards path: [[rIn, Bedroom], [rIn, LivingRoom], [rIn, Kitchen], [rReachable, KitchenTable], [rObjOn, [Ball, KitchenTable]]].
Bob enters through the closet door.

n
Living Room

Living room. South to bedroom. North to kitchen.

Rupert is standing here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen
trying rBe rIn Bathroom for rIn Kitchen
trying rBe rIn Kitchen for rIn LivingRoom…dupe
trying rBe rIn Bedroom for rIn LivingRoom…satisfied
trying rDo rIn LivingRoom for rIn LivingRoom…firing
Action resolved: [rIn, LivingRoom]
Full backwards path: [[rIn, LivingRoom], [rIn, Kitchen], [rReachable, KitchenTable], [rObjOn, [Ball, KitchenTable]]].
Bob enters from the south.

n
Kitchen

Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table (on which is a big box (which contains a small box)) here.

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]
trying rBe rIn Kitchen for rReachable KitchenTable
trying rBe rIn LivingRoom for rIn Kitchen…satisfied
trying rDo rIn Kitchen for rIn Kitchen…firing
Action resolved: [rIn, Kitchen]
Full backwards path: [[rIn, Kitchen], [rReachable, KitchenTable], [rObjOn, [Ball, KitchenTable]]].
Bob enters from the south.

z
Time passes…

RAP decision trace for Bob: master plan = (rObjOn, [Ball, KitchenTable])
trying rBe rHave Ball for rObjOn [Ball, KitchenTable]…satisfied
trying rBe rReachable KitchenTable for rObjOn [Ball, KitchenTable]…satisfied
trying rDo rObjOn [Ball, KitchenTable] for rObjOn [Ball, KitchenTable]…firing
Action resolved: [rObjOn, [Ball, KitchenTable]]
Full backwards path: [[rObjOn, [Ball, KitchenTable]]].

z
Time passes…

look
Kitchen

Kitchen. South to living room. Southeast to Bathroom.

You see a kitchen table (on which are a big box (which contains a small box) and a ball) here.

Bob is standing here.[/rant]

I’m not seeing the error. I don’t see a line where the ball ends up in the box. It all seems very straightforward to me. (1) The ball is on the table, where I gather it belongs, because Bob has just put it there. (2) You take the ball, and then put it back on the table. (3) You take the big box and drop it on the floor. (4) You take the ball again and put it back on the table, where it was. (5) You undo putting the ball on the table. You are now holding the ball. (6) You look, and then undo that action. (7) Rewinding backwards, you now undo taking the ball OFF of the table. The ball is now on the table, and the big box is on the floor. No, there’s no error there.

Those are my notes on the first transcript. The second one I’m not even going to look at, because I’ve never used RAP and have no idea what you’re doing with it.

No, you’re right, Jim. I’m misreading the containment parens, as if the outer set represented the containment of the big box. My error.

Conrad.