Abstract :
Separation logic involves two dual forms of modularity: local reasoning makes part of the store invisible within a static scope, whereas hiding local state makes part of the store invisible outside a static scope. In the recent literature, both idioms are explained in terms of a higher-order frame rule. I point out that this approach to hiding local state imposes continuation-passing style, which is impractical. Instead, I introduce a higher-order anti-frame rule, which permits hiding local state in direct style. I formalize this rule in the setting of a type system, equipped with linear capabilities, for an ML-like programming language, and prove type soundness via a syntactic argument. Several applications illustrate the expressive power of the new rule.
Keywords :
formal logic; maximum likelihood estimation; ML-like programming language; continuation-passing style; higher-order anti-frame rule; local reasoning; local state hiding; separation logic; syntactic argument; Computer languages; Computer science; Concrete; Knowledge management; Logic; Memory management; Pollution; Runtime; Shape; Proofs of programs; dynamic memory allocation; hidden local state; higher-order frame rule; separation logic;