(* The C programming language has a special namespace for struct
** and union identifiers, e.g., "struct foo {...}".  Some type-based operators
** in the program logic need access to an interpretation of this namespace,
** i.e., the meaning of each struct-identifier such as "foo".  The next
** line (which looks identical for any program) builds this
** interpretation, called "CompSpecs" *)
Instance CompSpecs : compspecs.(** Calculate the "types-of-global-variables" specification
 ** directly from the program *)
Definition Vprog : varspecs.(** A convenience definition *)
Definition t_struct_list := Tstruct _list noattr.

(* Specifications: *)
Lemma body_reverse: semax_body Vprog Gprog f_reverse reverse_spec.