Definition lseg_cell  (ls: listspec list_structid list_link list_token)
(dsh psh : share)
(v: elemtype ls) (x y: val) :=
!!is_pointer_or_null y && list_token dsh x * list_cell ls dsh v x * field_at psh list_struct (StructField list_link :: nil) (valinject (nested_field_type list_struct (StructField list_link :: nil)) y) x.

Lemma lseg_cons_eq2: forall
(ls : listspec list_structid list_link list_token) (dsh psh : share) (h : elemtype ls)
(r : list (val * elemtype ls))
(x x' z : val), lseg ls dsh psh ((x',h) :: r) x z =
!!(x=x' /\ ~ ptr_eq x z) && (EX  y : val, lseg_cell ls dsh psh h x y * lseg ls dsh psh r y z).