anchor.diff:  	(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)
  +		(multiple-value-bind (recurs-consistente recurs-testes) (procura-retrocesso-grau p)
   		  (incf testes-total recurs-testes)
   		  (when (not (null recurs-consistente))
   		    (return-from procura-retrocesso-grau (values p testes-total))))
  
positive.code: 
  (defun n-restricoes-c-natribuidas (p v)
    ""
    (count-if #'(lambda (r) (some #'(lambda (v) (psr-variavel-atribuida-p p v))
  				(restricao-variaveis r)))
  	    (psr-variavel-restricoes p v)))
  
  
negative.code: ;;; psr-variavel-restricoes: PSR x variavel -> lista restricoes
  (defun psr-variavel-restricoes (p v)
    "Devolve uma lista com todas as restricoes aplicaveis a uma variavel."
    (nth-value 0 (gethash v (psr-hash-r p)))) ; TODO: pode ser lento
  
  
  ;;; psr-adiciona-atribuicao!: PSR x variavel x valor -> {}
  