(** Minimum / maximum *)

Definition min (i1 i2 : int) :=
  if (i1 <=? i2)%uint63 then i1 else i2.Definition max (i1 i2 : int) :=
  if (i1 <=? i2)%uint63 then i2 else i1.

(* Specifications: *)
Lemma min_spec (x y : int) : φ (min x y) = Z.min (φ x) (φ y).
Lemma max_spec (x y : int) : φ (max x y) = Z.max (φ x) (φ y).
Lemma min_add_min_n_same (m i1 i2 : int) : to_Z i1 + to_Z i2 < wB -> Uint63.min m (Uint63.min m i1 + i2) = Uint63.min m (i1 + i2).
Lemma min_add_n_min_same (m i1 i2 : int) : to_Z i1 + to_Z i2 < wB -> Uint63.min m (i1 + Uint63.min m i2) = Uint63.min m (i1 + i2).