Block allows you to set up an environment in which the values of variables can temporarily be changed.
When you execute a block, values assigned to x, y, ... are cleared. When the execution of the block is finished, the original values of these symbols are restored.
Block affects only the values of symbols, not their names.
Initial values specified for x, y, ... are evaluated before x, y, ... are cleared.
You can use Block as the right-hand side of a transformation rule with a condition attached.