(** If we want to use the Field tactic , the multiplicative inverse
should be total. We make our [Qinv_lazy] a total function by
outputting a dummy variable (Zero) whenever the denominator is
zero. Note that we can not do this in the case of real numbers (being
Zero is undecidable) but for rational numbers there is no problem *)
Definition total_Qinv_lazy (x : Q) :=
  match Q_zerop x with
  | left _ => Zero
  | right h => Qinv_lazy x h
  end.

(* Specifications: *)
Lemma Qinv_lazy_defT : forall (n : Q) (Hn : n <> Zero), Qmult_lazy (Qinv_lazy n Hn) n = Qone.
Lemma total_Qinv_lazy_defT : forall n : Q, n <> Zero -> Qmult_lazy (total_Qinv_lazy n) n = Qone.