data structures
## Data Types

A *data type* consists of:
- a domain (= a set of values)
- a set of operations

**Booleans:**

- two values: true, false.
- many operations: AND, OR, NOT, ...

**Fractions:**
... are numbers.

- normal arithmetic operations
- maybe specific operations such as
*normalizing*. E.g. 6/9
becomes 2/3.

How to specify the domain of fractions, i.e. the set of possible
values? Two approaches:
- structural definition
- behavioral definition