For example, for the three_block_tower problem:
from planning import *
three_block_tower().expand_actions()
should returns:
[Move(B, A, C), Move(B, C, A), Move(B, Table, A), Move(B, Table, C), Move(A, B, C), Move(A, C, B), Move(A, Table, B), Move(A, Table, C), Move(C, B, A), Move(C, A, B), Move(C, Table, B), Move(C, Table, A), MoveToTable(B, A), MoveToTable(B, C), MoveToTable(A, B), MoveToTable(A, C), MoveToTable(C, B), MoveToTable(C, A)]
but it also returns actions such as Move(Table, _, _), Move(_, _, Table), MoveToTable(Table, _) or MoveToTable(_, Table) which are illegal because doesn't satisfy the arguments' domain.