AbstractThe formal semantics of a programming language consists of assigning to every program of the language an element of a mathematical structure. In this monograph we study the relationship between two different approaches to define the semantics of a program, namely the denotational and the axiomatic one.The denotational semantics characterizes programs as elements of some mathematical domain in a compositional way: the semantics of a language construct is defined in terms of its components. Due to the possibility of self-application given by some programming languages, the semantic domain must sometimes be defined in a recursive way.The axiomatic semantics characterizes programs in a logical framework intended for reasoning about prog...