Ltac prop_right_cautious :=
try solve [simple apply prop_right; auto].
(**********************************************************)
(* testing Parameter f: nat -> Prop. Parameter g h : mpred.  Goal ( !! f 1 && ((h && !! f 2) && h ) && (!! f 3 && (g && (!!f 4 && !! f 5) && !! f 6)) |-- FF).  *)
(*****************************************************************)
Ltac subst_any :=
repeat match goal with
| H: ?x = ?y |- _ => first [ subst x | subst y ]
end.

Lemma wand_sepcon:
forall {A} {NA: NatDed A}{SA: SepLog A} P Q,
(P -* Q * P) * P = Q * P.