This second volume looks at the principles and techniques of modeling spatial and simple temporal phenomena, and such specialized topics as modularity (UML class diagrams), Petri nets, live sequence charts, statecharts, and temporal logics, including the duration calculus. The book presents principles and techniques for developing the basis for sound, efficient interpreter and compiler development of functional, imperative, modular and parallel programming languages.