anchor.diff:  (defvar *transform-term*)		; Actually a pair of current term and its parent
   (defvar *transform-commands*)
   (defvar *undo-stack*)
  +(defvar *redos*)
  +(defvar *redoing?* nil)
   
   (defun initialize-transform-session (spc)
     (setq *transform-spec* spc)
  
positive.code:   (setq *prompt* "** ")
    (emacs::eval-in-emacs "(setq *sw-slime-prompt* \"** \")"))
  
  (defun push-state ()
    (push (list *transform-term* *transform-commands*) *undo-stack*))
  
  (defvar *print-undone-commands* t)
  
  (defun pop-state ()
    (let ((last-state (pop *undo-stack*)))
      (setq *transform-term* (first last-state))
      (setq *transform-commands* (second last-state))))
  
  (defun print-current-term ()
    (if (null *transform-term*)
        (princ "No term chosen")
        (princ (AnnSpecPrinter::printTerm (car *transform-term*))))
    (values))
  
  (defun add-command (command later-commands)
  
negative.code: 
  (defun finish-transform-session ()
    (finish-previous-multi-command)
    (setq *redos* (reverse (loop for el in *undo-stack* collect (fourth el))))
    (if (null *transform-commands*)
        (format t "No transformations")
        (Script::printScript (Script::mkSteps (reverse *transform-commands*))))
    (setq *current-command-processor* 'process-sw-shell-command)
    (setq *prompt* "* ")
    (emacs::eval-in-emacs "(setq *sw-slime-prompt* \"* \")")
  