Definition Qeval_pop2 (o : Op2) : Q -> Q -> Prop :=
match o with
| OpEq =>  Qeq
| OpNEq => fun x y  => ~ x == y
| OpLe => Qle
| OpGe => fun x y => Qle y x
| OpLt => Qlt
| OpGt => fun x y => Qlt y x
end.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.

Lemma Qlt_bool_iff : forall q1 q2, Qlt_bool q1 q2 = true <-> q1 < q2.