solution:
DF: A problem is NP-hard if all problems in NP are polynomial time reducible to it, even thoughit may not be in NP itself ( p326 Sipser) (the only definition our book has ).
For any language L' that is in NP if we show that we can poly-time reduce to Etm.
This will prove that that Etm is NP - hard.
Since L' is in NP by definition there exist a TM ( NTM but since they are equivalent in power I write TM ) M' such that decides L'.
TM M'' that takes as an input <M,w> constructs
TM M' such that
on arbitrary x
if w = x
run M on w if accept => reject
if reject => accept
else reject.
Therefore M accepts w iff M'' rejects all the input.
Let's confirm that. First assume that M accepts w, then M'' reject on any input therefore L(M'') = empty.
Now assume that M rejects w, then M'' accept, therefore L(M'') is not empty.
Note that to construct the M'' takes polynomial time.
That completes the proof.