Understanding programming and programming languages requires knowledge of the underlying theoretical model. This book explores aspects of programming that are amenable to mathematical proof. The author describes a programming theory which is aspects of programming that are amenable to mathematical proof. The author describes a programming theory which is