Definition add_case_pptrofs t si :=
if Archi.ptr64 then Cop.add_case_pl t else Cop.add_case_pi t si.

(* Specifications: *)
Lemma array_op_facts_ptrofs: forall ei rho t_root e efs gfs tts t n a t0 p,
legal_nested_efield_rec t_root gfs tts = true ->
type_almost_match e t_root (LR_of_type t_root) = true ->
is_ptrofs_type (typeof ei) = true ->
nested_field_type t_root gfs = Tarray t n a ->
field_compatible t_root gfs p ->
efield_denote efs gfs rho ->
(exists si, Cop.classify_add (typeof (nested_efield e efs tts)) (typeof ei) = add_case_pptrofs t si) /\
isBinOpResultType Cop.Oadd (nested_efield e efs tts) ei (tptr t0) = tc_isptr (nested_efield e efs tts).
Lemma array_op_facts: forall ei rho t_root e efs gfs tts t n a t0 p,
legal_nested_efield_rec t_root gfs tts = true ->
type_almost_match e t_root (LR_of_type t_root) = true ->
is_int_type (typeof ei) = true ->
nested_field_type t_root gfs = Tarray t n a ->
field_compatible t_root gfs p ->
efield_denote efs gfs rho ->
(exists si, Cop.classify_add (typeof (nested_efield e efs tts)) (typeof ei) = Cop.add_case_pi t si) /\
isBinOpResultType Cop.Oadd (nested_efield e efs tts) ei (tptr t0) = tc_isptr (nested_efield e efs tts).
Lemma Ptrofs_repr_Int_signed_special:
Archi.ptr64=false -> forall i, Ptrofs.repr (Int.signed (Int.repr i)) = Ptrofs.repr i.
Lemma Ptrofs_repr_Int_unsigned_special:
Archi.ptr64=false -> forall i, Ptrofs.repr (Int.unsigned (Int.repr i)) = Ptrofs.repr i.
Lemma Ptrofs_repr_Int64_unsigned_special:
Archi.ptr64=true -> forall i, Ptrofs.repr (Int64.unsigned (Int64.repr i)) = Ptrofs.repr i.