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 fraction_lt_trans : forall a b c d e f : Z, (0 < b)%Z -> (0 < d)%Z -> (0 < f)%Z -> (a * d < c * b)%Z -> (c * f < e * d)%Z -> (a * f < e * b)%Z.