anchor.diff:    (let ((r (random 1.0)))
       (cond ((< r 0.05)
   	   '())
  -	  ((< r 0.90)
  +	  ((< r 0.20)
   	   (list (elt vars (random (length vars)))))
   	  (t
   	   (let* ((v1 (elt vars (random (length vars))))
  
positive.code: 
  (defun make-node (&optional successors)
    (make-instance 'node :successors successors))
  
  ;;; The probability of giving a node in layer 0 zero successors.
  (defparameter *initial-zero-successor-probability* 0.05)
  
negative.code: 			  :direction :output
  			  :if-exists :supersede)
      (format stream "digraph G {~%")
      ;; First draw all the nodes.
      (sicl-compiler-utilities:map-nodes
       initial-node #'successors
       (lambda (node)
         (format stream
  	       "   ~a [shape = box, label = \"~a\"];~%"
  	       (name node) (name node))))
      ;; Next draw all the links between nodes
      (sicl-compiler-utilities:map-nodes
       initial-node #'successors
       (lambda (node)
         (loop for succ in (successors node)
  	     do (format stream
  			"   ~a -> ~a [style = bold];~%"
  			(name node)
  			(name succ)))))
      
       ;; Draw all the variables.
       (let ((table (make-hash-table :test #'eq)))
         (sicl-compiler-utilities:map-nodes
  	initial-node #'successors
  	(lambda (node)
  	  (loop for var in (append (inputs node) (outputs node))
  		do (unless (gethash var table)
  		     (setf (gethash var table) t)
  		     (format stream
  			     "   ~a [shape = ellipse, label = \"~a\"];~%"
  			     var var))))))
      ;; Draw all the inputs and outputs.
      (sicl-compiler-utilities:map-nodes
       initial-node #'successors
       (lambda (node)
         (loop for var in (inputs node)
  	     do (format stream
  			"   ~a -> ~a [color = red, style = dashed];~%"
  			var (name node)))
         (loop for var in (outputs node)
  	     do (format stream
  			"   ~a -> ~a [color = blue, style = dashed];~%"
  			(name node) var))))
      (format stream "}~%")))
  
  (defun draw-preorder (preorder filename)
  