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.
Induction Upwards: To (p i max)
for all i
and all max
,
prove each of the following:
Base Case: (implies (not (and (natp i) (natp max) (< i max))) (p i max))
Induction Step: (implies (and (natp i) (natp max) (< i max) (p (+ i 1) max)) (p i max))Note that the induction hypothesis is about an
i
that is bigger than
the i
in in the conclusion. In induction, as in recursion, the sense of
one thing being ``smaller'' than another is determined by an arbitrary
measure of all the variables, not the magnitude or extent of some particular
variable.A function that suggests this induction is shown below. ACL2 has to be told
the measure, namely the difference between max
and i
(coerced to a natural
number to insure that the measure is an ordinal).
(defun count-up (i max) (declare (xargs :measure (nfix (- max i)))) (if (and (natp i) (natp max) (< i max)) (cons i (count-up (+ 1 i) max)) nil)).