Suppose ⟨G,m⟩∈IS, with independent set U of size m.
Step 1 — exactly one vertex per clause. Each clause's vertices form a clique, so U holds at most one vertex per clause. There are m clauses and ∣U∣=m, so U holds exactly one per clause. Call it uj, with partial assignment σj.
Step 2 — the assignments are consistent. For j=j′ the vertices uj,uj′ are non-adjacent (as U is independent), so by construction σj and σj′ do not conflict: every variable occurring in both gets the same value.
Step 3 — glue the assignment. Define a total assignment v: if a variable x occurs in some σj, set v(x)=σj(x) — by Step 2 this does not depend on which j, so it is well defined; if x occurs in no σj, set v(x)=0 arbitrarily.
Step 4 — v satisfies φ. Let Cj be a clause. By construction σj satisfies it, and v agrees with σj on every variable of Cj, so v satisfies Cj. As j was arbitrary, v satisfies φ, i.e. φ∈3SAT.