Major Section: INTRODUCTION-TO-THE-THEOREM-PROVER
See logic-knowledge-taken-for-granted-inductive-proof for an explanation of what we mean by the induction suggested by a recursive function or a term.
Classical Induction on Natural Numbers: Induction is familiar in the
arithmetic setting. To prove (p n), for all n, by classical
induction on the construction of the natural numbers, prove each of the
following:
Base Case: (implies (zp n) (p n))
Induction Step:
(implies (and (not (zp n))
(p (- n 1)))
(p n))
The Base Case establishes that p holds for 0. In fact, because of
the definition of zp
, it establishes that (p n) holds when
n is 0 and it holds when n is not a natural number.
The Induction Step establishes that if n is a natural number other than 0,
and if p holds for n-1, then p holds for n. The hypothesis
(p (- n 1)) above is called the induction hypothesis.
A function that suggests this induction is
(defun nat-recursion (n)
(if (zp n)
n
(nat-recursion (- n 1))))
Similarly, the term (fact n) suggests this induction if fact
is defined:
(defun fact (k)
(if (zp k)
1
(* k (fact (- k 1))))).
even though the formal parameter of this definition of fact is k, not n.