Is it legal build two sets that recursively depend on each other? For instance, I would like to describe two sets the following way
$S_1 = \{x \in N | x = 100 \lor x + 5 \in S_2\}$
$S_2 = \{x \in N | x + 5\in S_1\}$
is it legal?
 A: What you write does tell you something about $S_1$ and $S_2$, but it does not define them as subsets of $\mathbf N$.
For example, $S_1$ could be a set of all natural numbers divisible by 10 which are at most 100, and $S_2$ could be the same set, only shifted by five. But it could also be that $S_1=S_2=\mathbf N$.
If you are asking whether the description conforms to the usual set-builder standard, then the answer is also no: formally, in ZFC, this depends on the axiom (schema) of comprehension: given a set $X$ and a formula $\varphi$ (with parameters), we have a set $\{x\in X\mid \varphi(x)\}$. For any set $Y\subseteq \mathbf N$, the formula $\varphi(x)=``x+5\in Y''$ is valid, but in your case, $Y=S_2$ is not a subset of $\mathbf N$ (it is not yet defined), so it cannot be used as a parameter.
On the other hand, you can recursively define two sets, but you need to be more careful, and make the recursion more explicit.
I suppose what you mean is that $S_1^0=\{100\}$ and for each $n$, $S_2^n=\{x\in \mathbf N\mid x+5\in S_1^n\}$, $S_1^{n+1}= \{x\in \mathbf N \mid x+5\in S_2^n\}$. Then $S_1=\bigcup_n S_1^n$ and $S_2=\bigcup_n S_2^n$ do what you probably intended to do.
You could also define $S_1, S_2$ as the smallest subsets of $\mathbf N$ satisfying $x\in S_1\iff x=100\lor x+5\in S_2$ and $x\in S_2\iff x+5\in S_1$. This is also a correct definition, as soon as you prove that such smallest sets exist, but in any event, this definition is not of the standard set-builder kind.
