The statement
Since we can't go over "manually proving" all claims 1,2,… and actually get to the finish line in a finite time, we use induction to prove "all the claims at once".
is essentially accurate, but it's actually making two separate points:
- It's trying to motivate why it is necessary to go from countably many separate statements $P(0)$, $P(1)$, $P(2)$, $P(3)$, ... to a single universally quantified statement $\forall n\in\mathbb{N}. P(n)$.
- It introduces the induction principle that allows you to prove $\forall n\in\mathbb{N}.P(n)$ by proving the simpler statements $P(0)$ and $\forall n\in\mathbb{N}.P(n) \Rightarrow P(n + 1)$.
The first part of the quote
we can't go over "manually proving" all claims 1,2,… and actually get to the finish line in a finite time
motivates the point (1.), whereas the second part
we use induction to prove "all the claims at once"
hints at one specific method how to accomplish (2.).
Motivating (1.) and explaining (2.) are actually two separate pedagogical tasks, both challenging in their own way.
Motivating the induction principle
The (2.) might be the easier one, because it does not include any subtleties about "infinitely many statements", and because it's just one of Peano's axioms. Intuitively, it simplifies the problem, because it replaces a "complicated" statement $\forall n.P(n)$ about $P(n)$ by a "much simpler" statement $\forall n. P(n) \Rightarrow P(n + 1)$ about tiny steps $P(n) \Rightarrow P(n + 1)$.
While proving $P(0)$ and $\forall n.P(n) \Rightarrow P(n+1)$ is sufficient, it's not necessary for proving $\forall n.P(n)$: if, for example, one is able to assume $n:\mathbb{N}$ and prove $P(n)$ directly, then this probably should be preferred in most of the cases. The quote by itself therefore does not motivate why you "need" the induction: it just introduces one additional tool specific to $\mathbb{N}$.
Motivating the necessity to go from infinitely many statements $P(1)$, $P(2)$, ... to a single statement $\forall n.P(n)$.
The (1.)st point might be quite a bit more difficult to motivate. Below, I'm suggesting to take some inspiration from intuitionism, and emphasize the difference between "giving a man a fish" ($P(1)$, $P(2)$, ...) vs. "giving a man a fishing rod" ($\forall n.P(n)$).
Explain it like I'm five
Let's start with a "physical" metaphor, in which intuitionistic proof terms are replaced by physical artifacts.
Consider the following problem: suppose that you want to reach a certain altitude of n
meters above the ground. How would you explain the fundamental difference between
- the ability to build arbitrarily tall skyscrapers and
- interstellar spaceflight?
In the first case, being able to build arbitrarily tall skyscrapers means that
- For each given height of
n
meters
- one is able to design and to build a tower of height
n
.
In the second case, "spaceflight" means that
- One is able to design and build a rocket that
- for each given distance of
n
meters
- can reach the distance of
n
meters from the surface of Earth.
Note how the order of building and choosing the n
have switched:
- for towers, you first have to pick and fix an
n
, and only then can you build the tower.
- for rockets, you first build a rocket, which then allows you to pick an arbitrary
n
Both methods would, in a highly idealized world, allow you to reach arbitrary distance from the surface of the Earth. But in the first case, you would have to re-design and re-build the tower for each given n
, whereas in the second case, you would be able to build one single vehicle once, which could then travel arbitrarily far.
You can see how the induction principle works for a rocket:
P(0)
: You can place the rocket on the surface of the Earth (without it falling over etc.)
P(n) => P(n + 1)
: If it went P(n)
meters, and it can fly one more meter, then it can also reach the distance of P(n + 1)
meters.
Thus, for a rocket, you can conclude that, in principle, it can go arbitrarily far.
The induction doesn't work for towers / skyscrapers, though: it could well be that having a wooden tower that's 100 meters tall doesn't allow you to go to 101 meter, because the entire construction is on the brink of collapse. You would have to switch to brick / steel / titanium / graphene / unobtanium ... in order to build taller buildings. This is the difference between the ability to build arbitrarily tall towers and the ability to build rockets.
Explain it like I can program
If one understands the distinction between the compile time / runtime, and is working in a language where types can depend on integers, then it should be quite obvious that:
- Being able to write down a term of type
P(n)
at compile time will only give you a single value of runtime type P(n)
, but not necessarily P(n + 1)
, P(n + 2)
, ... etc.
- Being able to write down a term of the dependent function type
Π(n: Nat).P(n)
/forall(n: Nat).P(n)
gives you a function which, given an arbitrary n: Nat
at runtime, would produce you a value of type P(n)
.
Here is a very similar construction, written out in an actual programming language: the question showed that one could prove P(n)
for each n
by rerunning the compiler, whereas the answer showed how to prove Forall n. P(n)
once and for all, without having to re-run the compilation for each new n
.
Explain it like I understood something about formal systems
In the statement
- "For all κ, we can prove
P(κ)
." (where κ is a metavariable that can take values of natural numbers, e.g. κ = 1
for P(1)
, κ = 2
for P(2)
etc.)
the universal quantification takes place in the metalanguage (in this case, in plain English, without the gray background
). It's a meta-linguistic statement about infinitely many propositions P(1)
, P(2)
, P(3)
... etc.
In the statement
the universal quantification takes place in the object language, the quantifier is part of the proposition that we are proving, and we are talking about one single proposition ∀n.P(n)
.
These are clearly very different statements, because in the first case, one doesn't need universal quantifiers, whereas the second couldn't even be formulated in a system that doesn't have universal quantification.
This should also clarify Steve's question under this answer: it's universal quantification in both cases, but in one case, it's in the metalanguage, whereas in the other case, it's actually in the object language.
So, in all three cases, one can see that it's always
- building infinitely many static structures vs.
- building one single rocket with unlimited range
or
- rerunning the compiler unbounded number of times to generate separate terms of type
P(n)
vs.
- running the compiler just once to generate a function of type
forall n. P(n)
or
- making a metalanguage-claim about infinitely many separate propositions
P(1)
, P(2)
, ...
- making a claim about a single proposition
∀n.P(n)
.
To conclude,
Since we can't go over "manually proving" all claims 1,2,… and actually get to the finish line in a finite time, we use induction to prove "all the claims at once"
is essentially accurate.