Is it contradictory to define zero as the empty set in ZFC? In the standard construction of natural numbers in axiomatic set theory (ZFC), zero is defined as being the empty set.
However, if we consider, for instance, the function $f:\mathbb N\rightarrow \mathbb N$ defined by $f(n)=n+1$, we have $f(0)=1$, but $f(\emptyset)=\emptyset$, because the image of the empty set is always empty.
Is this contradictory? What am I missing here?
 A: You are confusing the function $f$ with the direct image function that $f$ induces.
Recall that if $X$ and $Y$ are sets, and $f\colon X\to Y$ is a function, then $f$ induces a function, often denoted also by $f$ but which I will call $\underline{f}$,
$$\underline{f}\colon\mathcal{P}(X)\to\mathcal{P}(Y),$$
given by
$$\underline{f}(A) = \{f(a)\mid a\in A\}$$
for all $A\subseteq X$.
The function $f$ defined by $f(n)=n+1$ will map the element $\emptyset$ to the element $\{\emptyset\}=1$. The function $\underline{f}$ will map the subset $\emptyset$ to the subset $\emptyset$. 
(Note that this is not the only problem with the notation: under the usual definition of $\mathbb{N}$, $\mathbb{N}$ is a transitive set: if $a\in \mathbb{N}$, then $a\subseteq \mathbb{N}$. Thus, $1 = 0\cup\{0\} = \{\emptyset\}$, and $\emptyset\subseteq\mathbb{N}$. So while $f(1)=2=\{0,1\} = \{\emptyset,\{\emptyset\}\}$, we also have $\underline{f}(1) = \underline{f}(\{\emptyset\}) = \{f(\emptyset)\} = \{f(0)\} = \{1\}\neq 2$. So here it is important to keep the distinction between $f$ and $\underline{f}$ clear, if it is not obvious from context.)
A: You're mistaken.  If "the image of the empty set" is taken to mean $\{f(x) : x\in\varnothing\}$, then that must indeed be empty.  But when the empty set is itself taken to be a member of the domain, then it's just a member of the domain, and treated accordingly.
In set theory, but not as much in other areas of mathematics, one often has a set $A$ that is both a member and a subset of the domain.  Taking $A$ to be a member of the domain, $f(A)$ is a member of the image.  But one then uses the notation $f[A]$ to refer to $\{f(x) : x\in A\}$.  These are two different things.  Then one would say $f[\varnothing]=\varnothing$.  But $f(\varnothing)$ can be something else---it depends on what function $f$ is.
The practice of defining $0$ that way is merely a convention.  It is used for the purpose of encoding arithmetic within set theory.
A: If $\emptyset$ is the domain of the function then you are right, but here $\emptyset$ is not the domain, but an element in the domain. Therefore $f(\emptyset)$ can be for example $\{\emptyset\}$, and it is fine. 
