external function listmakenull(var l: list):listposition;
external procedure listinsert(x: listelement; p:listposition; var l: list);
external function listretrieve(p: listposition; l: list):listelement;
external procedure listdelete(p:listposition; var l:list);
external function listfirst(l:list):listposition;
external function listnext(p:listposition; l:list):listposition;
external function listprevious(p:listposition; l:list):listposition;
external function listend(l:list):listposition;
external function listlocate(x:listelement; l:list):listposition;
external procedure listprint(l:list; var out:text);