Main Page Files Productions Problem Spaces Operators Goal Hierarchy Groups Prod. By Type Todo All
Path to this file:
elaborations/
output.soar
[src]
Go to the source for this file...
Implement the "rules" of Blocks World (internalised action).
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!
apply*move-block*from-block*to-block | |
apply*move-block*from-table*to-block | |
apply*move-block*to-table |
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 DescriptionMove 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
Sourcesp {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 DescriptionMove a block from the table to another block (when allowed), updating the moving block and destination block.
Problem Spaces: any-ps Operators: move-block
Sourcesp {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 DescriptionMove 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
Sourcesp {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> - )} |