Remark small_shift_amount_1:
forall i,
Int64.ltu i Int64.iwordsize = true ->
Int.ltu (Int64.loword i) Int64.iwordsize' = true
/\ Int64.unsigned i = Int.unsigned (Int64.loword i).
Remark small_shift_amount_2:
forall i,
Int64.ltu i (Int64.repr 32) = true ->
Int.ltu (Int64.loword i) Int.iwordsize = true.

(* Specifications: *)
Lemma small_shift_amount_3:
forall i,
Int.ltu i Int64.iwordsize' = true ->
Int64.unsigned (Int64.repr (Int.unsigned i)) = Int.unsigned i.
Lemma make_shl_correct: binary_constructor_correct make_shl sem_shl.
Lemma make_shr_correct: binary_constructor_correct make_shr sem_shr.
Lemma make_cmp_correct:
forall cmp a tya b tyb c va vb v e le m,
sem_cmp cmp va tya vb tyb m = Some v ->
make_cmp cmp a tya b tyb = OK c ->
eval_expr ge e le m a va ->
eval_expr ge e le m b vb ->
eval_expr ge e le m c v.
Lemma transl_unop_correct:
forall op a tya c va v e le m,
transl_unop op a tya = OK c ->
sem_unary_operation op va tya = Some v ->
eval_expr ge e le m a va ->
eval_expr ge e le m c v.
Lemma transl_binop_correct:
forall op a tya b tyb c va vb v e le m,
transl_binop op a tya b tyb = OK c ->
sem_binary_operation op va tya vb tyb m = Some v ->
eval_expr ge e le m a va ->
eval_expr ge e le m b vb ->
eval_expr ge e le m c v.
Lemma make_load_correct:
forall addr ty code b ofs v e le m,
make_load addr ty = OK code ->
eval_expr ge e le m addr (Vptr b ofs) ->
deref_loc ty m b ofs v ->
eval_expr ge e le m code v.