The hd and tl built-in functions of Lambda--prl do not exist in Nuprl . They can be simulated with the following definitions.
    hd(<a:list>)==list_ind(<a>; "?"; h,t,v.h)
    tl(<a:list>)==list_ind(<a>; nil; u,v,w.v)
Given these definitions, it is straightforward to prove in Nuprl
  that
 hd satisfies
>> All A:U1. All L:A list. hd(L) in A => ~(L=nil in A list)and
>> All A:U1. All x:A. All L:A list. hd(x.L)=x in A
Once the two goals above are proved they can be used in other proofs as lemmas. Similar facts for tl are also easy to prove.