anchor.diff:      (let* ((v (psr-mrv p))
   ;	   (d (psr-variavel-dominio p v))
   	   )
  -;      (format t "Vou experimentar a variavel:~a~%" v)
  +;      (when DEBUG (format t "Vou experimentar a variavel:~a cujo dominio e:~a~%" v (psr-variavel-dominio p v)))
         (dolist (valor (psr-variavel-dominio p v))
   	(multiple-value-bind (consistente testes) (psr-atribuicao-consistente-p p v valor)
   	  (incf testes-totais testes)
   	  (when consistente
  -;	    (format t "Atribuindo o valor:~a a variavel:~a~%" valor v)
  +;	    (when DEBUG (format t "Atribuindo o valor:~a a variavel:~a~%" valor v))
   	    (psr-adiciona-atribuicao! p v valor)
  -;	    (print "Depois da atribuicao")
  -;	    (desenha-fill-a-pix (psr->fill-a-pix p 10 10))
  +
  +;	    (when DEBUG
  +;	      (format DEBUG "Depois da atribuicao~%")
  +;	      (desenha-fill-a-pix (psr->fill-a-pix p LC LC)))
   	    (multiple-value-bind (inferencias testes) (psr-forward-checking p v)
  -;	      (format t "PR: inferencias:~a~%" inferencias)
  +;	      (when DEBUG (format t "PR: inferencias:~a~%" inferencias))
   	      (incf testes-totais testes)
   	      (when inferencias ; teste suficiente?
   		(let ((backup (make-hash-table :test 'equal)))
   		  (maphash #'(lambda (iv id)
  -;			       (format t "iv:~a id:~a~%" iv id)
  +;			       (when DEBUG (format t "iv:~a id:~a~%" iv id))
   			       (setf (gethash iv backup) (psr-variavel-dominio p iv))
   			       (psr-altera-dominio! p iv id))
   			   inferencias)
   
  -;		  (print "Depois das inferencias")
  -;		  (desenha-fill-a-pix (psr->fill-a-pix p 10 10))
  +;		  (when DEBUG
  +;		    (format DEBUG "Depois das inferencias~%")
  +;		    (desenha-fill-a-pix (psr->fill-a-pix p LC LC)))
  +
   		  (multiple-value-bind (resultado testes) (procura-retrocesso-fc-mrv p)
   		    (incf testes-totais testes)
   		    (when resultado
   		      (return-from procura-retrocesso-fc-mrv (values resultado testes-totais))))
   
   		  (maphash #'(lambda (bv bd)
  -			       (psr-altera-dominio! p bv bd)
  -			       (psr-remove-atribuicao! p bv))
  +			       (psr-altera-dominio! p bv bd))
   			   backup)
  -;		  (print "Removidas as inferencias:")
  -;		  (desenha-fill-a-pix (psr->fill-a-pix p 10 10))
  +;		  (when DEBUG
  +;		    (print "Removidas as inferencias:")
  +;		    (desenha-fill-a-pix (psr->fill-a-pix p LC LC)))
   		  ))
   
   	      (psr-remove-atribuicao! p v)
  -;	      (print "Removendo a atribuicao:")
  -;	      (desenha-fill-a-pix (psr->fill-a-pix p 10 10))
  +;	      (when DEBUG
  +;		(print "Removendo a atribuicao:")
  +;		(desenha-fill-a-pix (psr->fill-a-pix p LC LC)))
   	      )))))
   
       (return-from procura-retrocesso-fc-mrv (values nil testes-totais))))
  
positive.code: 	(atribuicao (psr-variavel-valor p v))
  	(consistente t)
  	(testes 0))
  
      (psr-altera-dominio! p v (list valor)) ; TODO: ainda e preciso?
      (psr-adiciona-atribuicao! p v valor)
      (setf (values consistente testes) (psr-variavel-consistente-p p v))
  
      (if atribuicao (psr-adiciona-atribuicao! p v atribuicao) (psr-remove-atribuicao! p v))
      (psr-altera-dominio! p v antigo-dominio) ; TODO: ainda e preceiso?
      (values consistente testes)))
  
  
  
negative.code: 	(return-from procura-retrocesso-simples (values p testes-total))
  	(let* ((v (first (psr-variaveis-nao-atribuidas p)))
  	       (d (psr-variavel-dominio p v)))
  ;	  (format t "v:~a d:~a~%" v d)
  	  (dolist (valor d)
  	    (multiple-value-bind (consistente testes) (psr-atribuicao-consistente-p p v valor)
  	      (incf testes-total testes)
  