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.