Funky function-composed within itself umpteen thousand times

First use induction to show that each iterate $f_n(x) = \underbrace{f(f(f( \ldots f}_{n~\text{times}}(x) \ldots)$ satisfies: $$ \begin{align} 0 < f_n(x) < 1 \quad &\text{for all $x$ on the interval $0 \le x \le 1$,} \tag 1\\ 0 < f_n'(x) < 1 \quad &\text{for all $x$ on the interval $0 \le x \le 1$.} \tag 2 \end{align} $$

Then use $(1)$ and the intermediate value theorem to show that $f_n(x) - x$ has at least one zero in $[0, 1]$.

Finally use $(2)$ and the mean-value theorem to show that $f_n(x) - x$ has at most one zero in $[0, 1]$.

(Remark: Instead of $0 < f'(x) < 1$ it would be sufficient to require that $|f'(x)| < 1$ on the interval.)


Since $f'(x)>0$ for all $x$ in the concerned interval, $f(x)$ is strictly increasing.

So:

$x<y \implies f(x)<f(y)$
(assuming $x,y \in [0,1]$)

Now, suppose for some $a \in [0,1],f(a) \ne a$.

Then, either $f(a)<a$ or $f(a)>a$.

Looking at the first case and using the fact that $f$ is strictly increasing and, crucially, that $f$ maps from $[0,1]$ back into $[0,1]$, $f(f(a))<f(a)$. Of course, by the initial assumption, $f(a)<a$, so now we get $f(f(a))<a$. We can apply this reasoning again $-f(f(f(a)))<f(a)$, but also, $f(a)<a$, so $f(f(f(a)))<a$. But if we repeat this line of reasoning an extra $2013$ times, we get that $f^{\circ 2016}(a)<a$.

This contradicts our requirement that $f^{\circ 2016}$ fix all of $[0,1]$ so $f(a) \nless a$ for all $a \in [0,1]$.

We can reason analogously for the case where $f(a)$ is assumed to be $>a$, ruling it as an impossibility.

So $f(x)=x$ for all $x \in [0,1]$.

But this contradicts the requirement that $f'(x)<1$ for all $0<x<1$, so no solution exists.