initial segment of a list
Major Section:  PROGRAMMING

For any natural number n not exceeding the length of l, (take n l) collects the first n elements of the list l.

The following is a theorem (though it takes some effort, including lemmas, to get ACL2 to prove it):

(equal (length (take n l)) (nfix n))
If n is is an integer greater than the length of l, then take pads the list with the appropriate number of nil elements. Thus, the following is also a theorem.
(implies (and (integerp n)
              (true-listp l)
              (<= (length l) n))
         (equal (take n l)
                (append l (make-list (- n (length l))))))
For related functions, see nthcdr and see butlast.

The guard for (take n l) is that n is a nonnegative integer and l is a true list.