Definition. Denotational semantics [dt-0001]
A denotational semantics consists of, for each syntactic class \mathcal {X} in a language:
- A semantic domain D which can be any set of mathematical objects (although, as we will see later, it is helpful if it obeys certain properties).
- A valuation function \llbracket \cdot \rrbracket : \mathcal {X} \rightarrow D. We require that this function be a homomorphism, that is that it is compositional. This means that the valuation (or denotation) of an expression should be made from the denotation of its components. In other words, for each syntactic constructor C(e_1,e_2,\dots ), we should have a mathematical operation f(x_1,x_2,\dots ) such that the denotation of C can be defined as: \llbracket C(e_1, e_2, \dots ) \rrbracket = f(\llbracket e_1 \rrbracket , \llbracket e_2 \rrbracket , \dots )