Unifying Theories of Programming (UTP) 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 ...
deals with
program semantics
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 ...
. It shows how
denotational semantics,
operational semantics
Operational semantics is a category of formal programming language semantics in which certain desired properties of a program, such as correctness, safety or security, are verified by constructing proofs from logical statements about its execut ...
and
algebraic semantics can be combined in a unified framework for the
formal specification
In computer science, formal specifications are mathematically based techniques whose purpose are to help with the implementation of systems and software. They are used to describe a system, to analyze its behavior, and to aid in its design by veri ...
, design and implementation of
programs and
computer system
A computer is a machine that can be programmed to carry out sequences of arithmetic or logical operations ( computation) automatically. Modern digital electronic computers can perform generic sets of operations known as programs. These prog ...
s.
The book of this title by
C.A.R. Hoare
Sir Charles Antony Richard Hoare (Tony Hoare or C. A. R. Hoare) (born 11 January 1934) is a British computer scientist who has made foundational contributions to programming languages, algorithms, operating systems, formal verification, and c ...
and
He Jifeng was published in the
Prentice Hall International Series in Computer Science Prentice Hall International Series in Computer Science was a series of books on computer science published by Prentice Hall.
The series' founding editor was Tony Hoare. Richard Bird subsequently took over editing the series. Many of the books in t ...
in 1998 and is now freely available on the web.
Theories
The semantic foundation of the UTP is the
first-order predicate calculus
First-order logic—also known as predicate logic, quantificational logic, and first-order predicate calculus—is a collection of formal systems used in mathematics, philosophy, linguistics, and computer science. First-order logic uses quantif ...
, augmented with fixed point constructs from second-order logic. Following the tradition of
Eric Hehner,
programs are predicates in the UTP, and there is no distinction between programs and specifications at the semantic level. In the words of
Hoare:
A computer program is identified with the strongest predicate describing every relevant observation that can be made of the behaviour of a computer executing that program.
In UTP parlance, a ''theory'' is a model of a particular programming paradigm. A UTP theory is composed of three ingredients:
* an ''alphabet'', which is a set of variable names denoting the attributes of the paradigm that can be observed by an external entity;
* a ''signature'', which is the set of programming language constructs intrinsic to the paradigm; and
* a collection of ''healthiness conditions'', which define the space of programs that fit within the paradigm. These healthiness conditions are typically expressed as
monotonic
In mathematics, a monotonic function (or monotone function) is a function between ordered sets that preserves or reverses the given order. This concept first arose in calculus, and was later generalized to the more abstract setting of ord ...
idempotent
Idempotence (, ) is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application. The concept of idempotence arises in a number of pl ...
predicate transformers.
Program refinement
Refinement is a generic term of computer science that encompasses various approaches for producing correct computer programs and simplifying existing programs to enable their formal verification.
Program refinement
In formal methods, program re ...
is an important concept in the UTP. A program
is refined by
if and only if every observation that can be made of
is also an observation of
.
The definition of refinement is common across UTP theories: