fact: Fixpoint lseg (ls: listspec list_structid list_link list_token) (dsh psh: share) (contents: list (val * elemtype ls)) (x z: val) : mpred := match contents with | (p,h)::hs => !! (p=x /\ ~ptr_eq x z) && EX y:val, !! is_pointer_or_null y && list_token dsh x * list_cell ls dsh h x * field_at psh list_struct (StructField list_link ::nil) (valinject (nested_field_type list_struct (StructField list_link :: nil)) y) x * lseg ls dsh psh hs y z | nil => !! (ptr_eq x z) && emp end.
imports: VST.floyd.base2 VST.floyd.client_lemmas VST.floyd.closed_lemmas VST.floyd.nested_pred_lemmas VST.floyd.nested_field_lemmas VST.floyd.efield_lemmas VST.floyd.mapsto_memory_block VST.floyd.reptype_lemmas VST.floyd.data_at_rec_lemmas VST.floyd.field_at VST.floyd.nested_loadstore VST.floyd.entailer