ACL2 !>(+ 3 4)
7
ACL2 !>(defun f (x)
	 (+ x 10))

Since F is non-recursive, its admission is trivial.  We observe that
the type of F is described by the theorem (ACL2-NUMBERP (F X)).  We
used primitive type reasoning.

Summary
Form:  ( DEFUN F ...)
Rules: ((:FAKE-RUNE-FOR-TYPE-SET NIL))
Time:  0.01 seconds (prove: 0.00, print: 0.00, other: 0.01)
 F
ACL2 !>(f 3)
13
ACL2 !>(* (f 0) (f 1))
110
ACL2 !>(cons 1 (cons 2 nil))
(1 2)
ACL2 !>(consp '(1 2))
T
ACL2 !>(car '(1 2))
1
ACL2 !>(cdr '(1 2))
(2)
ACL2 !>(defun app (x y) ; comment starts at semicolon
	 (if (consp x)
	     (cons (car x) (app (cdr x) y))
	   y))

The admission of APP is trivial, using the relation O< (which is known
to be well-founded on the domain recognized by O-P) and the measure
(ACL2-COUNT X).  We observe that the type of APP is described by the
theorem (OR (CONSP (APP X Y)) (EQUAL (APP X Y) Y)).  We used primitive
type reasoning.

Summary
Form:  ( DEFUN APP ...)
Rules: ((:FAKE-RUNE-FOR-TYPE-SET NIL))
Time:  0.00 seconds (prove: 0.00, print: 0.00, other: 0.00)
 APP
ACL2 !>(app '(1 2) '(a b c))
(1 2 A B C)
ACL2 !>(app '(1 2)
	    (app '(a b c) '(4 5)))
(1 2 A B C 4 5)
ACL2 !>(app (app '(1 2) '(a b c))
	    '(4 5))
(1 2 A B C 4 5)
ACL2 !>(thm ; associativity
	(equal (app (app x y) z)
	       (app x (app y z))))

*1 (the initial Goal, a key checkpoint) is pushed for proof by induction.

Perhaps we can prove *1 by induction.  Three induction schemes are
suggested by this conjecture.  Subsumption reduces that number to two.
However, one of these is flawed and so we are left with one viable
candidate.  

We will induct according to a scheme suggested by (APP X Y).  This
suggestion was produced using the :induction rule APP.  If we let (:P X Y Z)
denote *1 above then the induction scheme we'll use is
(AND (IMPLIES (NOT (CONSP X)) (:P X Y Z))
     (IMPLIES (AND (CONSP X) (:P (CDR X) Y Z))
              (:P X Y Z))).
This induction is justified by the same argument used to admit APP.
When applied to the goal at hand the above induction scheme produces
two nontautological subgoals.
Subgoal *1/2
Subgoal *1/1

*1 is COMPLETED!
Thus key checkpoint Goal is COMPLETED!

Q.E.D.

Summary
Form:  ( THM ...)
Rules: ((:DEFINITION APP)
        (:FAKE-RUNE-FOR-TYPE-SET NIL)
        (:INDUCTION APP)
        (:REWRITE CAR-CONS)
        (:REWRITE CDR-CONS))
Time:  0.00 seconds (prove: 0.00, print: 0.00, other: 0.00)
Prover steps counted:  357

Proof succeeded.
ACL2 !>
