diff --git a/theories/heap_lang/metatheory.v b/theories/heap_lang/metatheory.v
index a2874c21cc3f5549b29bef9222bd54b83c7af148..20bccf498a545e11aa7e15dcd8a60986ca7611f0 100644
--- a/theories/heap_lang/metatheory.v
+++ b/theories/heap_lang/metatheory.v
@@ -187,6 +187,15 @@ Lemma subst_map_binder_insert b v vs e :
   subst_map (binder_insert b v vs) e =
   subst' b v (subst_map (binder_delete b vs) e).
 Proof. destruct b; rewrite ?subst_map_insert //. Qed.
+Lemma subst_map_binder_insert_2 b1 v1 b2 v2 vs e :
+  subst_map (binder_insert b1 v1 (binder_insert b2 v2 vs)) e =
+  subst' b2 v2 (subst' b1 v1 (subst_map (binder_delete b2 (binder_delete b1 vs)) e)).
+Proof.
+  destruct b1 as [|s1], b2 as [|s2]=> /=; auto using subst_map_insert.
+  rewrite subst_map_insert. destruct (decide (s1 = s2)) as [->|].
+  - by rewrite delete_idemp subst_subst delete_insert_delete.
+  - by rewrite delete_insert_ne // subst_map_insert subst_subst_ne.
+Qed.
 
 (* subst_map on closed expressions *)
 Lemma subst_map_is_closed X e vs :