Models of Computer Hardware and Software

Computing machines, whether hardware or software or some combination, are frequently modeled as ``state machines.''

To so model a computing machine we must represent its **states** as
objects in our mathematical framework.

**Transitions** are functions or relations on state objects.

In what language shall we define these objects, functions, and relations?

The mathematical languages we were taught in high school

**algebra**,

**geometry**,

**trigonometry**, and

**calculus**

are often inappropriate for modeling digital systems. They primarily let us talk about numbers and continuous functions.

To see what kind of expressive power we need, take a closer look at what a typical state contains.