let name_of = function
| External(n, _) ->
n
| Const(th, i, _) ->
Name.of_string (Format.sprintf "%s!%d" (Th.to_string th) i)
| Rename(n, i, _) ->
Name.of_string (Format.sprintf "%s!%d" (Name.to_string n) i)
| Slack(i, Zero) ->
Name.of_string (Format.sprintf "%s!%d" "k0" i)
| Slack(i, Nonneg(d)) ->
Name.of_string (Format.sprintf "%s!%d" "k" i)
| Fresh(th, i, _) ->
Name.of_string (Format.sprintf "%s!%d" (Th.to_string th) i)