Abstract
Many separation logics support fractional
permissions to distinguish between read and write access to
a heap location, for instance, to allow concurrent reads while
enforcing exclusive writes. The concept has been generalized to
fractional assertions. (where is a separation logic
assertion and a fraction between and ) represents a
fraction of . holds in a state iff there exists
a state in which holds and is obtained from
by multiplying all permission amounts held by . While
can always be split into , recombining into is not always sound. We say that is
combinable iff the entailment holds for any two positive fractions and such that . Combinable assertions are particularly useful to reason
about concurrent programs, for instance, to combine the postconditions
of parallel branches when they terminate. Unfortunately, the magic
wand assertion , commonly used to specify properties of
partial data structures, is typically not
combinable. In this entry, we formalize a novel, restricted
definition of the magic wand, described in a paper at CAV
22, which we call the combinable wand.
We prove some key properties of the combinable wand; in particular, a
combinable wand is combinable if its right-hand side is combinable.