Definition Qlt_bool (x y : Q) :=
(Qnum x * QDen y <? Qnum y * QDen x)%Z.
Definition Qeval_bop2 (o : Op2) : Q -> Q -> bool :=
match o with
| OpEq  => Qeq_bool
| OpNEq => fun x y => negb (Qeq_bool x y)
| OpLe  => Qle_bool
| OpGe  => fun x y => Qle_bool y x
| OpLt  => Qlt_bool
| OpGt  => fun x y => Qlt_bool y x
end.

(* Specifications: *)
Lemma Qlt_bool_iff : forall q1 q2,
Qlt_bool q1 q2 = true <-> q1 < q2.
Lemma pop2_bop2 :
forall (op : Op2) (q1 q2 : Q), is_true (Qeval_bop2 op q1 q2) <-> Qeval_pop2 op q1 q2.