The domain "floor-tile" is about painting a grid of tiles with a set of robots. The robot can hold exactly one color at a time and can move around the grid of tiles one tile at a time. A robot can paint a tile with the color it is currently holding, provided that the tile is “clear” (i.e., not painted and not occupied by the robot) and the tile is accessible to the robot (i.e., the tile to be painted is above or below the current position of the robot). 
There are 7 actions allowed:

1) change-color
Example usage: (robot1 c c2) 
Meaning: Robot robot1 changes it's paint gun color from c to c2.
• Purpose: Allows the robot to switch the color it is currently holding to another color that is available.  
• Precondition:  
  – The robot must already have a color c.  
  – The new color c2 must be available.  
• Effect:  
  – The robot no longer has color C, but now has color C2. 


2) paint-up
Example usage:  (paint-up robot1 tile_(x-1)-y tile_x-y c)  
Meaning: Robot robot1, standing on tile tile_x-y, paints the tile above it, tile_(x-1)-y, with the color c, which it is holding.  
• Purpose: Paints the tile directly above the robot’s current position with the robot’s current color.  
• Precondition:  
  - The robot must be standing on tile_x-y.
  - Tile tile_(x-1)-y exists and it is directly above tile_x-y where the robot is standing currently (i.e., this tile must be in the same column as the robot and in the row above the robot).
  - Tile tile_(x-1)-y is clear (i.e., it has not been painted and is not occupied by the robot).
  – The robot must be holding some color C.  
• Effect:  
  – Tile tile_(x-1)-y is painted with color c.
  - Tile tile_(x-1)-y is no longer “clear.” 


3) paint-down
Example usage: (paint-down robot1 tile_(x+1)-y tile_x-y c)
Meaning: Robot robot1, standing on tile tile_x-y, paints the tile below it, tile_(x+1)-y, with the color c, which it is holding.
• Purpose: Paints the tile directly below the robot’s current position with the robot’s current color.
• Precondition:
  – The robot must be standing on tile_x-y.
  – Tile tile_(x+1)-y exists and it is directly below tile_x-y (i.e., this tile must be in the same column as the robot and in the row below the robot).
  – Tile tile_(x+1)-y is clear (i.e., it has not been painted and is not occupied by the robot).
  – The robot must be holding some color c.
• Effect:
  – Tile tile_(x+1)-y is painted with color c.
  – Tile tile_(x+1)-y is no longer “clear.”

4) up
Example usage: (up robot1 tile_x-y tile_(x-1)-y)
Meaning: Robot robot1, standing on tile tile_x-y, moves to the tile directly above it, tile_(x-1)-y.
• Purpose: Moves the robot from its current position to the tile directly above it.
• Precondition:   
  - The robot must be standing on tile_x-y.
  - Tile tile_(x-1)-y exists and is directly above tile_x-y (i.e., in the same column and in the row above).
  - Tile tile_(x-1)-y must be clear (i.e., it is not painted or occupied).
• Effect:
  - The robot is now standing on tile_(x-1)-y.
  - Tile tile_x-y becomes clear.
  - Tile tile_(x-1)-y is no longer clear.

5) down
Example usage: (down robot1 tile_x-y tile_(x+1)-y)
Meaning: Robot robot1, standing on tile tile_x-y, moves to the tile directly below it, tile_(x+1)-y.
• Purpose: Moves the robot from its current position to the tile directly below it.
• Precondition:
  - The robot must be standing on tile_x-y.
  - Tile tile_(x+1)-y exists and is directly below tile_x-y (i.e., in the same column and in the row below).
  - Tile tile_(x+1)-y must be clear (i.e., it is not painted or occupied).
• Effect:
  - The robot is now standing on tile_(x+1)-y.
  - Tile tile_x-y becomes clear.
  - Tile tile_(x+1)-y is no longer clear.

6) right
Example usage: (right robot1 tile_x-y tile_x-(y+1))
Meaning: Robot robot1, standing on tile tile_x-y, moves to the tile directly to its right, tile_x-(y+1).
Purpose: Moves the robot from its current position to the tile directly to its right.
• Precondition:
  - The robot must be standing on tile_x-y.
  - Tile tile_x-(y+1) exists and is directly to the right of tile_x-y (i.e., in the same row and in the column to the right).
  - Tile tile_x-(y+1) must be clear (i.e., it is not painted or occupied).
• Effect:
  - The robot is now standing on tile_x-(y+1).
  - Tile tile_x-y becomes clear.
  - Tile tile_x-(y+1) is no longer clear.
  
7) left
Example usage: (left robot1 tile_x-y tile_x-(y-1))
Meaning: Robot robot1, standing on tile tile_x-y, moves to the tile directly to its left, tile_x-(y-1).
• Purpose: Moves the robot from its current position to the tile directly to its left.
• Precondition:
  - The robot must be standing on tile_x-y.
  - Tile tile_x-(y-1) exists and is directly to the left of tile_x-y (i.e., in the same row and in the column to the left).
  - Tile tile_x-(y-1) must be clear (i.e., it is not painted or occupied).
• Effect:
  - The robot is now standing on tile_x-(y-1).
  - Tile tile_x-y becomes clear.
  - Tile tile_x-(y-1) is no longer clear.
