A set of assertions about properties of a system and how they are effected by program execution. The axiomatic semantics of a program could include pre- and post-conditions for operations. In particular if you view the program as a state transformer (or collection of state transformers), the axiomatic semantics is a set of invariants on the state which the state transformer satisfies. E.g. for a function with the type: sort_list :: [T] -> [T] we might give the precondition that the argument of the function is a list, and a postcondition that the return value is a list that is sorted. One interesting use of axiomatic semantics is to have a language that has a finitely computable sublanguage that is used for specifying pre and post conditions, and then have the compiler prove that the program will satisfy those conditions. See also operational semantics, denotational semantics. |