Definition int_op e :=
match e with
| Load v | Store v => tc_val tint v
| CAS r c w => tc_val tint r /\ tc_val tint c /\ tc_val tint w
end.
Definition make_int v := match v with Vint i => Int.signed i | _ => 0 end.

(* Specifications: *)
Lemma make_int_spec : forall v, tc_val tint v -> vint (make_int v) = v.
Lemma make_int_repable : forall v, repable_signed (make_int v).
Lemma int_op_value : forall e, int_op e -> tc_val tint (value_of e).
Corollary int_op_value_of_hist : forall h, Forall int_op (map snd h) -> tc_val tint (value_of_hist h).
Lemma apply_int_ops : forall v h i (Hv : apply_hist (Vint i) h = Some v)
(Hints : Forall int_op h), tc_val tint v.