Operational semantics
|
In computer science, operational semantics is a way to give meaning to computer programs in a mathematically rigorous way (see semantics of programming languages).
The operational semantics for a programming language describes how a valid program is interpreted as sequences of computational steps. These sequences then are the meaning of the program. In the context of functional programs, the final step in a terminating sequence returns the value of the program. (In general there can be many computation sequences and many return values for a single program, because the program could be nondeterministic.)
A common way to rigorously define the operational semantics is to provide a state transition system for the language of interest. Such a definition allows a formal analysis of a language, permitting the study of relations between programs. Important relations include simulation preorders and bisimulation. These are especially useful in the context of concurrency.
Defining operational semantics through a state transition system is usually done by giving an inductive definition of the set of possible transitions. This usually takes the form of a set of inference rules which define the valid transitions in the system.
The first operational semantics was that of the lambda calculus. Abstract machines in the tradition of the SECD machine are closely related.fr:Sémantique opérationnelle pt:Semântica operacional