Operational semantics is a category of
formal programming language semantics
Semantics (from grc, σημαντικός ''sēmantikós'', "significant") is the study of reference, meaning, or truth. The term can be used to refer to subfields of several distinct disciplines, including philosophy, linguistics and compu ...
in which certain desired properties of a
program, such as correctness, safety or security, are
verified
Verified is a United Nations project to improve access to accurate information. In the project the United Nations seeks to organize a network of millions of online volunteers to curate and fact check information online. Verified has held a socia ...
by constructing
proof
Proof most often refers to:
* Proof (truth), argument or sufficient evidence for the truth of a proposition
* Alcohol proof, a measure of an alcoholic drink's strength
Proof may also refer to:
Mathematics and formal logic
* Formal proof, a con ...
s from logical statements about its
execution
Capital punishment, also known as the death penalty, is the state-sanctioned practice of deliberately killing a person as a punishment for an actual or supposed crime, usually following an authorized, rule-governed process to conclude that t ...
and procedures, rather than by attaching mathematical meanings to its terms (
denotational semantics). Operational semantics are classified in two categories: structural operational semantics (or small-step semantics) formally describe how the ''individual steps'' of a
computation
Computation is any type of arithmetic or non-arithmetic calculation that follows a well-defined model (e.g., an algorithm).
Mechanical or electronic devices (or, historically, people) that perform computations are known as '' computers''. An esp ...
take place in a computer-based system; by opposition natural semantics (or big-step semantics) describe how the ''overall results'' of the executions are obtained. Other approaches to providing a
formal semantics of programming languages
In programming language theory, semantics is the rigorous mathematical study of the meaning of programming languages. Semantics assigns computational meaning to valid strings in a programming language syntax.
Semantics describes the processes ...
include
axiomatic semantics and
denotational semantics.
The operational semantics for a
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming l ...
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 programming
In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that ...
, the final step in a terminating sequence returns the value of the program. (In general there can be many return values for a single program, because the program could be
nondeterministic
Nondeterminism or nondeterministic may refer to:
Computer science
* Nondeterministic programming
*Nondeterministic algorithm
In computer programming, a nondeterministic algorithm is an algorithm that, even for the same input, can exhibit diffe ...
, and even for a deterministic program there can be many computation sequences since the semantics may not specify exactly what sequence of operations arrives at that value.)
Perhaps the first formal incarnation of operational semantics was the use of the
lambda calculus
Lambda calculus (also written as ''λ''-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution. It is a universal model of computation t ...
to define the semantics of
Lisp
A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech.
Types
* A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lispi ...
.
Abstract machine
An abstract machine is a computer science theoretical model that allows for a detailed and precise analysis of how a computer system functions. It is analogous to a mathematical function in that it receives inputs and produces outputs based on p ...
s in the tradition of the
SECD machine The SECD machine is a highly influential (''see: '') virtual machine and abstract machine intended as a target for functional programming language compilers. The letters stand for Stack, Environment, Control, Dump—the internal registers of the mac ...
are also closely related.
History
The concept of operational semantics was used for the first time in defining the semantics of
Algol 68
ALGOL 68 (short for ''Algorithmic Language 1968'') is an imperative programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously ...
.
The following statement is a quote from the revised ALGOL 68 report:
The meaning of a program in the strict language is explained in terms of a hypothetical computer
which performs the set of actions that constitute the elaboration of that program. (Algol68
ALGOL 68 (short for ''Algorithmic Language 1968'') is an imperative programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously de ...
, Section 2)
The first use of the term "operational semantics" in its present meaning is attributed to
Dana Scott
Dana Stewart Scott (born October 11, 1932) is an American logician who is the emeritus Hillman University Professor of Computer Science, Philosophy, and Mathematical Logic at Carnegie Mellon University; he is now retired and lives in Berkeley, C ...
(
Plotkin04).
What follows is a quote from Scott's seminal paper on formal semantics,
in which he mentions the "operational" aspects of semantics.
It is all very well to aim for a more ‘abstract’ and a ‘cleaner’ approach to
semantics, but if the plan is to be any good, the operational aspects cannot
be completely ignored. ( Scott70)
Approaches
Gordon Plotkin
Gordon David Plotkin, (born 9 September 1946) is a theoretical computer scientist in the School of Informatics at the University of Edinburgh. Plotkin is probably best known for his introduction of structural operational semantics (SOS) and hi ...
introduced the structural operational semantics,
Matthias Felleisen
Matthias Felleisen is a German-American computer science professor and author. He grew up in Germany and immigrated to the US when he was 21 years old.
He received his PhD from Indiana University under the direction of Daniel P. Friedman.
After ...
and Robert Hieb the reduction semantics,
and
Gilles Kahn
Gilles Kahn (April 17, 1946 – February 9, 2006) was a French computer scientist. He notably introduced Kahn process networks as a model for parallel processing and natural semantics for describing the operational semantics of programming l ...
the natural semantics.
Small-step semantics
Structural operational semantics
Structural operational semantics (SOS, also called structured operational semantics or small-step semantics) was introduced by
Gordon Plotkin
Gordon David Plotkin, (born 9 September 1946) is a theoretical computer scientist in the School of Informatics at the University of Edinburgh. Plotkin is probably best known for his introduction of structural operational semantics (SOS) and hi ...
in (
Plotkin81) as a logical means to define operational semantics. The basic idea behind SOS is to define the behavior of a program in terms of the behavior of its parts, thus providing a structural, i.e., syntax-oriented and
inductive
Induction, Inducible or Inductive may refer to:
Biology and medicine
* Labor induction (birth/pregnancy)
* Induction chemotherapy, in medicine
* Induced stem cells, stem cells derived from somatic, reproductive, pluripotent or other cell typ ...
, view on operational semantics. An SOS specification defines the behavior of a program in terms of a (set of)
transition relation(s). SOS specifications take the form of a set of
inference rule
In the philosophy of logic, a rule of inference, inference rule or transformation rule is a logical form consisting of a function which takes premises, analyzes their syntax, and returns a conclusion (or conclusions). For example, the rule of ...
s that define the valid transitions of a composite piece of syntax in terms of the transitions of its components.
For a simple example, we consider part of the semantics of a simple programming language; proper illustrations are given in
Plotkin81 and
Hennessy90, and other textbooks. Let
range over programs of the language, and let
range over states (e.g. functions from memory locations to values). If we have expressions (ranged over by
), values and locations (
), then a memory update command would have semantics:
Informally, the rule says that "if the expression
in state
reduces to value
, then the program
will update the state
with the assignment
".
The semantics of sequencing can be given by the following three rules:
Informally, the first rule says that,
if program
in state
finishes in state
, then the program
in state
will reduce to the program
in state
.
(You can think of this as formalizing "You can run
, and then run
using the resulting memory store.)
The second rule says that
if the program
in state
can reduce to the program
with state
, then the program
in state
will reduce to the program
in state
.
(You can think of this as formalizing the principle for an optimizing compiler:
"You are allowed to transform
as if it were stand-alone, even if it is just the
first part of a program.")
The semantics is structural, because the meaning of the sequential program
, is defined by the meaning of
and the meaning of
.
If we also have Boolean expressions over the state, ranged over by
, then we can define the semantics of the while command:
Such a definition allows formal analysis of the behavior of programs, permitting the study of
relations
Relation or relations may refer to:
General uses
*International relations, the study of interconnection of politics, economics, and law on a global level
*Interpersonal relationship, association or acquaintance between two or more people
*Public ...
between programs. Important relations include
simulation preorder In theoretical computer science a simulation is a Relation (mathematics), relation between state transition systems associating systems that behave in the same way in the sense that one system ''simulates'' the other.
Intuitively, a system simulate ...
s and
bisimulation
In theoretical computer science a bisimulation is a binary relation between state transition systems, associating systems that behave in the same way in that one system simulates the other and vice versa.
Intuitively two systems are bisimilar if ...
.
These are especially useful in the context of
concurrency theory.
Thanks to its intuitive look and easy-to-follow structure,
SOS has gained great popularity and has become a de facto standard in defining
operational semantics. As a sign of success, the original report (so-called Aarhus
report) on SOS (
Plotkin81) has attracted more than 1000 citations according to the CiteSee
making it one of the most cited technical reports in
Computer Science
Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (includin ...
.
Reduction semantics
Reduction semantics is an alternative presentation of operational semantics. Its key ideas were first applied to purely functional
call by name
In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a ''parameter-passing strategy'' that defines the kind of value that is passed to the ...
and
call by value
In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a ''parameter-passing strategy'' that defines the kind of value that is passed to the ...
variants of the
lambda calculus
Lambda calculus (also written as ''λ''-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution. It is a universal model of computation t ...
by
Gordon Plotkin
Gordon David Plotkin, (born 9 September 1946) is a theoretical computer scientist in the School of Informatics at the University of Edinburgh. Plotkin is probably best known for his introduction of structural operational semantics (SOS) and hi ...
in 1975 and generalized to higher-order functional languages with imperative features by
Matthias Felleisen
Matthias Felleisen is a German-American computer science professor and author. He grew up in Germany and immigrated to the US when he was 21 years old.
He received his PhD from Indiana University under the direction of Daniel P. Friedman.
After ...
in his 1987 dissertation. The method was further elaborated by Matthias Felleisen and Robert Hieb in 1992 into a fully
equational theory
Universal algebra (sometimes called general algebra) is the field of mathematics that studies algebraic structures themselves, not examples ("models") of algebraic structures.
For instance, rather than take particular groups as the object of stud ...
for
control and
state
State may refer to:
Arts, entertainment, and media Literature
* ''State Magazine'', a monthly magazine published by the U.S. Department of State
* ''The State'' (newspaper), a daily newspaper in Columbia, South Carolina, United States
* '' Our ...
.
The phrase “reduction semantics” itself was first coined by Felleisen and
Daniel Friedman in a PARLE 1987 paper.
Reduction semantics are given as a set of ''reduction rules'' that each specify a single potential reduction step. For example, the following reduction rule states that an assignment statement can be reduced if it sits immediately beside its variable declaration:
To get an assignment statement into such a position it is “bubbled up” through function applications and the right-hand side of assignment statements until it reaches the proper point. Since intervening
expressions may declare distinct variables, the calculus also demands an extrusion rule for
expressions. Most published uses of reduction semantics define such “bubble rules” with the convenience of evaluation contexts. For example, the grammar of evaluation contexts in a simple
call by value
In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a ''parameter-passing strategy'' that defines the kind of value that is passed to the ...
language can be given as
where
denotes arbitrary expressions and
denotes fully-reduced values. Each evaluation context includes exactly one hole