Visual walkthrough — Reducibility — many-one reductions
Step 1 — Draw the two worlds
WHAT. Picture two big boxes side by side. The left box is the world of all strings — every possible string you could type. Inside it, a shaded blob is : the strings that are "in " (the YES-strings). Everything outside the blob but still inside the box is (the NO-strings). The right box is the same idea for language .
WHY. A "language" sounds abstract. But a language is nothing more than a chosen set of YES-strings sitting inside the sea of all strings. Deciding the language means: given a dot, is it inside the blob or outside? Drawing it this way turns an abstract set-membership question into a pointing-at-a-region question.
PICTURE. Left: box with blob . Right: box with blob . No connection yet — that comes next.

Step 2 — The translator is an arrow-drawing machine
WHAT. Now draw arrows from each dot in the left box to a dot in the right box. Every left-dot gets exactly one arrow out. That collection of arrows is the function : it takes a string (left) and produces a string (right).
WHY THIS TOOL, a function and not something fancier? We want a mechanical, reliable translator: give it a question about , it hands back a question about . "Reliable" means two things a plain function guarantees:
- Everybody gets an arrow (the function is total — defined on every input). No string is left hanging.
- Each string gets exactly one arrow (it is a function, not a random guess). Same input → same output, every time.
We do not demand the arrows be one-to-one. Several left-dots may land on the same right-dot — that is literally why it's called many-one. We also don't demand every right-dot is hit. A plain function is the weakest tool that still lets us pipe questions across — so it's the right tool.
PICTURE. Several arrows from the left box to the right box; two different left-dots share one arrowhead on the right (showing "many-to-one" is allowed).

Step 3 — The one rule the arrows must obey
WHAT. Not any arrows will do. We demand: every arrow that starts inside blob must land inside blob , and every arrow that starts outside must land outside . In symbols, for every string :
Reading each piece:
- — "the dot sits inside the left blob."
- — "the arrowhead lands inside the right blob."
- — "these two facts are the same fact": one is true exactly when the other is.
WHY. This biconditional is the whole contract. It says the translator never lies: a YES-question always becomes a YES-question, a NO-question always becomes a NO-question. That double promise is what will let us borrow 's answers.
PICTURE. Colour-coded arrows: green (inside→inside) allowed, and a red forbidden arrow crossing from inside to outside struck out — that broken arrow is the trap of "only checking the YES direction."

Step 4 — Chain the pipes: build a decider for out of a decider for
WHAT. Suppose someone hands us , a machine that decides (always halts, says YES/NO correctly). We now assemble a machine for by wiring two boxes in a row:
- Feed into . Out comes . (Step-2 machine — always halts, because is total.)
- Feed into . (The given decider — always halts.)
- Echo 's answer as 's answer.
WHY. We are recycling a solved problem. We never invented a fresh idea for ; we translated the -question into a -question and reused the -machine. That is the entire spirit of a reduction.
PICTURE. A pipeline: input → box → wire carrying → box → answer, with a dashed outer box labelled "" wrapping both.

Step 5 — Why always halts (the totality step)
WHAT. Being correct isn't enough for a decider; it must also always answer — never loop forever. Walk the pipeline and check each box halts:
- Box : halts on every input — that's what "total" bought us in Step 2.
- Box : halts on every input — that's what "decider" means.
Two boxes that always halt, wired in series, still always halt.
WHY. This is exactly where the "make total" rule earns its keep. If could loop on some , the pipeline would hang at box 1, and would fail to be a decider — it would only be a recognizer. That single missing property is the difference between " is decidable" and " is merely recognizable."
PICTURE. The same pipeline with a green "always halts" stamp on each box, and a struck-out red version where a partial loops (a curled arrow going nowhere) and the whole pipeline hangs.

Step 6 — Flip the picture: hardness flows along the arrow
WHAT. Take Theorem 1 — " and decidable decidable" — and read it backwards (its contrapositive). If is undecidable, then cannot be decidable. Same arrow, opposite reading:
WHY. Logic: "" is identical to "not not ." Here = " decidable", = " decidable". If is not decidable (not ), then is not decidable (not ). Nothing new is assumed — it's the same theorem wearing a different hat.
PICTURE. The arrow with a big amber "HARDNESS" flowing from into . Underneath, the reversed (wrong) arrow crossed out with the note "tells you nothing about ."

Step 7 — Degenerate cases, so nothing surprises you
WHAT & WHY (four corner cases). Push the machine to its edges and confirm it still behaves.
- (empty blob). No string is in , so the contract becomes "", i.e. must send every string outside . As long as , pick any fixed string and set . Empty language reduces to anything non-full.
- (full box). Every string is in ; the contract needs always. Pick a fixed (needs ) and set .
- constant. A constant is a perfectly good "many-one" map (maximally many-to-one!). It works iff the constant lands on the correct side for every — which only happens when is or . That's why cases 1–2 used constants and general cannot.
- Reflexive edge: . Let (identity — trivially computable and total). The arrows go straight across; contract is automatic. Every language is no harder than itself.
PICTURE. Four mini-panels: empty blob → constant arrow to a NO-dot; full box → constant arrow to a YES-dot; a fan of arrows collapsing to one point (constant); and identity arrows going straight across.

The one-picture summary
WHAT. One diagram compresses all seven steps: the left blob , the right blob , the total function carrying inside→inside and outside→outside, and the wired pipeline answer that is the decider . The amber "hardness" arrow reminds us which way Theorem 2 flows.

Recall Feynman retelling — say it like you're explaining to a friend
Picture two islands of "YES-strings," and . A reduction is a reliable postal service : hand it any letter (string) about island , it always delivers exactly one letter to island — and it never misfiles. YES-letters land in 's YES-pile, NO-letters land in 's NO-pile. That single honesty rule () is the heart of everything.
Now suppose has a perfect oracle that answers any -question and always finishes. To answer a question about , I just mail it through to , ask 's oracle, and echo the reply. Because the postal service never misfiles and never gets lost (it's total), my answer for is always right and always arrives. So: solvable ⟹ solvable.
Read that backwards and you get the real workhorse: if I already know is unsolvable, then can't be solvable either — otherwise I'd have just solved . Hardness rides the arrow from the known-hard tail into the new head. That one sentence powers nearly every undecidability proof you'll meet, from to Rice's Theorem, and the same skeleton with a running clock gives you Polynomial-time reductions and NP-completeness.
Recall Quick self-test
The arrow makes which one at least as hard? ::: (the arrowhead / right side). Why must be total, not partial? ::: So the pipeline never hangs; totality is what upgrades "recognizer" to "decider." Both directions of mean what pictorially? ::: inside→inside AND outside→outside (both arrow colours). To prove new undecidable, reduce which way? ::: known-hard (arrow into ).