Hint Extern 2 (PreOrder (_ * _)) =>
eapply prod_rel_preorder : typeclass_instances.
(** *** Option types *)
Inductive option_rel {A1 A2} (RA: rel A1 A2): rel (option A1) (option A2) :=
| Some_rel_def: (RA ++> option_rel RA)%rel (@Some A1) (@Some A2)
| None_rel_def: option_rel RA (@None A1) (@None A2).
Global Instance Some_rel:
Monotonic (@Some) (forallr R @ A1 A2 : rel, R ++> option_rel R).
Global Instance None_rel:
Monotonic (@None) (forallr R, option_rel R).
Global Instance option_subrel {A1 A2}:
Monotonic (@option_rel A1 A2) (subrel ++> subrel).
Global Instance option_subrel_params:
Params (@option_rel) 3.

(* Specifications: *)
Lemma option_rel_refl `(HR: Reflexive):
Reflexive (option_rel R).