Denotational Semantics extends the pattern of defining the meaning of a program by ascribing values to expressions—it ascribes “values” to such imperative “expressions” as x=0 and goto top. New constructs are needed to play the role of such values. Denotational semantics introduces such constructs and elucidates relationships among them. It is mathematical by nature as it makes formal and precise what had been traditionally informal. Naturally denotational semantics introduces a notation as does any mathematical discipline.

Just as BNF explains that “a−b−c” is composed in part of “a−b” and not “b−c” and thus explains why a−b−c means (a−b)−c and not a−(b−c), denotational semantics explains the meaning of a program in terms of the meanings of its natural parts in the sense of how BNF splits the program into parts. Denotational semantics provides an algebra of meanings suitable for explaining programs. Denotational semantics is an atemporal scheme to explain temporal things.