\subsection{Mathematical Induction} To prove something of the form $\forall n \in \N. P$ (with $n$ free in $P$), we can use one of these two schemes \subsubsection{Weak Mathematical Induction} If $P$ is not defined yet (e.g. we just have a description of what we need to prove), give a full definition of $P$, which is our induction hypothesis. Then state that we are proving $\forall n \in \N. P$ using \textit{weak} mathematical induction. \shade{blue}{Base case} We show that $P[n \mapsto 0]$ holds. \shade{green}{Step case} We proceed by stating the following: ``Let $m \geq 0$ be arbitrary. We assume $P[n \mapsto m]$ holds, and we prove $P[n \mapsto m + 1]$.'' Finally, do the actual proof. It is also possible to state $P[n \mapsto m]$ simply as $P(m)$ The same, but expressed as a Natural Deduction rule: \[ \begin{prooftree} \hypo{\Gamma \vdash P(0)} \hypo{\Gamma, P(n) \vdash P(n + 1)} \infer2[$n$ not free in $\Gamma$]{\Gamma \vdash \forall n. P(n)} \end{prooftree} \] \subsubsection{Strong Mathematical Induction} If $P$ is not yet defined, then define it. It is our induction hypothesis. Then state: ``We prove $\forall k. P(k)$ by strong (mathematical) induction. Let $k$ be arbitary and let us assume $P(j)$ for all $j < k$''. Finally, do case distinction on the different values $k$ can take. The same, but expressed as a Natural Deduction rule: \[ \begin{prooftree} \hypo{\Gamma, \forall m < n. P(m) \vdash P(n)} \infer1[$n$ not free in $\Gamma$, $m$ not free in $P(n)$]{\Gamma \vdash \forall n . P(n)} \end{prooftree} \]