When applied to a term that is either a constant or a variable, name_of
returns its name (its true name, even if there is an interface mapping for it
in effect). When applied to any other term, it returns the empty string.
# name_of `x:int`;;
val it : string = "x"
# name_of `SUC`;;
val it : string = "SUC"
# name_of `x + 1`;;
val it : string = ""