An approach to the semantics of programming languages in which the meaning of a program in a particular language is given by a valuation function that associates with each well-formed syntactic construct of the language an abstract value, e.g. a term with a number, a test with a truth value, or a command with a function on states. These valuation functions are compositional or recursive in nature: the value of a program is specified as a function of the values denoted by its syntactic subcomponents. To define valuation functions it is usually necessary to solve functional equations using fixed point methods.
This approach was initiated and developed by Christopher Strachey and Dana Scott to provide a semantic theory that was more abstract than operational semantics. It is less abstract than axiomatic semantics.