I know this has been asked and answered before in Stack Overflow. I'm trying to come up with my own proof but I seem to have one small problem.
Basically, we have to prove that if $L_1$ and $L_2$ are Turing-decidable then $L = L_1 \cap L_2$ is also Turing-decidable (a language is Turing-decidable iff a Turing machine exists which accepts all strings in that language and rejects all strings not in that language). We know that there must exist a Turing Machine for each $L_1$ and $L_2$, namely $M_1$ and $M_2$ which accept all strings in $L_1$ and $L_2$ respectively, and reject all those strings in their complements. Using this I felt it very natural to come up with a new Turing Machine $M$ as follows:
The idea is that $M_1$ would reject all the strings not in $L_1$, $M_2$ rejects all the strings not in $L_2$, and if $M_1$ accepts a string, we then verify if $M_2$ accepts it, if it does then $M$ accepts the string. My question/problem is: what happens if $M_1$ modifies the string? Since a Turing machine can replace characters in a string this is definitely something that could happen, then what goes into $M_2$ will not be the same string as what went into $M_1$.
I thought we could avoid it by making another machine $N$ in between $M_1$ and $M_2$ that somehow reverts all the changes made by $M_1$ but I'm not sure how it would work.
P.S. I'm aware that I could prove this easily using the properties of closure under union and closure under complementation, but I would really like to give the machine explicitly which recognizes an intersection of languages.
