Definition projP1 (H : sig P) := let (x, h) := H in x.Definition projP2 (H : sig P) :=
   let (x, h) as H return (P (projP1 H)) := H in h.

Lemma mediant_3 : forall a b m n m' n' : Z, (0 <= a * m + b * n)%Z -> (0 <= a * m' + b * n')%Z -> (0 <= a * (m + m') + b * (n + n'))%Z.