Good grief ...
If we have an entity X and we use the function name(X) to inquire about its name property and obtain "Mohamed Ali". And then if elsewhere we use name(X) and it evaluates to "Cassius Clay", then name() is not a mathematical function.
You have to find a way to reason about an object and its properties so that they are functions. If it can have multiple names, you have to model that appropriately.