8.1 The brief discussion of formal verification at the beginning of this chapter includes some philosophical and social aspects that have been treated at book length by Donald MacKenzie, in Mechanizing Proof, MIT Press, 2001. One striking fact is that there are (at least) two major "cultures of proof", the informal culture of mathematicians, and the mechanical one of some computer scientists.
Denotational semantics grew out of the same culture at Oxford in the 1960s that produce the BCPL language (which you will recall was a "basic" implementation of CPL, "Christopher's Programming Language," designed by Christopher Strachey, and which then led to B, and later C at Bell Labs). Denotational semantics was the fruit of Dana Scott and Christopher Strachey working together to develop Strachey's rough ideas for a semantics for CPL, using higher order functions and the lambda calculus.
Since abstract syntax is given by the term algebra with signature given by the grammar, we can get a denotational semantics by building a semantic algebra with the same signature, and letting the unique many sorted homomorphism from the term algebra to the semantic algebra provide the denotations of the terms, which essentially are parse trees. All of the examples in the early part of this chapter fall under this very general and powerful formalism, which in fact simplifies the exposition, since all one has to do is give the grammar and the semantic algebra - the rest is provided automatically.
Note that the unique homomorphism is many sorted, and its components are
the semantic functions denoted by symbols like
moreover, the so called semantic equations of denotational semantics
are exactly the equations which express the fact that this function is a