We have $f:\mathbb{R} \to \mathbb{R}$ and we know that $f$ is both additive: $f(x+y)=f(x)+f(y)$ and multiplicative: $f(xy)=f(x)f(y)$ and I found out that this means that $f(x)=0$ for any $x$ or $f(x)=x$ for any $x$ but I don't know how to prove it. Can you help me? I know that if $f$ is continuous or monotone we can show what we want only from the first relation, is this somehow related to the second relation?

There is a standard trick to this. The sketch of the argument is

• $f$ maps squares to squares
• $f$ maps nonnegative numbers to nonnegative numbers (since they are precisely the squares)
• $f$ is monotone increasing, since $x \leq y$ iff $y-x$ is nonnegative

The zero function is obviously a match so assume that f is nonzero. Since f(1) = f(1)^2 we find f(1) = 0 or f(1) = 1. If f(1) = 0 then it follows by the multiplicative property that f = 0. This leads to contradiction hence we may assume that f(1) = 1, by additivity f(n) = n for all n in Z.

Observe: 1 = f(1) = f(r/r) = f(r) * f(1/r) hence f(1/r) = 1/f(r) for each r in R.

This now implies that for all q in Q: f(q) = q (using that f(n) = n for all n in Z). This in turn implies that for r in R and {q_n} n in N and q_n in Q converging to r that f(r) - r = f(lim q_n) - lim q_n = f(lim q_n) - f(lim q_n) = f(lim (q_n - q_n)) = f(0) = 0 hence f(r) = r.

Excuse my sloppy notation.

• How do you conclude $\lim(q_n) = f(\lim q_n)$? Presumably you assume $f$ is continuous. The OP already knows how to solve the problem when you do that. The question is how to solve the problem without having to make that assumption. – Hurkyl Dec 9 '17 at 18:36
• Yeah indeed thats an error. I thought about that however I switched to something else and did not think that through when finally pushing the "submit answer" button. Sorry about the confusion. As you stated the function is monotone increasing. Suppose that r_n in R tends to zero then we can find a sequence q_n in Q tending to zero with |r_n| < |q_n|. Using the fact that f is increasing we find f(|r_n|) <= f(|q_n|) which tends to 0 as n tends to infinity hence f (|r_n|) -> tends to zero. Since it is additive it is continuous everywhere. – Edwin Dec 9 '17 at 19:11