**Lemma 36.8**

If L is a language such that L' L for some L' NPC, then L is NP-Hard. If also L NP, then L NPC.

**Strategy for proving L **** NPC**

- 1.
- Prove L NP (poly-time verifiable)
- 2.
- Select L' NPC
- 3.
- Describe poly-time algorithm computing a function f that maps instances of L' to instances of L
- 4.
- Prove that x
L' iff f(x)
L for all x
{0,1}*.

**Note:**Showing L' spec(L) implies L' L.