Seu raciocínio implica que RE = coRE, mas isso é comprovadamente falso. Você pode tentar descobrir uma prova disso e ver onde sua redução falha.
Recall that RE is the complexity class of recursively enumerable languages, which are languages of the form {x:P halts on input x}. You can also think of it in non-deterministic terms: RE is the class of languages of the form {x:(x,w)∈L′ for some w}, where L′ is recursive (computable).
Here is a proof that both definitions match. Suppose first L={x:p halts on input x}. Let L′={(x,w):p halts on input x in w steps}. The language L′ is recursive and L={x:(x,w)∈L′ for some w}.
For the other direction, let L={x:(x,w)∈L′ for some w}, where L′ is recursive, say computed by the program P(x,w). We construct a new program Q(x) which enumerates all possible w and runs P(x,w) on all w, in order. If P(x,w) ever accepts for some w, then Q halts. It's not hard to check that L={x:Q halts on input x}.
For your convenience, here are outlines for a proof that RE is different from coRE. The language L={(P,x):P halts on input x} is clearly recursively enumerable: a program for it simply runs P on x. Suppose there was a program H such that H(P,x) halts if and only if (P,x)∉L. We define a new program G by G(x)=H(x,x). Is (G,G)∈L? If so, then G halts on G, so H halts on (G,G), so (G,G)∉L. If (G,G)∉L, then G doesn't halt on G, so H doesn't halt on (G,G), so (G,G)∈L. This contradiction shows that H cannot exist.
Now try to run your proof in this case and see what goes wrong. In more detail, try to construct the program H using your recipe, and follow the proof - at some point something wouldn't be quite right.