Record module {reptype: Type} :=  {
   mf_rep: reptype;
   mf_Gimport: list (ident*funspec);
   mf_Gexport :  list (reptype -> ident*funspec);
   mf_Gintern :  list (reptype -> ident*funspec);
   mf_G' :=  map (fun f => f mf_rep)
                  (mf_Gexport ++ mf_Gintern);
   mf_G := mf_Gimport ++ mf_G';
   mf_V : varspecs;
   mf_funs: list (ident * fundef);
   mf_funs_correct: forall (Espec: OracleKind),
     semax_func mf_V mf_G mf_funs mf_G'
}.Record module {reptype: Type} :=  {
   mf_rep: reptype;
   mf_Gimport: list (ident*funspec);
   mf_Gexport :  list (reptype -> ident*funspec);
   mf_Gintern :  list (reptype -> ident*funspec);
   mf_G' :=  map (fun f => f mf_rep)
                  (mf_Gexport ++ mf_Gintern);
   mf_G := mf_Gimport ++ mf_G';
   mf_V : varspecs;
   mf_funs: list (ident * fundef);
   mf_funs_correct: forall (Espec: OracleKind),
     semax_func mf_V mf_G mf_funs mf_G'
}.Record module {reptype: Type} :=  {
   mf_rep: reptype;
   mf_Gimport: list (ident*funspec);
   mf_Gexport :  list (reptype -> ident*funspec);
   mf_Gintern :  list (reptype -> ident*funspec);
   mf_G' :=  map (fun f => f mf_rep)
                  (mf_Gexport ++ mf_Gintern);
   mf_G := mf_Gimport ++ mf_G';
   mf_V : varspecs;
   mf_funs: list (ident * fundef);
   mf_funs_correct: forall (Espec: OracleKind),
     semax_func mf_V mf_G mf_funs mf_G'
}.Record module {reptype: Type} :=  {
   mf_rep: reptype;
   mf_Gimport: list (ident*funspec);
   mf_Gexport :  list (reptype -> ident*funspec);
   mf_Gintern :  list (reptype -> ident*funspec);
   mf_G' :=  map (fun f => f mf_rep)
                  (mf_Gexport ++ mf_Gintern);
   mf_G := mf_Gimport ++ mf_G';
   mf_V : varspecs;
   mf_funs: list (ident * fundef);
   mf_funs_correct: forall (Espec: OracleKind),
     semax_func mf_V mf_G mf_funs mf_G'
}.Record module {reptype: Type} :=  {
   mf_rep: reptype;
   mf_Gimport: list (ident*funspec);
   mf_Gexport :  list (reptype -> ident*funspec);
   mf_Gintern :  list (reptype -> ident*funspec);
   mf_G' :=  map (fun f => f mf_rep)
                  (mf_Gexport ++ mf_Gintern);
   mf_G := mf_Gimport ++ mf_G';
   mf_V : varspecs;
   mf_funs: list (ident * fundef);
   mf_funs_correct: forall (Espec: OracleKind),
     semax_func mf_V mf_G mf_funs mf_G'
}.Record module {reptype: Type} :=  {
   mf_rep: reptype;
   mf_Gimport: list (ident*funspec);
   mf_Gexport :  list (reptype -> ident*funspec);
   mf_Gintern :  list (reptype -> ident*funspec);
   mf_G' :=  map (fun f => f mf_rep)
                  (mf_Gexport ++ mf_Gintern);
   mf_G := mf_Gimport ++ mf_G';
   mf_V : varspecs;
   mf_funs: list (ident * fundef);
   mf_funs_correct: forall (Espec: OracleKind),
     semax_func mf_V mf_G mf_funs mf_G'
}.Record module {reptype: Type} :=  {
   mf_rep: reptype;
   mf_Gimport: list (ident*funspec);
   mf_Gexport :  list (reptype -> ident*funspec);
   mf_Gintern :  list (reptype -> ident*funspec);
   mf_G' :=  map (fun f => f mf_rep)
                  (mf_Gexport ++ mf_Gintern);
   mf_G := mf_Gimport ++ mf_G';
   mf_V : varspecs;
   mf_funs: list (ident * fundef);
   mf_funs_correct: forall (Espec: OracleKind),
     semax_func mf_V mf_G mf_funs mf_G'
}.Record module {reptype: Type} :=  {
   mf_rep: reptype;
   mf_Gimport: list (ident*funspec);
   mf_Gexport :  list (reptype -> ident*funspec);
   mf_Gintern :  list (reptype -> ident*funspec);
   mf_G' :=  map (fun f => f mf_rep)
                  (mf_Gexport ++ mf_Gintern);
   mf_G := mf_Gimport ++ mf_G';
   mf_V : varspecs;
   mf_funs: list (ident * fundef);
   mf_funs_correct: forall (Espec: OracleKind),
     semax_func mf_V mf_G mf_funs mf_G'
}.Record module {reptype: Type} :=  {
   mf_rep: reptype;
   mf_Gimport: list (ident*funspec);
   mf_Gexport :  list (reptype -> ident*funspec);
   mf_Gintern :  list (reptype -> ident*funspec);
   mf_G' :=  map (fun f => f mf_rep)
                  (mf_Gexport ++ mf_Gintern);
   mf_G := mf_Gimport ++ mf_G';
   mf_V : varspecs;
   mf_funs: list (ident * fundef);
   mf_funs_correct: forall (Espec: OracleKind),
     semax_func mf_V mf_G mf_funs mf_G'
}.Record module {reptype: Type} :=  {
   mf_rep: reptype;
   mf_Gimport: list (ident*funspec);
   mf_Gexport :  list (reptype -> ident*funspec);
   mf_Gintern :  list (reptype -> ident*funspec);
   mf_G' :=  map (fun f => f mf_rep)
                  (mf_Gexport ++ mf_Gintern);
   mf_G := mf_Gimport ++ mf_G';
   mf_V : varspecs;
   mf_funs: list (ident * fundef);
   mf_funs_correct: forall (Espec: OracleKind),
     semax_func mf_V mf_G mf_funs mf_G'
}.Definition builtins:  list (ident * globdef fundef type) :=
  ((___builtin_fabs,
   Gfun(External (EF_builtin ___builtin_fabs
                   (mksignature (AST.Tfloat :: nil) (Some AST.Tfloat)))
     (Tcons tdouble Tnil) tdouble)) ::
 (___builtin_memcpy_aligned,
   Gfun(External (EF_builtin ___builtin_memcpy_aligned
                   (mksignature
                     (AST.Tint :: AST.Tint :: AST.Tint :: AST.Tint :: nil)
                     None))
     (Tcons (tptr tvoid)
       (Tcons (tptr tvoid) (Tcons tuint (Tcons tuint Tnil)))) tvoid)) ::
 (___builtin_annot_intval,
   Gfun(External (EF_builtin ___builtin_annot_intval
                   (mksignature (AST.Tint :: AST.Tint :: nil)
                     (Some AST.Tint)))
     (Tcons (tptr tschar) (Tcons tint Tnil)) tint)) :: nil).Definition Gbuiltins := do_builtins builtins.

Lemma builtins_correct: forall (Espec: OracleKind) V, semax_func V Gbuiltins (prog_funct' builtins) Gbuiltins.