(** Behaviour when there is no under or overflow *)

(* Specifications: *)
Lemma to_Z_add (x y : int) :
to_Z min_int <= to_Z x + to_Z y <= to_Z max_int ->
to_Z (x + y) = to_Z x + to_Z y.
Lemma to_Z_sub (x y : int) :
to_Z min_int <= to_Z x - to_Z y <= to_Z max_int ->
to_Z (x - y) = to_Z x - to_Z y.
Lemma to_Z_mul (x y : int) :
to_Z min_int <= to_Z x * to_Z y <= to_Z max_int ->
to_Z (x * y) = to_Z x * to_Z y.
Lemma to_Z_succ (x : int) :
x <> max_int -> to_Z (succ x) = to_Z x + 1.
Lemma to_Z_pred (x : int) :
x <> min_int -> to_Z (pred x) = to_Z x - 1.
Lemma to_Z_opp (x : int) :
x <> min_int -> to_Z (- x) = - to_Z x.