a way of structuring the intermediate representation so that every variable is assigned exactly once