anchor.diff:    (null (psr-variaveis-nao-atribuidas p)))
   
   
  +;;; AUXILIAR
  +(defun psr-testa-restricoes (p restricoes)
  +  "Testa uma lista de restricoes e devolve dois valores. O primeiro, um boleano que indica se todas
  +  as restricoes se verificam e o segundo indica o numero de testes realizados."
  +  (let ((testes 0)) 
  +    (dolist (r restricoes (values t testes)) 
  +      (incf testes) 
  +      (when (null (funcall (restricao-funcao-validacao r) p)) (return (values nil testes))))))
  +
  +
   ;;; psr-consistente-p: PSR -> logico, inteiro
   (defun psr-consistente-p (p)
     ""
  -  (let ((testes 0)) 
  -    (dolist (r (psr-restricoes p) (values t testes)) 
  -      (incf testes) 
  -      (when (null (funcall (restricao-funcao-validacao r) p)) (return (values nil testes))))))
  +  (psr-testa-restricoes p (psr-restricoes p)))
   
   
   ;;; psr-variavel-consistente-p: PSR x variavel -> logico, inteiro
   (defun psr-variavel-consistente-p (p v)
     ""
  -  (let ((testes 0)) 
  -    (dolist (r (psr-variavel-restricoes p v) (values t testes)) 
  -      (incf testes) 
  -      (when (null (funcall (restricao-funcao-validacao r) p)) (return (values nil testes))))))
  +  (psr-testa-restricoes p (psr-variavel-restricoes p v)))
   
   
   ;;; psr-atribuicao-consistente-p: PSR x variavel x valor -> logico, inteiro
  
positive.code:   ; (remove "a" (list r1 r2) :key #'restricao-variaveis :test-not #'(lambda(r l) (member r l :test #'equal)))
  )
  
  ;;; psr-adiciona-atribuicao!: PSR x variavel x valor -> {}
  (defun psr-adiciona-atribuicao! (p v n)
    ""
  
negative.code: ;;; psr-atribuicoes-consistentes-arco-p: PSR x variavel x valor x variavel x valor -> logico, inteiro
  (defun psr-atribuicoes-consistentes-arco-p (p v1 valor1 v2 valor2)
    ""
    (let ((antigo-dominio1 (psr-variavel-dominio p v1))
  	(antigo-dominio2 (psr-variavel-dominio p v2))
  	(consistente t)
  	(testes 0))
      (psr-adiciona-atribuicao! p v1 valor1)
      (psr-adiciona-atribuicao! p v2 valor2)
      (setf (values consistente testes) 
  	  (psr-testa-restricoes p (psr-restricoes-ambas-variaveis p v1 v2)))
      (psr-altera-dominio! p v1 antigo-dominio1)
      (psr-altera-dominio! p v2 antigo-dominio2)
      (values consistente testes)))
  
  
  ;;;; 2.2.1 Funcoes de conversao
  