Induction on a is unflawed: every occurrence of a in the conjecture
(equal (app (app a b) c)
       (app a (app b c)))
is in a position being recursively decomposed!Now look at the occurrences of b.  The first (shown in bold below) is
in a position that is held constant in the recursion of (app a b).  It
would be ``bad'' to induct on b here.
(equal (app (app a b) c)
       (app a (app b c)))
 
 