Si considerino programmi consistenti di una dichiarazione di ambiente
globale di dati e di una lista di procedure, tutte allo stesso
livello, di cui l'ultima è il programma principale. Il corpo
delle procedure è una lista di assegnamenti di espressioni e di
chiamate di procedura. Le procedure possono avere dati locali e i
parametri possono essere passati per riferimento o per valore. Una
procedura può invocare solo se stessa o procedure già
dichiarate. Dati globali, dati locali e parametri sono tutti di un
unico tipo. Si vuole uno schema deterministico ascendente che calcoli
come attributo del programma la lista delle procedure che hanno solo
effetti locali (e la chiamata delle quali può essere quindi
eliminata).