anchor.diff:  ;;; Returns next possible state
   ;;; given current state and one of the
   ;;; possible moves.
  -(defun get-next-state (m c state-stack move-idx)
  +(defun get-next-state (state-stack move-idx)
     (let* ((current-state (first state-stack))
            (move (nth move-idx
                       (if (getf current-state :has-boat)
  
positive.code:   (states-equal-p *winning-state* a-state))
  
  (defmacro new-state (&rest rest)
    `(list :branch-idx 0 ,@rest))
  
  (declaim (inline visited-state-p))
  (declaim (inline valid-state-p))
  
negative.code: ;; on the left side.
  (defparameter *winning-state* `(:missionaries 0 :cannibals 0 :has-boat nil))
  
  (defvar *m*)
  (defvar *c*)
  
  ;; A list of valid moves.
  ;; We have 2 types of moves;
  ;; - with boat on the left side;
  