
type global_env = 
    { structs   : (Popsyntax.type_name,Popsyntax.structdecl) Dict.dict;
      unions    : (Popsyntax.type_name,Popsyntax.uniondecl)  Dict.dict;
      abstracts : (Popsyntax.type_name,bool) Dict.dict;
      globals   : (Popsyntax.var,Popsyntax.typ) Dict.dict
    } 

val type_check : 
    Popsyntax.top_decl list -> (Popsyntax.top_decl list) * global_env
