Ltac pull_left A := repeat (rewrite <- (pull_right A) || rewrite <- (pull_right0 A)).
Ltac pull_right A := repeat (rewrite (pull_right A) || rewrite (pull_right0 A)).

Lemma imp_exp_right {B A : Type} `{saA: ageable A}:
forall (x: B) (p: pred A) (q: B -> pred A),
p |-- q x ->
p |-- exp q.