The blocksworld generators use the random bw state generator provided
by John Slaney and Sylvie Thiebaux. This is contained in the bwstates.1
subdirectory. The directories 3ops/2pddl and 4ops/2pddl contain
programs that translate the generator's output to PDDL. The random
instances can then be generated by running the script

./blocksworld <ops> <num>

which takes as input the number of operators (either 3 or 4) and blocks
in the problem to be generated. This is currently maximal 200 due to
the random state generator. To increase that, edit the Makefile in
bwstates.1 and increase SIZE.

## Blocksworld-3ops

*   Origin: Goes back to the annals of AI, seems to be first mentioned in
    Terry Winograd's PhD thesis 1972. In a 1974 planning paper by Gerald
    Sussman. Taken from the [IPP][6] domain collection.
*   Adaptions: None.
*   Description: Classical untyped STRIPS domain, where stackable blocks
    need to be re-assembled on a table with unlimited space.
    Representation uses 3 operators, moving a block from the table to
    another block, a block from another block to the table, or a block
    from a block to another block. Semantically, the representation does
    not use a robot arm, in difference to the 4 operator representation
    below. The initial state specifies a complete state, the goal state
    specifies only the on relations required between any two blocks.
*   Parameters: Number of blocks.
*   Generation: Uses random blocksworld state generator provided by John
    Slaney and Sylvie Thiebaux. Simply translates two such states into
    PDDL, and prints them out as the initial state and the goal state,
    where the latter state has all facts removed except the on relations
    between blocks.


## Blocksworld-4ops

*   Origin: See above. Used in the AIPS-2000 competition. Taken from the
    [IPP][6] domain collection.
*   Adaptions: None.
*   Description: Like above, but uses a robot arm that can be used for
    stacking a block onto a block, unstacking a block from a block,
    putting down a block, or picking up a block.
*   Parameters: Number of blocks.
*   Generation: Like above.
