anchor.diff:          ((> a b)
            (cons a (range (- a 1) b)))))
   
  -
   (defun get-projection (token sentence)
  -  (let ((pset (mapcar (lambda (tk)
  -			(cons (token-id tk) (token-head tk)))
  -		      (sentence-tokens sentence))))
  -    (labels ((child (tk)
  -	       (mapcar #'car (remove-if-not (lambda (n) (equal n tk)) pset :key #'cdr)))
  -	     (aux (tokens projection)
  -	       (if (null tokens)
  -		   projection
  -		   (aux (append (cdr tokens) (child (car tokens)))
  -			(adjoin (car tokens) projection)))))
  -      (sort (aux (list (token-id token)) nil) #'<=))))
  -
  +(let ((head-id (token-head token))
  +      (arange (if (< (token-head token) (token-id token))
  +                  (range (1+ (token-head token)) (token-id token))
  +                  (range (token-id token) (1- (token-head token))))))
  +  (remove-if-not (lambda (tk)
  +                   (is-descendant-t-n tk  head-id sentence))
  +                   arange)))
   
   (defun is-token-projective (token sentence)
     (if (equal 0 (token-head token))
         (values t nil)
  -      (let* ((htk    (find (token-head token) (sentence-tokens sentence) :key #'token-id :test #'equal))
  -	     (prj    (get-projection htk sentence))
  +      (let* ((prj (get-projection token sentence))
   	     (arange (if (< (token-head token) (token-id token))
  -			 (range (1+ (token-head token)) (1- (token-id token)))
  -			 (range (1+ (token-id token)) (1- (token-head token)))))
  +			 (range (1+ (token-head token)) (token-id token))
  +			 (range (token-id token) (1- (token-head token)))))
   	     (aset   (sort (set-difference arange prj :test #'equal) #'<= )))
   	(values (not aset) aset))))
   
  
positive.code: 		(let ((ct (sentence-get-token-by-id sentence id)))
  		  (if (equal "PUNCT" (token-upostag ct))
  		      (push (list ct 'punct-causes-nonproj-of (token-id tk)) errors))))))))))
  
  
  
negative.code:   (every (lambda (tk)
  	   (is-token-projective tk sentence))
  	 (sentence-tokens sentence)))
  
  (defun validate-punct (sentence)
    (let ((errors))
  