Ltac entailer :=
try match goal with POSTCONDITION := @abbreviate ret_assert _ |- _ =>
clear POSTCONDITION
end;
try match goal with MORE_COMMANDS := @abbreviate statement _ |- _ =>
clear MORE_COMMANDS
end;
match goal with
| |- ?P |-- _ =>
match type of P with
| ?T => unify T (environ->mpred); go_lower
| _ => clear_Delta; pull_out_props
end
| |- _ => fail "The entailer tactic works only on entailments   _ |-- _ "
end;
saturate_local;
entailer';
rewrite <- ?sepcon_assoc.

Lemma my_auto_lem:
forall (P Q: Prop), (P -> Q) -> (P -> Q).