A specification of what a programming language should do in terms of some mathematical construct (usually an algebra). This makes the mathematicians happy, and occasionally comes in useful for proofs, but programmers are generally more interested in operational semantics, and compilers are more interested in axiomatic semantics.