I've somehow proved that European call price $C(K)$ is a concave function of strike price $K$, but I can't spot where the mistake is.
Suppose $K_1 < K_2 < K_3$ and thus $K_2 = \lambda K_1 + (1 - \lambda) K_3$ for some 0 < λ < 1.
If we buy a call struck at $K_1$ and sell a call struck at $K_2$ then the net premium paid is $C(K_1) - C(K_2)$ while the payoff at expiry is at most $K_2 - K_1$
Therefore we have a lemma: $C(K_1) - C(K_2) \leq K_2 - K_1$
This lemma apparently implies that $C(K)$ is concave:
$$ \begin{align*} \lambda C(K_1) + (1 - \lambda) C(K_3) - C(K_2) &= \lambda [C(K_1) - C(K_3)] + C(K_3) - C(K_2) \\ &\leq \lambda (K_3 - K_1) + K_2 - K_3 \\ &= K_2 - \lambda K_1 - (1 - \lambda) K_3 = 0 \end{align*} $$
Where is the error?