anchor.diff:    (let ((tab (make-array (list linhas colunas)))
   	(i 0))
       (dolist (v (psr-variaveis-todas p) tab)
  -      (setf (aref tab (floor i colunas) (mod i colunas)) (first (gethash v (psr-hash-d p))))
  +      (setf (aref tab (floor i colunas) (mod i colunas)) (psr-variavel-valor p v))
         (incf i))))
   
   ;;;; 2.2.2
  
positive.code: 	(return-from procura-retrocesso-grau (values p testes-total))
  	(let* ((v (psr-var-maior-grau p))
  	       (d (psr-variavel-dominio p v)))
  	  (dolist (valor d)
  	    (multiple-value-bind (consistente testes) (psr-atribuicao-consistente-p p v valor)
  	      (incf testes-total testes)
  	      (when consistente
  		(psr-adiciona-atribuicao! p v valor)
  		(multiple-value-bind (recurs-consistente recurs-testes) (procura-retrocesso-simples p)
  		  (incf testes-total recurs-testes)
  		  (when (not (null recurs-consistente))
  		    (return-from procura-retrocesso-grau (values p testes-total))))
  
negative.code:   (let ((lista-arcos (list))) ; lista vs vector?
      (dolist (v-na (psr-variaveis-nao-atribuidas p))
        (when (not (equal v v-na))
  	(when (some #'(lambda (r) (find r (psr-variavel-restricoes p v-na)))
  		    (psr-variavel-restricoes p v))
  	  (push (cons v-na v) lista-arcos))))
      (nreverse lista-arcos)))
  
  
  (defun psr-revise (p x y inferencias)
    ""
    (let* ((testes-total 0)
  	 (revised nil)
  	 (dominio-x (gethash x inferencias (psr-variavel-dominio p x)))
  	 (novo-dominio-x dominio-x)
  	 (dominio-y (if (psr-variavel-atribuida-p p y)
  			(psr-variavel-dominio p y)
  			(gethash y inferencias (psr-variavel-dominio p y)))))
      (dolist (valor-x dominio-x)
        (when (dolist (valor-y dominio-y t)
  	      (multiple-value-bind (consistente testes)
  