Require Import VST.floyd.proofauto.
Require Import VST.progs.message.
Instance CompSpecs : compspecs. make_compspecs prog. Defined.
Definition Vprog : varspecs. mk_varspecs prog. Defined.

(* This program, and its verification, are described in Chapter 29
   of _Program Logics for Certified Compilers_, by Appel et al., 2014 *)

Local Open Scope Z.
Local Open Scope logic.

(*   mf_assert msgfmt sh buf len data  := the [data] is formatted into a message
         at most [len] bytes,  stored starting at address [buf] with share [sh] *)

Record message_format (t: type) : Type :=
mf_build {
   mf_size: Z;
   mf_data_assert: forall (data: reptype t), Prop;
   mf_assert: forall (sh: share) (buf: val) (len: Z) (data: reptype t), mpred;
   mf_size_range:  0 <= mf_size <= Int.max_signed;
   mf_bufprop: forall sh buf len data,
           mf_assert sh buf len data |--
                 !!(0 <= len <= mf_size) && memory_block sh len buf;
   mf_restbuf := fun (sh: share) (buf: val) (len: Z) =>
          memory_block sh (mf_size-len) (offset_val len buf)
}.

Arguments mf_build {t}.
Arguments mf_size {t}.
Arguments mf_data_assert {t}.
Arguments mf_assert {t}.
Arguments mf_bufprop {t}.
Arguments mf_size_range {t}.
Arguments mf_restbuf {t}.

Definition t_struct_intpair := Tstruct _intpair noattr.
Definition t_struct_message := Tstruct _message noattr.

Program Definition intpair_message: message_format t_struct_intpair :=
  mf_build 8 (fun data => is_int I32 Signed (fst data) /\ is_int I32 Signed (snd data))
             (fun sh buf len data => !!(len=8/\ is_int I32 Signed (fst data) /\ is_int I32 Signed (snd data))
                           && data_at sh (tarray tint 2) [fst data; snd data] buf)
      _ _.
Next Obligation.
(* Goal: and (Z.le Z0 (Zpos (xO (xO (xO xH))))) (Z.le (Zpos (xO (xO (xO xH)))) Int.max_signed) *)
compute; split; congruence.
Qed.
Next Obligation.
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO (xO xH))))) (and True True))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))) buf)) (@andp mpred Nveric (@prop mpred Nveric (isptr (offset_val (Zpos (xO (xO (xO xH)))) buf))) (@emp mpred Nveric Sveric))))) *)
  entailer!.
(* Goal: @derives mpred Nveric (@data_at CompSpecs sh (tarray tint (Zpos (xO xH))) (@cons val (@fst val val data) (@cons val (@snd val val data) (@nil val))) buf) (memory_block sh (Zpos (xO (xO (xO xH)))) buf) *)
  change 8 with (sizeof (tarray tint 2)).
(* Goal: @derives mpred Nveric (@data_at CompSpecs sh (tarray tint (Zpos (xO xH))) (@cons val (@fst val val data) (@cons val (@snd val val data) (@nil val))) buf) (memory_block sh (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) *)
  apply data_at_memory_block.
Qed.

Definition serialize_spec {t: type} (format: message_format t) :=
  WITH data: reptype t, p: val, buf: val, sh: share, sh': share
  PRE [ _p OF (tptr tvoid), _buf OF (tptr tuchar) ]
          PROP (readable_share sh; writable_share sh';
                mf_data_assert format data;
                align_compatible tint buf)
          LOCAL (temp _p p; temp _buf buf)
          SEP (data_at sh t data p;
                 memory_block sh' (mf_size format) buf)
  POST [ tint ]
         EX len: Z,
          PROP() LOCAL (temp ret_temp (Vint (Int.repr len)))
          SEP( data_at sh t data p;
                 mf_assert format sh' buf len data;
                 mf_restbuf format sh' buf len).

Definition deserialize_spec {t: type} (format: message_format t) :=
  WITH data: reptype t, p: val, buf: val, sh: share, sh': share, len: Z
  PRE [ _p OF (tptr tvoid), _buf OF (tptr tuchar), _length OF tint ]
          PROP (readable_share sh'; writable_share sh;
                0 <= len <= mf_size format)
          LOCAL (temp _p p;
                 temp _buf buf;
                 temp _length (Vint (Int.repr len)))
          SEP (mf_assert format sh' buf len data;
                 data_at_ sh t p)
  POST [ tvoid ]
          PROP (mf_data_assert format data)  LOCAL ()
          SEP (mf_assert format sh' buf len data;
                 data_at sh t data p).

Definition intpair_serialize_spec :=
 DECLARE _intpair_serialize (serialize_spec intpair_message).

Definition intpair_deserialize_spec :=
 DECLARE _intpair_deserialize (deserialize_spec intpair_message).

Definition main_spec :=
 DECLARE _main
  WITH gv: globals
  PRE  [] main_pre prog nil gv
  POST [ tint ] main_post prog nil gv.

Definition message (sh: share) {t: type} (format: message_format t) (m: val) : mpred :=
  EX fg: val*val,
          func_ptr' (serialize_spec format) (fst fg) *
          func_ptr' (deserialize_spec format) (snd fg) *
       data_at sh t_struct_message (Vint (Int.repr (mf_size format)), (fst fg, snd fg)) m.

Definition Gprog : funspecs :=   ltac:(with_library prog [
    intpair_serialize_spec; intpair_deserialize_spec; main_spec]).

Lemma body_intpair_serialize: semax_body Vprog Gprog f_intpair_serialize intpair_serialize_spec.
Proof.
(* Goal: semax_body Vprog Gprog CompSpecs f_intpair_serialize intpair_serialize_spec *)
unfold intpair_serialize_spec.
(* Goal: semax_body Vprog Gprog CompSpecs f_intpair_serialize (@pair ident funspec _intpair_serialize (@serialize_spec t_struct_intpair intpair_message)) *)
unfold serialize_spec.
(* Goal: semax_body Vprog Gprog CompSpecs f_intpair_deserialize (@pair ident funspec _intpair_deserialize (NDmk_funspec (@pair (list (prod ident type)) type (@cons (prod ident type) (@pair ident type _p (tptr tvoid)) (@cons (prod ident type) (@pair ident type _buf (tptr tuchar)) (@cons (prod ident type) (@pair ident type _length tint) (@nil (prod ident type))))) tvoid) cc_default (prod (prod (prod (prod (prod (@reptype CompSpecs t_struct_intpair) val) val) share) share) Z) (fun x : prod (prod (prod (prod (prod (@reptype CompSpecs t_struct_intpair) val) val) share) share) Z => let (p0, len) := x in let (p1, sh') := p0 in let (p2, sh) := p1 in let (p3, buf) := p2 in let (data, p) := p3 in PROPx (@cons Prop (readable_share sh') (@cons Prop (writable_share sh) (@cons Prop (and (Z.le Z0 len) (Z.le len (@mf_size t_struct_intpair intpair_message))) (@nil Prop)))) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr len))) (@nil localdef)))) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (fun x : prod (prod (prod (prod (prod (@reptype CompSpecs t_struct_intpair) val) val) share) share) Z => let (p0, len) := x in let (p1, sh') := p0 in let (p2, sh) := p1 in let (p3, buf) := p2 in let (data, p) := p3 in PROPx (@cons Prop (@mf_data_assert t_struct_intpair intpair_message data) (@nil Prop)) (LOCALx (@nil localdef) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at CompSpecs sh t_struct_intpair data p) (@nil mpred)))))))) *)
start_function.
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair data p) (@cons mpred (memory_block sh' (@mf_size t_struct_intpair intpair_message) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
destruct H as [Dx Dy].
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val data) (@cons val (@snd val val data) (@nil val))) buf) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (Ssequence (Ssequence (Sset _x (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr Z0) tint) (tptr tint)) tint)) (Ssequence (Sset _y (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr (Zpos xH)) tint) (tptr tint)) tint)) (Ssequence (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint) (Etempvar _x tint)) (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _y tint) (Etempvar _y tint))))) MORE_COMMANDS) POSTCONDITION *)
destruct data as [[|x1 | | | | ] [|y1 | | | | ]]; try contradiction. clear Dx Dy.

(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@mf_size t_struct_intpair intpair_message) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
change (mf_size intpair_message) with (sizeof (tarray tint 2)).
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
assert_PROP (field_compatible (tarray tint 2) [] buf).
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO (xO xH))))) (and True True))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))) buf)) (@andp mpred Nveric (@prop mpred Nveric (isptr (offset_val (Zpos (xO (xO (xO xH)))) buf))) (@emp mpred Nveric Sveric))))) *)
  entailer!.
(* Goal: @field_compatible CompSpecs (tarray tint (Zpos (xO xH))) (@nil gfield) buf *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
  hnf in H; decompose[and] H; repeat split; auto.
  (* TODO: abstract the following proof. *)  
(* Goal: @align_compatible CompSpecs (tarray tint (Zpos (xO xH))) buf *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
  unfold align_compatible in H0 |- *.
(* Goal: match buf with | Vundef => True | Vint i => True | Vlong i => True | Vfloat f => True | Vsingle f => True | Vptr b i_ofs => align_compatible_rec (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH))) (Ptrofs.unsigned i_ofs) end *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
  destruct buf; auto.
(* Goal: align_compatible_rec (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH))) (Ptrofs.unsigned i) *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
  constructor.
(* Goal: forall (i0 : Z) (_ : and (Z.le Z0 i0) (Z.lt i0 (Zpos (xO xH)))), align_compatible_rec (@cenv_cs CompSpecs) tint (Z.add (Ptrofs.unsigned i) (Z.mul (@sizeof (@cenv_cs CompSpecs) tint) i0)) *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
  intros.
(* Goal: align_compatible_rec (@cenv_cs CompSpecs) tint (Z.add (Ptrofs.unsigned i) (Z.mul (@sizeof (@cenv_cs CompSpecs) tint) i0)) *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
  eapply align_compatible_rec_by_value_inv in H0; [| reflexivity].
(* Goal: align_compatible_rec (@cenv_cs CompSpecs) tint (Z.add (Ptrofs.unsigned i) (Z.mul (@sizeof (@cenv_cs CompSpecs) tint) i0)) *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
  econstructor; [reflexivity |].
(* Goal: Z.divide (align_chunk Mint32) (Z.add (Ptrofs.unsigned i) (Z.mul (@sizeof (@cenv_cs CompSpecs) tint) i0)) *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
  apply Z.divide_add_r; auto.
(* Goal: Z.divide (align_chunk Mint32) (Z.mul (@sizeof (@cenv_cs CompSpecs) tint) i0) *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
  exists i0; rewrite Z.mul_comm; auto.
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@nil localdef))) (SEPx (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@cons mpred (memory_block sh' (@sizeof (@cenv_cs CompSpecs) (tarray tint (Zpos (xO xH)))) buf) (@nil mpred)))))) (Ssequence (Sset _x (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint)) MORE_COMMANDS) POSTCONDITION *)
rewrite memory_block_data_at_; auto.
change (data_at_ sh' (tarray tint 2) buf) with
   (data_at sh' (tarray tint 2) [Vundef;Vundef] buf).
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* x = p->x; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* y = p->y; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (*  ((int * )buf)[0]=x; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (*  ((int * )buf)[1]=y; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* return 8; *)
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@exp mpred Nveric Z (fun a : Z => @andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr a)))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@mf_assert t_struct_intpair intpair_message sh' buf a (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@mf_restbuf t_struct_intpair intpair_message sh' buf a))))) *)
Exists 8.
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@mf_assert t_struct_intpair intpair_message sh' buf (Zpos (xO (xO (xO xH)))) (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@mf_restbuf t_struct_intpair intpair_message sh' buf (Zpos (xO (xO (xO xH)))))))) *)
unfold mf_restbuf. simpl.
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO (xO xH))))) (and True True))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))) buf)) (memory_block sh' Z0 (offset_val (Zpos (xO (xO (xO xH)))) buf))))) *)
rewrite memory_block_zero.
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO (xO xH))))) (and True True))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))) buf)) (@andp mpred Nveric (@prop mpred Nveric (isptr (offset_val (Zpos (xO (xO (xO xH)))) buf))) (@emp mpred Nveric Sveric))))) *)
entailer!.
Qed.

Lemma body_intpair_deserialize: semax_body Vprog Gprog f_intpair_deserialize intpair_deserialize_spec.
Proof.
(* Goal: semax_body Vprog Gprog CompSpecs f_intpair_deserialize intpair_deserialize_spec *)
unfold intpair_deserialize_spec, deserialize_spec.
(* Goal: semax_body Vprog Gprog CompSpecs f_intpair_deserialize (@pair ident funspec _intpair_deserialize (NDmk_funspec (@pair (list (prod ident type)) type (@cons (prod ident type) (@pair ident type _p (tptr tvoid)) (@cons (prod ident type) (@pair ident type _buf (tptr tuchar)) (@cons (prod ident type) (@pair ident type _length tint) (@nil (prod ident type))))) tvoid) cc_default (prod (prod (prod (prod (prod (@reptype CompSpecs t_struct_intpair) val) val) share) share) Z) (fun x : prod (prod (prod (prod (prod (@reptype CompSpecs t_struct_intpair) val) val) share) share) Z => let (p0, len) := x in let (p1, sh') := p0 in let (p2, sh) := p1 in let (p3, buf) := p2 in let (data, p) := p3 in PROPx (@cons Prop (readable_share sh') (@cons Prop (writable_share sh) (@cons Prop (and (Z.le Z0 len) (Z.le len (@mf_size t_struct_intpair intpair_message))) (@nil Prop)))) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr len))) (@nil localdef)))) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (fun x : prod (prod (prod (prod (prod (@reptype CompSpecs t_struct_intpair) val) val) share) share) Z => let (p0, len) := x in let (p1, sh') := p0 in let (p2, sh) := p1 in let (p3, buf) := p2 in let (data, p) := p3 in PROPx (@cons Prop (@mf_data_assert t_struct_intpair intpair_message data) (@nil Prop)) (LOCALx (@nil localdef) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at CompSpecs sh t_struct_intpair data p) (@nil mpred)))))))) *)
start_function.
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr len))) (@nil localdef)))) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (Ssequence (Ssequence (Sset _x (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr Z0) tint) (tptr tint)) tint)) (Ssequence (Sset _y (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr (Zpos xH)) tint) (tptr tint)) tint)) (Ssequence (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint) (Etempvar _x tint)) (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _y tint) (Etempvar _y tint))))) MORE_COMMANDS) POSTCONDITION *)
simpl. Intros. subst len.
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val data) (@cons val (@snd val val data) (@nil val))) buf) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (Ssequence (Ssequence (Sset _x (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr Z0) tint) (tptr tint)) tint)) (Ssequence (Sset _y (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr (Zpos xH)) tint) (tptr tint)) tint)) (Ssequence (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint) (Etempvar _x tint)) (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _y tint) (Etempvar _y tint))))) MORE_COMMANDS) POSTCONDITION *)
destruct data as [[|x1 | | | | ] [|y1 | | | | ]]; try contradiction.
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (Ssequence (Ssequence (Sset _x (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr Z0) tint) (tptr tint)) tint)) (Ssequence (Sset _y (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr (Zpos xH)) tint) (tptr tint)) tint)) (Ssequence (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint) (Etempvar _x tint)) (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _y tint) (Etempvar _y tint))))) MORE_COMMANDS) POSTCONDITION *)
clear H H1 H2.
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* x = ((int * )buf)[0]; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* y = ((int * )buf)[1]; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* p->x = x; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* p->y = y; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* return; *)
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO (xO xH))))) (and True True))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))) buf)) (@andp mpred Nveric (@prop mpred Nveric (isptr (offset_val (Zpos (xO (xO (xO xH)))) buf))) (@emp mpred Nveric Sveric))))) *)
simpl; entailer!.
Qed.

Lemma body_main: semax_body Vprog Gprog f_main main_spec.
Proof.
name buf _buf.

(* Goal: semax_body Vprog Gprog CompSpecs f_intpair_deserialize (@pair ident funspec _intpair_deserialize (NDmk_funspec (@pair (list (prod ident type)) type (@cons (prod ident type) (@pair ident type _p (tptr tvoid)) (@cons (prod ident type) (@pair ident type _buf (tptr tuchar)) (@cons (prod ident type) (@pair ident type _length tint) (@nil (prod ident type))))) tvoid) cc_default (prod (prod (prod (prod (prod (@reptype CompSpecs t_struct_intpair) val) val) share) share) Z) (fun x : prod (prod (prod (prod (prod (@reptype CompSpecs t_struct_intpair) val) val) share) share) Z => let (p0, len) := x in let (p1, sh') := p0 in let (p2, sh) := p1 in let (p3, buf) := p2 in let (data, p) := p3 in PROPx (@cons Prop (readable_share sh') (@cons Prop (writable_share sh) (@cons Prop (and (Z.le Z0 len) (Z.le len (@mf_size t_struct_intpair intpair_message))) (@nil Prop)))) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr len))) (@nil localdef)))) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (fun x : prod (prod (prod (prod (prod (@reptype CompSpecs t_struct_intpair) val) val) share) share) Z => let (p0, len) := x in let (p1, sh') := p0 in let (p2, sh) := p1 in let (p3, buf) := p2 in let (data, p) := p3 in PROPx (@cons Prop (@mf_data_assert t_struct_intpair intpair_message data) (@nil Prop)) (LOCALx (@nil localdef) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at CompSpecs sh t_struct_intpair data p) (@nil mpred)))))))) *)
start_function.
set (ipm := gv _intpair_message).
fold cc_default noattr.
make_func_ptr _intpair_deserialize.
make_func_ptr _intpair_serialize.
set (des := gv _intpair_deserialize).
set (ser := gv _intpair_serialize).
gather_SEP 5 6 7.
replace_SEP 0 
    (data_at Ews t_struct_message
      (Vint (Int.repr (mf_size intpair_message)), (ser, des)) ipm). {
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO (xO xH))))) (and True True))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))) buf)) (@andp mpred Nveric (@prop mpred Nveric (isptr (offset_val (Zpos (xO (xO (xO xH)))) buf))) (@emp mpred Nveric Sveric))))) *)
 entailer!.
 unfold_data_at (data_at _ t_struct_message _ ipm).
 rewrite (field_at_data_at _ _ _ _ ipm).
rewrite data_at_tuint_tint.
(* rewrite <- (mapsto_field_at _ _ [StructField _bufsize] (Vint (Int.repr 8))) by auto with field_compatible. *)
 rewrite <- (mapsto_field_at _ _ [StructField _deserialize] des) by auto with field_compatible.
 rewrite <- (mapsto_field_at _ _ [StructField _serialize] ser) by auto with field_compatible.
 rewrite !field_compatible_field_address by auto with field_compatible.
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr len))) (@nil localdef)))) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (Ssequence (Ssequence (Sset _x (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr Z0) tint) (tptr tint)) tint)) (Ssequence (Sset _y (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr (Zpos xH)) tint) (tptr tint)) tint)) (Ssequence (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint) (Etempvar _x tint)) (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _y tint) (Etempvar _y tint))))) MORE_COMMANDS) POSTCONDITION *)
 simpl.
 normalize.
 cancel.
}
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* p.x = 1; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* p.y = 2; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* ser = intpair_message.serialize; *)

rewrite <- memory_block_data_at__tarray_tuchar_eq by computable.
change (memory_block Tsh 8 buf)
with (memory_block Tsh (mf_size intpair_message) buf).

assert_PROP (align_compatible tint buf).
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO (xO xH))))) (and True True))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))) buf)) (@andp mpred Nveric (@prop mpred Nveric (isptr (offset_val (Zpos (xO (xO (xO xH)))) buf))) (@emp mpred Nveric Sveric))))) *)
  entailer!.
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr len))) (@nil localdef)))) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (Ssequence (Ssequence (Sset _x (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr Z0) tint) (tptr tint)) tint)) (Ssequence (Sset _y (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr (Zpos xH)) tint) (tptr tint)) tint)) (Ssequence (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint) (Etempvar _x tint)) (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _y tint) (Etempvar _y tint))))) MORE_COMMANDS) POSTCONDITION *)
  destruct HPbuf; subst; simpl.
  econstructor; [reflexivity | apply Z.divide_0_r].
forward_call (* len = ser(&p, buf); *)
      ((Vint (Int.repr 1), Vint (Int.repr 2)), v_p, buf, Tsh, Tsh).
  split3; auto.
  repeat split; auto.
Intros rest.
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr len))) (@nil localdef)))) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (Ssequence (Ssequence (Sset _x (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr Z0) tint) (tptr tint)) tint)) (Ssequence (Sset _y (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr (Zpos xH)) tint) (tptr tint)) tint)) (Ssequence (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint) (Etempvar _x tint)) (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _y tint) (Etempvar _y tint))))) MORE_COMMANDS) POSTCONDITION *)
simpl.
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr len))) (@nil localdef)))) (SEPx (@cons mpred (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z len (Zpos (xO (xO (xO xH))))) (and (is_int I32 Signed (@fst val val data)) (is_int I32 Signed (@snd val val data))))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val data) (@cons val (@snd val val data) (@nil val))) buf)) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (Ssequence (Ssequence (Sset _x (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr Z0) tint) (tptr tint)) tint)) (Ssequence (Sset _y (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr (Zpos xH)) tint) (tptr tint)) tint)) (Ssequence (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint) (Etempvar _x tint)) (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _y tint) (Etempvar _y tint))))) MORE_COMMANDS) POSTCONDITION *)
Intros. subst rest.

(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* des = intpair_message.deserialize; *)
forward_call (* des(&q, buf, 8); *)
        ((Vint (Int.repr 1), Vint (Int.repr 2)), v_q, buf, Tsh, Tsh, 8).
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO (xO xH))))) (and True True))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))) buf)) (@andp mpred Nveric (@prop mpred Nveric (isptr (offset_val (Zpos (xO (xO (xO xH)))) buf))) (@emp mpred Nveric Sveric))))) *)
  simpl. fold t_struct_intpair. entailer!.
  split3; auto. simpl; computable.
(* after the call *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* x = q.x; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* y = q.y; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _y (@Znth val Vundef (Zpos xH) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _x (@Znth val Vundef Z0 (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))))) (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr (Zpos (xO (xO (xO xH))))))) (@nil localdef)))))) (SEPx (@cons mpred (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (@fst val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@cons val (@snd val val (@pair (let (t, _) := @eq_rect Type (@sigT Type (fun x : Type => x)) (fun A0 : Type => A0) (@type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type (@pair ident type _x tint)) (co_members (@get_co CompSpecs _intpair)))) (@sigT Type (fun x : Type => x)) (@f_equal (list Type) Type (fun e : list Type => match e with | nil => @sigT Type (fun x : Type => x) | cons T l => T end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))))) in t) (compact_prod (@map (@sigT Type (fun x : Type => x)) Type (fun tv : @sigT Type (fun x : Type => x) => let (t, _) := tv in t) (@type_induction.decay'' (prod ident type) (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@type_induction.ListTypeGen (prod ident type) (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (fun it : prod ident type => @type_induction.type_func_rec CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) (fun t : type => if type_is_by_value t then @existT Type (fun x : Type => x) val Vundef else @existT Type (fun x : Type => x) unit tt) (fun (_ : type) (n : Z) (_ : attr) (TV : @sigT Type (fun x : Type => x)) => @existT Type (fun x : Type => x) (list (@projT1 Type (fun x : Type => x) TV)) (@list_repeat (@projT1 Type (fun x : Type => x) TV) (Z.to_nat n) (@projT2 Type (fun x : Type => x) TV))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_prod_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_prod_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (fun (id : positive) (_ : attr) (TVs : @type_induction.FT_aux CompSpecs (fun _ : type => @sigT Type (fun x : Type => x)) id) => @existT Type (fun x : Type => x) (@compact_sum_sigT_type Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs)) (@compact_sum_sigT_value Type (fun x : Type => x) (@type_induction.decay (prod ident type) (@sigT Type (fun x : Type => x)) (co_members (@get_co CompSpecs id)) TVs))) (co_rank (Build_composite Struct (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) noattr (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO xH))) O (Zgeb0_ge0 (Zpos (xO (xO (xO xH)))) (@eq_refl bool (Z.geb (Zpos (xO (xO (xO xH)))) Z0))) (prove_alignof_two_p (Zpos (xO (xO xH))) (@eq_refl Z (Zpos (xO (xO xH))))) (prove_Zdivide (Zpos (xO (xO xH))) (Zpos (xO (xO (xO xH)))) (@eq_refl Z (Zpos (xO (xO (xO xH)))))))) (field_type (@fst ident type it) (co_members (@get_co CompSpecs _intpair)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) (@f_equal (list Type) (list Type) (fun e : list Type => match e with | nil => @map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))) | cons T l3 => l3 end) (@cons Type (@sigT Type (fun x : Type => x)) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type))))) (@eq_refl (list Type) (@map (prod ident type) Type (fun _ : prod ident type => @sigT Type (fun x : Type => x)) (@cons (prod ident type) (@pair ident type _x tint) (@cons (prod ident type) (@pair ident type _y tint) (@nil (prod ident type)))))))))) (Vint x1) (Vint y1))) (@nil val))) buf) (@cons mpred (@data_at CompSpecs sh t_struct_intpair (@pair val val (@Znth val Vundef Z0 (@cons val (Vint x1) (@cons val (Vint y1) (@nil val)))) (@Znth val Vundef (Zpos xH) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))))) p) (@nil mpred)))))) (Sreturn (@None expr)) POSTCONDITION *)
forward. (* return x+y; *)
(* Goal: semax CompSpecs Espec Delta (PROPx (@nil Prop) (LOCALx (@cons localdef (temp _p p) (@cons localdef (temp _buf buf) (@cons localdef (temp _length (Vint (Int.repr len))) (@nil localdef)))) (SEPx (@cons mpred (@mf_assert t_struct_intpair intpair_message sh' buf len data) (@cons mpred (@data_at_ CompSpecs sh t_struct_intpair p) (@nil mpred)))))) (Ssequence (Ssequence (Sset _x (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr Z0) tint) (tptr tint)) tint)) (Ssequence (Sset _y (Ederef (Ebinop Oadd (Ecast (Etempvar _buf (tptr tuchar)) (tptr tint)) (Econst_int (Int.repr (Zpos xH)) tint) (tptr tint)) tint)) (Ssequence (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _x tint) (Etempvar _x tint)) (Sassign (Efield (Ederef (Etempvar _p (tptr (Tstruct _intpair noattr))) (Tstruct _intpair noattr)) _y tint) (Etempvar _y tint))))) MORE_COMMANDS) POSTCONDITION *)
simpl.
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO (xO xH))))) (and True True))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))) buf)) (@andp mpred Nveric (@prop mpred Nveric (isptr (offset_val (Zpos (xO (xO (xO xH)))) buf))) (@emp mpred Nveric Sveric))))) *)
entailer!.
sep_apply (data_at_memory_block Tsh (tarray tint 2) [Vint (Int.repr 1); Vint (Int.repr 2)] buf).
simpl sizeof.
sep_apply (memory_block_data_at__tarray_tuchar Tsh buf 8).
   computable.
(* Goal: @derives mpred Nveric (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@upd_Znth val (Zpos xH) (@upd_Znth val Z0 (@cons val Vundef (@cons val Vundef (@nil val))) (Vint x1)) (Vint y1)) buf)) (@andp mpred Nveric (@prop mpred Nveric (@eq val (Vint (Int.repr (Zpos (xO (xO (xO xH)))))) (Vint (Int.repr (Zpos (xO (xO (xO xH)))))))) (@sepcon mpred Nveric Sveric (@data_at CompSpecs sh t_struct_intpair (@pair val val (Vint x1) (Vint y1)) p) (@sepcon mpred Nveric Sveric (@andp mpred Nveric (@prop mpred Nveric (and (@eq Z (Zpos (xO (xO (xO xH)))) (Zpos (xO (xO (xO xH))))) (and True True))) (@data_at CompSpecs sh' (tarray tint (Zpos (xO xH))) (@cons val (Vint x1) (@cons val (Vint y1) (@nil val))) buf)) (@andp mpred Nveric (@prop mpred Nveric (isptr (offset_val (Zpos (xO (xO (xO xH)))) buf))) (@emp mpred Nveric Sveric))))) *)
entailer!.
Qed.
