(* Min and max *)
Definition CReal_min (x y : CReal) : CReal
:= (x + y - CReal_abs (y - x)) * inject_Q (1#2).
Definition CReal_max (x y : CReal) : CReal
:= (x + y + CReal_abs (y - x)) * inject_Q (1#2).
Add Parametric Morphism : CReal_min
with signature CRealEq ==> CRealEq ==> CRealEq
as CReal_min_morph.
Add Parametric Morphism : CReal_max
with signature CRealEq ==> CRealEq ==> CRealEq
as CReal_max_morph.

Lemma CReal_min_contract : forall x y a : CReal,
CReal_abs (CReal_min x a - CReal_min y a)
<= CReal_abs (x - y).