
{tmp == last /\ first > 0 /\ current > 0 /\ last > 0 | 
(list first current) ** (list current last) ** 
(last |-> 0) ** (last+1 |-> data) ** 
(elem |-> 0) ** (elem+1 |->_)}

                [tmp+0] := elem

{tmp == last /\ first > 0 /\ current > 0 /\ last > 0 |  
(list first current) ** (list current last) ** 
(last |-> elem) ** (last+1 |-> data) ** 
(elem |-> 0) ** (elem+1 |->_)}
