UPDATE-NTH

modify a list by putting the given value at the given position
Major Section:  PROGRAMMING

(Update-nth key val l) returns a list that is the same as the list l, except that the value at the 0-based position key (a natural number) is val.

If key is an integer at least as large as the length of l, then l will be padded with the appropriate number of nil elements, as illustrated by the following example.

ACL2 !>(update-nth 8 'z '(a b c d e))
(A B C D E NIL NIL NIL Z)
We have the following theorem.
(implies (and (true-listp l)
              (integerp key)
              (<= 0 key))
         (equal (length (update-nth key val l))
                (if (< key (length l))
                    (length l)
                  (+ 1 key))))

The guard of update-nth requires that its first (position) argument is a natural number and its last (list) argument is a true list.