In giving a formal semantics to a programming language we are concerned with building
a mathematical model. Its purpose is to serve as a basis for understanding and reasoning
about how programs behave. Not only is a mathematical model useful for various kinds
of analysis and verification, but also, at a more fundamental level, becau
se simply the
activity of trying to define the meaning of program constructions precisely can reveal
all kinds of subtleties of which it is important to be aware. This book introduces the
mathematics, techniques and concepts on which formal semantics rests.