anchor.diff:  
   (defun psr-variavel-atribuida-p (p v)
     "Devolve booleano que indica se a variavel esta ou nao atribuida."
  -  (= (length (psr-variavel-dominio p v)) 1))
  +  (nth-value 1 (gethash v (psr-hash-a p))))
   
   
   ;;; 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
  +  (nth-value 0 (gethash v (psr-hash-r p))))
   
   
   ;;; psr-adiciona-atribuicao!: PSR x variavel x valor -> {}
  -(defun psr-adiciona-atribuicao! (p v n)
  -  ""
  -  (setf (gethash v (psr-hash-d p)) (list n)))
  +(defun psr-adiciona-atribuicao! (p v valor)
  +  ""
  +  (setf (gethash v (psr-hash-a p)) valor))
   
   
   ;;; psr-remove-atribuicao!: PSR x variavel -> {}
   (defun psr-remove-atribuicao! (p v)
     ""
  -  (setf (gethash v (psr-hash-d p)) nil))
  +  (remhash v (psr-hash-a p)))
   
   
   ;;; psr-altera-dominio!: PSR x variavel x dominio {}
  
positive.code: 
  (defun psr-conta-valor (p variaveis valor)
    "Devolve o numero de variaveis (do argumento) que tem como valor o 'valor'."
    (count t (mapcar
  	    #'(lambda (v) (let ((d (psr-variavel-dominio p v)))
  				(and (= (length d) 1) (= valor (first d)))))
  	    variaveis)))
  
  
  ;;; fill-a-pix->psr: array -> PSR
  
negative.code: ;;; psr-variaveis-nao-atribuidas: PSR -> lista de variaveis
  (defun psr-variaveis-nao-atribuidas (p)
    "Devolve lista de variaveis nao atribuidas (pela ordem inicial)."
    (loop for v in (psr-variaveis-todas p) when (not (psr-variavel-atribuida-p p v)) collect v))
  
  
  ;;; psr-variavel-valor: PSR x variavel -> objecto
  (defun psr-variavel-valor (p v)
    "Devolve o valor atribuido a variavel (caso nao exista atribuicao devolve nil)."
    (nth-value 0 (gethash v (psr-hash-a p))))
  
  
  ;;; psr-variavel-dominio: PSR x variavel -> dominio
  