+let local_alpha st s w t =
+ if K.does_not_occur K.fst_var st.c t then G.dno_id, G.nan else
+ let r, i = split (trim s) in
+ get (type_check r st.c w, i) st.d
+
+let global_apha st s =
+try
+ let i = H.find st.g s in
+ H.replace st.g s (succ i);
+ P.sprintf "%s_%u" s i
+with Not_found ->
+ H.add st.g s 0;
+ s
+
+let alpha st s w t =
+ let r = local_alpha st s w t in
+ let s = mk_name r in
+ r, if G.is_global_id s then global_apha st s else s
+