Iron

Precise management of resources and the obligations they impose, such as the need to dispose of memory, close
locks, and release file handles, is hard—especially in the presence of concurrency, when some resources are
shared, and different threads operate on them concurrently. We present Iron, a novel higher-order concurrent
separation logic that allows for precise reasoning about resources that are transferable among dynamically
allocated threads. In particular, Iron can be used to show the correctness of challenging examples, where the
reclamation of memory is delegated to a forked-off thread. We show soundness of Iron by means of a model of
Iron, defined on top of the Iris base logic, and we use this model to prove that memory resources are accounted
for precisely and not leaked. We have formalized all of the developments in the Coq proof assistant.