anchor.diff:           )
         )
         (setf *play-so-far* (snoc move *play-so-far*))
  -      (if (game-over-p *play-so-far) return nil)
  -   )
  -   (cond
  -      ((eq (analyze *play-so-far* 'w)
  +      (if (game-over-p *play-so-far*) (return nil))
  +   )
  +   (cond
  +      ((eq (analyze *play-so-far*) 'w)
            (cond
  -            ((eq *most-recent-hmp-move 'random)
  +            ((eq *most-recent-hmp-move* 'random)
                  (setf *nr-random-moves-wins-by-hmp* (+ 1 *nr-random-moves-wins-by-hmp*))
               )
  -            ((eq *most-recent-hmp-move 'heuristic)
  +            ((eq *most-recent-hmp-move* 'heuristic)
                  (setf *nr-heristic-move-wins-by-hmp* (+ 1 *nr-heristic-move-wins-by-hmp*))
               )
            )
         )
  -      *play-so-far*
  -      )
  -   )
  +   )
  +   *play-so-far*
   )
   
   ; predicate to determine if the play is over or not
  
positive.code:    (format t "~A " (first rule))
     (format t "~A~%" (second rule))
     (format t "~A " (third rule))
     (format t "~A~%" (forth rule))
     nil
  )
  
  
negative.code:    (if (null rule)
        (let ()
           (setf move (select *avail*))
           (setf *nr-random-moves-by-hmp* (+ 1 *nr-random-moves-by-hmp*))
           (setf *most-recent-hmp-move* 'random)
           (if report (format t "making a random move ~A since no rule is applicable.~%" move))
        )
  