(** ** 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_params:
  Params (@lsat) 3.Definition rsat {A B} (P: B -> Prop): rel A B :=
  fun x y => P y.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.Inductive psat {A} (I: A -> Prop) (x: A): A -> Prop :=
  psat_intro: I x -> psat I x x.Global Instance psat_subrel_params:
  Params (@psat) 3.

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