# State transition system

{{#invoke:Hatnote|hatnote}}
In theoretical computer science, a **state transition system** is an abstract machine used in the study of computation. The machine consists of a set of states and transitions between states, which may be labeled with labels chosen from a set; the same label may appear on more than one transition. If the label set is a singleton, the system is essentially unlabeled, and a simpler definition that omits the labels is possible.

State transition systems coincide mathematically with abstract rewriting systems (as explained further in this article). State transition systems differ however from finite state automata in several ways:

- In a state transition system the set of states is not necessarily finite, or even countable.
- In a state transition system the set of transitions is not necessarily finite, or even countable.
- A finite-state automaton distinguishes a special "start" state and a set of special "final" states.

State transition systems can be represented as directed graphs.

## Formal definition

Formally, a state transition system is a pair (*S*, →) where *S* is a set (of states) and → ⊆ *S* × *S* is a binary relation over *S* (of transitions). If *p*, *q* ∈ *S*, (*p*, *q*) ∈ → is usually written as *p* → *q*. This represents the fact that there is a transition from state *p* to state *q*.

A labelled transition system is a tuple (*S*, Λ, →) where *S* is a set (of states), Λ is a set (of labels) and → ⊆ *S* × Λ × *S* is a ternary relation (of labelled transitions). If *p*, *q* ∈ *S* and α ∈ Λ, then (*p*,α,*q*) ∈ → is written as

This represents the fact that there is a transition from state *p* to state *q* with label α. Labels can represent different things depending on the language of interest. Typical uses of labels include representing input expected, conditions that must be true to trigger the transition, or actions performed during the transition.

If, for any given *p* and α, there exists only a single tuple (*p*,α,*q*) in →, then one says that α is *deterministic* (for *p*). If, for any given *p* and α, there exists at least one tuple (*p*,α,*q*) in →, then one says that α is *executable* (for *p*).

## Relation between labelled and unlabelled transition systems.

There are many relations between these concepts. Some are simple, such as observing that a labelled transition system where the set of labels consists of only one element is equivalent to an unlabelled transition system. However not all these relations are equally trivial.

## Comparison with abstract rewriting systems

As a mathematical object, an unlabeled state transition system is identical with an (unindexed) abstract rewriting system. If we consider the rewriting relation as an indexed set of relations, as some authors do, then a labeled state transition system is equivalent to an abstract rewriting system with the indices being the labels. The focus of the study and the terminology are different however. In a state transition system one is interested in interpreting the labels as actions, whereas in an abstract rewriting system the focus is on how objects may be transformed (rewritten) into others.^{[1]}

## Extensions

In model checking, a state transition system is sometimes defined to include an additional labeling function for the states as well, resulting in a notion that encompasses that of Kripke structure.^{[2]}

Action languages are a special case of transition systems, adding a set of *fluents* *F*, a set of values *V*, and a function that maps *F* × *S* to *V*.^{[3]}

## See also

## References

- ↑ Marc Bezem, J. W. Klop, Roel de Vrijer ("Terese"),
*Term rewriting systems*, Cambridge University Press, 2003, ISBN 0-521-39115-6. p. 7-8 - ↑ {{#invoke:citation/CS1|citation |CitationClass=book }}
- ↑ Micheal Gelfond, Vladimir Lifschitz (1998) "Action Languages",
*Linköping Electronic Articles in Computer and Information Science*, vol**3**, nr*16*.