[a]-[b][[...-c]]
where [a], [b], and [c] are all values
[a], [b], and [c] are numbers
returns the difference of [a] with [b], [c] in the most precise type that appears in the chain
sub(type[a], type[b], type[c]) is defined
returns a call of [a], [b], and [c] to sub
[a]-[b] is defined
evaluates [a]-[b] first, then evaluates the rest of the expression