No, your proof is incorrect.
A counterexample
Here is a summary of your proof. Suppose $f(a_1)>a_1$. Let $a_n=f(a_{n-1})$. Then $a_n$ converges to some number $l$ when $n\to\infty$. Then $f(l)=l$.
Here is a counterexample to your proof.
Consider function $f(x)=\begin{cases}\frac14+\frac x2&\text{if }x\in[0;\frac12)\\\frac34+\frac{x-\frac12}2&\text{if }x\in[\frac12;1]\end{cases}$
Since $f(0)=\frac14>0$, let $a_1=0$ in your proof. The sequence of $a_i$'s is $0,\frac14, \frac38, \frac7{16}, \frac{15}{32},\cdots$. Check that $a_n=\frac12-\frac{1}{2^n}$ for all $n$. $l=\lim_{n\to\infty}a_n=\frac12$.
All are fine so far. However, $f(l)=\frac34\not=l$.
The mistake in the proof is, as pointed by FShrike, the following equality does not hold necessarily,
$$ \lim_{n \to \infty }f(a_{n-1}) = f(l)$$
since $f$ may not be continuous at $l$.
A correct proof
I will assume $f$ is weakly increasing only. A strictly increasing function is also weakly increasing.
Let $A_\ge=\{x\in[0;1]\mid f(x)\ge x\}\ni 0$. Since $A_\ge$ is a non-empty set bounded from above, its least upper bound is well-defined. . Let it be $\ell$.
For any $a\in A_\ge$, $\ell\ge a$. So $f(\ell)\ge f(a)\ge a$, i.e., $f(\ell)$ is also an upper bound for $A_\ge$. Hence $f(\ell)\ge\ell$.
Applying $f$ to both sides, we get $f(f(\ell))\ge f(\ell)$, i.e., $f(\ell)\in A_\ge$. Since $\ell$ is an upper bound for $A_\ge$, $\ell\ge f(\ell)$.
So $f(\ell)=\ell$.
Congratulations, your proof is correct! What you have defined is called the empty function with codomain $\emptyset$.
Since the proof is right, I'll make a few comments about style.
On the whole I understood it all the way through and didn't need to do any backtracking, which is already the sign of a well-written proof!
But not to worry - there is still rom for improvement.
Structure
The statement that you are to prove consists of three parts, whose most natural ordering seems to me to be
- There exists a function mapping $\emptyset\rightarrow \emptyset$.
- Such a function is unique.
- This function is a bijection.
In your argument, you have proved 2, then 1, then 3.
It is not strictly incorrect to prove uniqueness before existence, but it can get you in trouble and is not intuitive to read.
My guess it that you wrote it in this order because that was how you reasoned about it.
That is, "what should this $f$ look like? Well, it must have an empty graph, so let's define that object."
When you're writing proofs primarily to convince a reader of the correctness of the result (for example, when writing a research paper, but not when writing a textbook, where the primary aim is exposition), you want to exclude extraneous detail, so best practice would be to introduce your candidate function $f$ without preamble.
I would write your existence argument like this:
Consider the triple $f = (\emptyset, \emptyset, \emptyset)$.
Since the domain is empty, it is vacuously true that every element in the domain has an image and moreover, that this image is unique.
Therefore, $f$ is a function.
And follow that with uniqueness:
Let $g = (\emptyset, \emptyset, G)$ be a function.
Since $G \subseteq \emptyset \times \emptyset$, it must be that $G = \emptyset$, and so that $g = f$.
Hence, $f$ is the unique function mapping $\emptyset \rightarrow \emptyset$.
Formal logic
Mathematics is written in full sentences, and strings of formal logic are very unusual in mathematical writing.
You'll notice that in my proposed examples, I have no logical symbols at all, but hopefully I was able to unambiguously convey the logical argument.
This is because formal logic is difficult to parse, and contains every piece of information about the statement, even when only a small amount is needed for the argument at hand.
Compare in my existence statement the phrase "since the domain is empty," which is the reason that everything holds vacuously to
$$
(\forall x)[x \in \emptyset \rightarrow (\exists y)(y \in \emptyset \land (x, y) \in \emptyset)],
$$
where the "$(\exists y)(y \in \emptyset \land (x, y) \in \emptyset)$" part is included in the text despite being long, complicated and completely irrelevant to the argument.
"Clearly"
Remove this word, as well as "obviously" and friends, from your mathematical vocabulary.
If something really is clear, you should have no trouble explaining it in one sentence, and that leads to a stronger text.
If you can't do this, you're using the word to cover up a messy argument.
This is a minor point, as you only write it once, and the sentence can be improved simply by erasing the word "clearly."
Nevertheless, I thought that I would raise it, as it's a good thing to keep in mind.
Best Answer
You said
but that is not a valid conclusion. For example $f(x) = x \sin(x)$ is not periodic, but all values are taken infinitely often.
A simple direct proof would be: For all $x \in \Bbb R$ is $$ |f(x+2 \pi)- f(x)| \le 5 |\cos(x + 2 \pi) - \cos(x)| = 0 \\ \implies f(x+2 \pi) = f(x) \, , $$ which shows that $f$ is $2\pi$-periodic.