Tactic Notation "assert_LOCAL" constr(A) :=
apply (assert_LOCAL A).
Tactic Notation "assert_LOCAL" constr(A) "by" tactic1(t) :=
apply (assert_LOCAL A); [ now t | ].

(* Specifications: *)
Lemma drop_LOCAL'':
forall (n: nat)  P Q R Post,
PROPx P (LOCALx (delete_nth n Q) (SEPx R)) |-- Post ->
PROPx P (LOCALx Q (SEPx R)) |-- Post.
Lemma drop_LOCAL':
forall (n: nat)  Delta P Q R Post,
ENTAIL Delta, PROPx P (LOCALx (delete_nth n Q) (SEPx R)) |-- Post ->
ENTAIL Delta, PROPx P (LOCALx Q (SEPx R)) |-- Post.
Lemma drop_LOCAL:
forall (n: nat) Espec {cs: compspecs} Delta P Q R c Post,
@semax cs Espec Delta (PROPx P (LOCALx (delete_nth n Q) (SEPx R))) c Post ->
@semax cs Espec Delta (PROPx P (LOCALx Q (SEPx R))) c Post.