Home

Denotational

Denotational semantics is a formal approach to defining the meaning of programming languages by constructing abstract mathematical objects that represent the semantics of programs. In a denotational account, each syntactic construct is mapped to a semantic object in a domain, and the meaning of compound constructs is obtained compositionally from the meanings of their parts. The aim is to provide a precise, language-agnostic description that supports mathematical reasoning and verification.

The method emerged in the late 1960s and early 1970s, with foundational work by Christopher Strachey and

Core ideas include semantic domains, typically mathematical structures such as complete partial orders, and semantic functions

In practice, a language’s constructs are interpreted as functions or relations between domains. For example, in

Applications include language specification, compiler correctness, and formal reasoning about program equivalence. Denotational semantics is often

Dana
Scott,
and
later
refinements
by
researchers
such
as
Gordon
Plotkin
and
John
Reynolds.
It
contrasts
with
operational
semantics,
which
describes
how
programs
execute
step
by
step,
by
focusing
on
denotation
as
the
mathematical
meaning
rather
than
the
execution
process.
that
assign
meanings
to
syntactic
categories.
Denotational
semantics
emphasizes
compositionality:
the
meaning
of
a
complex
expression
is
determined
by
the
meanings
of
its
parts.
Recursion
and
iteration
are
modeled
using
fixed
points
in
domains,
enabling
a
precise
treatment
of
looping
and
recursive
definitions.
a
simple
language
with
integers
and
arithmetic,
the
expression
e1
+
e2
is
mapped
to
the
sum
of
the
meanings
of
e1
and
e2
in
the
integer
domain;
conditional
constructs
map
to
a
function
selecting
between
branches;
recursion
uses
least
fixed
points
of
appropriate
functionals.
discussed
alongside
operational
and
axiomatic
semantics,
forming
a
family
of
approaches
to
formalizing
program
meaning.