Global Instance rel_kvd_subrel_params: Params (@rel_kvd) 3.Notation "|= R" := (rel_kvd R) (at level 65) : rel_scope.(** ** Pulling along a Kripke frame morphism *)

Definition klr_pullw {W1 W2 A B} (f: W1 -> W2) (R: klr W2 A B): klr W1 A B :=
  fun w => R (f w).Notation "R @@ [ f ]" := (klr_pullw f R)
  (at level 30, right associativity) : klr_scope.Global Instance klr_pullw_subrel_params:
  Params (@klr_pullw) 5.

(* Specifications: *)
Lemma klr_pullw_rintro {W1 W2 A B} (f: W1 -> W2) R w (x:A) (y:B): RIntro (R (f w) x y) (klr_pullw f R w) x y.
Lemma klr_pullw_relim {W1 W2 A B} (f: W1 -> W2) R w (x:A) (y:B) P Q: RElim (R (f w)) x y P Q -> RElim (klr_pullw f R w) x y P Q.