rattac.
Qed.

(* Specifications: *)
Theorem eqRat_symm : forall r1 r2,
eqRat r1 r2 ->
eqRat r2 r1.
Theorem eqRat_trans : forall r1 r2 r3,
eqRat r1 r2 ->
eqRat r2 r3 ->
eqRat r1 r3.
Lemma mult_le_compat_r_iff_h : forall n2 n3 n1,
n1 > O ->
(n2 * n1 <= n3 * n1)%nat ->
(n2 <= n3)%nat.
Theorem leRat_impl_eqRat : forall r1 r2,
leRat r1 r2 ->
leRat r2 r1 ->
eqRat r1 r2.
Theorem rat1_ne_rat0 : ~ (eqRat 1 0).
intuition.
Theorem ratAdd_0_r : forall r,
r == r + 0.
Theorem ratAdd_assoc : forall r1 r2 r3,
r1 + r2 + r3 == r1 + (r2 + r3).
Lemma ratMult_0_l : forall r,
0 * r == 0.
Lemma ratMult_1_l : forall r,
1 * r == r.
Lemma leRat_mult : forall n1 n2 d1 d2 (pf1 : d1 > 0) (pf2 : d2 > 0),
RatIntro n1 (exist (fun d => d > 0) _ pf1) <= RatIntro n2 (exist (fun d => d > 0) _ pf2) ->
(n1 * d2 <= n2 * d1)%nat.
Lemma nat_minus_eq : forall (n1 n2 : nat),
(n1 <= n2)%nat ->
n2 - n1 = O ->
n1 = n2.
Lemma maxRat_eqRat_compat : forall r1 r2 r3 r4,
r1 == r3 ->
r2 == r4 ->
maxRat r1 r2 == maxRat r3 r4.
Lemma ratMult_num_den : forall n1 n2 d1 d2,
(RatIntro (n1 * n2)%nat (posnatMult d1 d2)) == (RatIntro n1 d1) * (RatIntro n2 d2).