Denotational semantics is based on the idea that programs and the objects they manipulate are symbolic realizations of abstract mathematical objects, for example,
The idea of denotational semantics is thus to associate an appropriate mathematical object, such as a number, a tuple, or a function, with each phrase of the language being used.
A language will be defined syntactically by its specification. The decomposition of phrases in a language into their subphrases is reflected in the abstract syntax of the programming language. A fundamental principle of denotational semantics is that the definition be compositional.