I think the problem is that the mathematical definition of a function (for every x in a domain, there is exactly one value of f(x)) and the ordinary definition (the function of a lawn mower is that it cuts grass). But you are right that functional programming is limited to the former definition. That doesn't mean that function might have a different meaning in an imperative context.