diff --git a/theories/heap_lang/lang.v b/theories/heap_lang/lang.v
index ee332ffbb4cf517f7bf3da38193adf0c41442cf8..76e077e5552fb64eeb9f6c801287bb667a5fbe59 100644
--- a/theories/heap_lang/lang.v
+++ b/theories/heap_lang/lang.v
@@ -15,6 +15,13 @@ Noteworthy design choices:
   [b] are evaluated.  With left-to-right evaluation, that triple is basically
   useless unless the user let-expands [b].
 
+- Even after deallocating a location, the heap remembers that these locations
+  were previously allocated and makes sure they do not get reused. This is
+  necessary to ensure soundness of the [meta] feature provided by [gen_heap].
+  Also, unlike in langauges like C, allocated and deallocated "blocks" do not
+  have to match up: you can allocate a large array of locations and then
+  deallocate a hole out of it in the middle.
+
 - For prophecy variables, we annotate the reduction steps with an "observation"
   and tweak adequacy such that WP knows all future observations. There is
   another possible choice: Use non-deterministic choice when creating a prophecy