Abstract State Machines (ASMs) are an extension of Finite State Machine where unstructured control states are replaced by states with arbitrary complex data. A state represents the instantaneous configuration of the system under development, and transition rules describe the change of state. ASM states are multi-sorted first-order structures, i.e., domains of objects with functions and predicates defined on them. ASM transition rules express how function interpretations are modified from one state to the next one, and therefore describe the system configuration changes.