CS724 program 2

Take the "blocks world" program in blocks.l and add the following features:

1. Blocks are to be "openable". A block B can be opened by (open-object B) and closed by (close-object B). The open-object and close-object functions are to be written in the same style as move and valid-support in the program.

2. You can not put-on an open block.

3. You can (put-in B A) if A is open and if B is smaller than A in each dimension. You do not have to worry about changing the orientation of either block.

3. A block inside another block which is closed can not be directly moved.

4. A block inside another block which is open can be moved the same as any other block.

5. A closed block that contains one or more blocks can be moved. When it is moved, all of its contents are also moved. (And the boxes are to still be inside the other box.)

You will find a version of the blocks under the "tools" section on the Cs724 home page. On some common access machines you will also find a copy of the program in ~/juell/cs724pub/blocks.l

When you turn in the program, you will also turn in a printout of a VRML image. This image will show the sequence of states your test data steps the world through.