Lisp Perm Check
(defun perm-check (a)
  (let* ((sorted (sort (copy-list a) #'<))
         (vec (coerce sorted 'vector))
         (n (length vec)))
    (loop for k from 0 below n
          do (when (and (< (1+ k) n) (/= (aref vec k) (1+ k)))
               (return-from perm-check 0)))
    1))

This validates that every value from 1 to N appears exactly once.