Notation " 0 " := (Q2Qc 0) : Qc_scope.Notation " 1 " := (Q2Qc 1) : Qc_scope.Definition Qcle (x y : Qc) := (x <= y)%Q.Definition Qclt (x y : Qc) := (x < y)%Q.Notation Qcgt := (fun x y : Qc => Qlt y x).Notation Qcge := (fun x y : Qc => Qle y x).Infix "<" := Qclt : Qc_scope.Infix "<=" := Qcle : Qc_scope.Infix ">" := Qcgt : Qc_scope.Infix ">=" := Qcge : Qc_scope.Notation "x <= y <= z" := (x<=y/\y<=z) : Qc_scope.Notation "x < y < z" := (x<y/\y<z) : Qc_scope.Definition Qccompare (p q : Qc) := (Qcompare p q).Notation "p ?= q" := (Qccompare p q) : Qc_scope.

Lemma Qceq_alt : forall p q, (p = q) <-> (p ?= q) = Eq.