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

Lemma list_cell_valid_pointer:
forall (LS: listspec list_structid list_link list_token) (sh: Share.t) v p,
sepalg.nonidentity sh ->
field_offset cenv_cs list_link list_fields + sizeof (field_type list_link list_fields)
= field_offset_next cenv_cs list_link list_fields  (co_sizeof (get_co list_structid)) ->
list_cell LS sh v p * field_at_ sh list_struct (StructField list_link::nil) p
|-- valid_pointer p.