Hint Extern 0 (Coreflexive (req _)) =>
eapply req_corefl : typeclass_instances.
(** ** Checking predicates on the left and right elements *)
Definition lsat {A B} (P: A -> Prop): rel A B :=
fun x y => P x.
Global Instance lsat_subrel A B:
Monotonic (@lsat A B) ((- ==> impl) ++> subrel).
Global Instance lsat_subrel_params:
Params (@lsat) 3.
Definition rsat {A B} (P: B -> Prop): rel A B :=
fun x y => P y.
Global Instance rsat_subrel A B:
Monotonic (@rsat A B) ((- ==> impl) ++> subrel).
Global Instance rsat_subrel_params:
Params (@rsat) 3.
Inductive psat {A} (I: A -> Prop) (x: A): A -> Prop :=
psat_intro: I x -> psat I x x.
Global Instance psat_subrel A:
Monotonic (@psat A) ((- ==> impl) ++> subrel).
Global Instance psat_subrel_params:
Params (@psat) 3.

(* Specifications: *)
Lemma psat_corefl {A} (I: A -> Prop):
Coreflexive (psat I).