Definition Qpositive_mult (w w' : Qpositive) :=
  match Qpositive_i w with
  | (p, q) =>
      match Qpositive_i w' with
      | (p', q') => Qpositive_c (p * p') (q * q') (p * p' + q * q')
      end
  end.

(* Specifications: *)
Theorem Qpositive_mult_One : forall w : Qpositive, Qpositive_mult One w = w.
Theorem Qpositive_mult_sym : forall w w' : Qpositive, Qpositive_mult w w' = Qpositive_mult w' w.
Theorem Qpositive_mult_assoc : forall w w' w'' : Qpositive, Qpositive_mult (Qpositive_mult w w') w'' = Qpositive_mult w (Qpositive_mult w' w'').
Theorem Qpositive_mult_distr : forall w w' w'' : Qpositive, Qpositive_mult (Qpositive_plus w w') w'' = Qpositive_plus (Qpositive_mult w w'') (Qpositive_mult w' w'').
Theorem Qpositive_mult_inv : forall w : Qpositive, Qpositive_mult w (Qpositive_inv w) = One.
Theorem Qpositive_plus_diff : forall w w' : Qpositive, w <> Qpositive_plus w w'.