{hd <> 0 | list hd 0}
nxt <-* hd;
{hd <> 0 | hd + 0 |-> nxt ** hd + 1 |->_ ** list nxt 0}

{hd <> 0 | hd + 0 |-> nxt ** hd + 1 |->_ ** list nxt 0}
tmp <-* hd + 1
{TT | hd + 0 |-> nxt ** hd + 1 |-> tmp ** list nxt 0}
