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 )  (x z : val),
~ (readable_share dsh) ->
lseg ls dsh psh (x :: r) x z =
!!(~ ptr_eq x z) && (EX  y : val, lseg_cell ls dsh psh h x y * lseg ls dsh psh r y z).