Ltac slurp :=
apply imp_lem0;
match goal with |-  app_pred (_ --> _)  ?st =>
repeat match goal with
| H: app_pred ?P st |- app_pred (?b --> ?c) st =>
(apply (@conjoin_hyp0 _ _ P c st H) ||
(apply (@conjoin_hyp1 _ _ P b c st H)));
clear H
end;
try (revert st; apply derives_e)
end.

(* Specifications: *)
Lemma test_slurp {A} `{agA : ageable A} :  forall  (P Q R S : pred A) w ,
(P && (Q && R) --> S) w -> P w -> Q w -> R w -> S w.
Lemma later_andp {A} `{H : ageable A}:
forall P Q, |> (P && Q) = |>P && |>Q.
Lemma True_andp_eq {A}`{ageable A}:
forall (P: Prop) (Q: pred A), P -> (!!P && Q)%pred = Q.