Class notes: Recursion and Induction, CS 389r
Matt Kaufmann

Miscellaneous notes

ACL2s (Eclipse interface to ACL2) may be helpful if you don't know emacs. But if you want to learn emacs, you might start with this little emacs cheat sheet.

If you do know emacs, I suggest putting the following in your .emacs file, and perhaps reading the documentation at the top of that file.

(load "/projects/acl2/current/emacs/emacs-acl2.el")

For proof trees, see documentation for topic proof-tree. In a nutshell:

:INDUCT hints

Suppose we want as an inductive case:
(implies (and (consp x)
              (foo (cdr x) (g x y)))
         (foo x y))
We can do this:
(defstub g (x y) t)

(defun foo-induction (x y)
  (if (consp x)
      (foo-induction (cdr x) (g x y))
    (list x y)))

(defstub foo (x y) t)

(thm (foo x y)
     :hints (("Goal" :induct (foo-induction x y))))