This is an intermediate level between AST and CIVL-IR (model). * tree representation of a program, like AST * whole program represented by one tree (no notion of "translation unit", etc.) * every variable is declared in one and only one place * no prototypes --- you can call a function even before it is declared or defined * no side-effects. assignments are statements. function calls are statements. * some simplification of types? This is a good level on which to perform transformations.