Quantitative Separation Logic
We present quantitative separation logic (QSL). In contrast to classical separation logic, QSL employs quantities which evaluate to real numbers instead of predicates which evaluate to boolean values. The connectives of classical separation logic, separating conjunction and separating implication, are both lifted from predicates to quantities. This extension is conservative: Both connectives are backward compatible to their classical analogs and obey the same laws, e.g. modus ponens, adjointness of separating conjunction and implication, etc. Furthermore, we develop a weakest precondition calculus for quantitative reasoning about probabilistic pointer programs in QSL. This calculus is a conservative extension of both Reynolds' weakest preconditions for heap manipulating programs and McIver & Morgan's weakest preexpectations for probabilistic programs. In particular, our calculus preserves O'Hearn's frame rule which enables local reasoning - a key principle of separation logic. We demonstrate that our calculus enables reasoning about quantitaties, such as the probability of terminating with an empty heap or the expected length of a randomly constructed list.
READ FULL TEXT