Instance CompSpecs : compspecs. make_compspecs prog. Defined.
Definition Vprog : varspecs. mk_varspecs prog. Defined.
Definition t_struct_list := Tstruct _list noattr.
Fixpoint listrep (sh: share) (contents: list int) (x: val) : mpred :=
match contents with
| h::hs => field_at sh t_struct_list [StructField _head] (Vint h) x *
EX y:val,
field_at sh t_struct_list [StructField _tail] y x * listrep sh hs y
| nil => !! (x = nullval) && emp
end.
Module ListHead.

Lemma wand_frame_intro_list_head: forall sh (x y: int) (s: list int) (l: val),
listrep sh (x :: s) l |--
field_at sh t_struct_list [StructField _head] (Vint x) l *
(field_at sh t_struct_list [StructField _head] (Vint y) l -* listrep sh (y :: s) l).