In Hopcroft, Motwani, and Ullman, "Introduction to Automata Theory, Languages, and Computation", 2nd edition there is the following problem.
Prove that the halting problem is undecidable.
I assume you make a reduction of the halting language to the universal language $L_u$, but I do not see it clearly.
At this point we have proven that $L_u$ is recursively enumerable and not recursive and $L_d$ is not recursively enumerable (the languages are defined below).
Halting Language $L_H$ = { (M, w) | M halts when given w as input }
The universal language $L_u$ = { (M, w) | M is a Turing Machine and w is a string in (0+1)*, such that w belongs to L(M) }
The diagonalization language $L_d$ = { $w_i$ | $w_i$ does not belong to $L(M_i)$ } where $M_i$ is the ith turing machine, and $w_i$ is the ith binary string.
Thanks for any hints!