Typing environment

In type theory a typing environment (or typing context) represents the association between variable names and data types.

More formally an environment $$\Gamma$$ is a set or ordered list of pairs $$\langle x,\tau \rangle$$, usually written as $$x:\tau$$, where $$x$$ is a variable and $$\tau$$ its type.

The judgement
 * $$\Gamma \vdash e:\tau$$

is read as "$$e$$ has type $$\tau$$ in context $$\Gamma$$ ".

For each function body type checks:
 * $$\Gamma = \{(f,\tau_1\times...\times\tau_n \to \tau_0)|(f,xs,(\tau_1,...,\tau_n),t_f,\tau_0)\in e\} $$

Typing Rules Example: $$ \begin{array}{c} \Gamma\vdash b:Bool, \Gamma\vdash t_1:\tau, \Gamma\vdash t_2:\tau\\ \hline \Gamma \vdash (\text{if}(b) t_1 \text{else} t_2): \tau \\ \end{array} $$

In statically typed programming languages these environments are used and maintained by typing rules to type check a given program or expression.