Main Page   Files   Productions   Problem Spaces   Operators   Goal Hierarchy   Groups   Prod. By Type   Todo   All  


output.soar

Path to this file:
     elaborations/
         output.soar [src]

Go to the source for this file...

Implement the "rules" of Blocks World (internalised action).

Detailed Description

As we are internalising the blocks world problem space and not implementing it externally (via the input/output structures) we must define the "rules" of the game via three production rules. These implement the operator "move-block" during the apply phase, modifying the internal model of Blocks World appropriately.

To do this we remove the previous "on"/"below" attributes and replace them with new attributes, i.e. "on.table" or "below.o" (where "o" denotes being open, or rather clear).

These rules are fairly complicated - early versions contained bugs!

Productions

apply*move-block*from-block*to-block  
apply*move-block*from-table*to-block  
apply*move-block*to-table  


Production Documentation

apply*move-block*from-block*to-block

Documented at line 66 of file output.soar
Defined at line 78 of file output.soar

Type: application

Detailed Description

Move a block from one block to another block (when allowed), updating the moving block, the (origin) block it was sitting on, and destination block.

Problem Spaces: any-ps

Operators: move-block

Source

sp {apply*move-block*from-block*to-block
   (state <s> ^operator <op>
              ^block <moving> {<> <moving> <origin>}
                              {<> <moving> <> <origin> <dest>})
   (<op> ^name move-block
        ^block <m>
        ^destination { <> table <d> })
   (<moving> ^name <m> ^on { <> table <o> } ^below o)
   (<dest>   ^name <d>                      ^below o)
   (<origin> ^name <o>                      ^below <m>)
-->
   (<moving> ^on <d>    ^on <o> -)
   (<dest>   ^below <m> ^below o -)
   (<origin> ^below o   ^below <m> -)}

apply*move-block*from-table*to-block

Documented at line 42 of file output.soar
Defined at line 54 of file output.soar

Type: application

Detailed Description

Move a block from the table to another block (when allowed), updating the moving block and destination block.

Problem Spaces: any-ps

Operators: move-block

Source

sp {apply*move-block*from-table*to-block
   (state <s> ^operator <op>
              ^block <moving> {<> <moving> <dest>})
   (<op> ^name move-block
        ^block <m>
        ^destination { <> table <d> })
   (<moving> ^name <m> ^on table ^below o)
   (<dest>   ^name <d>           ^below o)
-->
   (<moving> ^on <d>    ^on table -)
   (<dest>   ^below <m> ^below o -)}

apply*move-block*to-table

Documented at line 18 of file output.soar
Defined at line 30 of file output.soar

Type: application

Detailed Description

Move a block to the table (when allowed), updating the both the moving block and the (origin) block was sitting on.

Problem Spaces: any-ps

Operators: move-block

Source

sp {apply*move-block*to-table
   (state <s> ^operator <op>
              ^block <moving> {<> <moving> <origin>})
   (<op> ^name move-block
        ^block <m>
        ^destination table)
   (<moving> ^name <m> ^on <o> ^below o)
   (<origin> ^name <o>         ^below <m>)
-->
   (<moving> ^on table ^on <o> -)
   (<origin> ^below o ^below <m> - )}


Generated with SoarDoc on Mon Jan 24 15:38:47 2005 by richard