code for unevaluated Boolean and conditional expressions



Why is the 'ev' needed after 'subst' in  (%i6)? My
example is overly complicated, but it seemed like
an interesting test.

(%i1) load("boolsimp.lisp")$
(%i2) f(x) := if x > 8 then f(x-1) + 3 else x;
(%o2) f(x):=if x>8 then f(x-1)+3 else x
(%i3) assume(q > 12);
(%o3) [q>12]
(%i4) f(q);
(%o4) (if q-5>8 then f(q-6)+3 else q-5)+15
(%i5) subst(q=13,%);
(%o5) (if 8>8 then f(7)+3 else 8)+15

(%i6) ev(%);   <-- why is this ev needed?
(%o6) 23
(%i7) f(13);
(%o7) 23       <-- OK, agrees with %o6
Barton