2 research outputs found
Separation Logic with Linearly Compositional Inductive Predicates and Set Data Constraints
We identify difference-bound set constraints (DBS), an analogy of
difference-bound arithmetic constraints for sets. DBS can express not only set
constraints but also arithmetic constraints over set elements. We integrate DBS
into separation logic with linearly compositional inductive predicates,
obtaining a logic thereof where set data constraints of linear data structures
can be specified. We show that the satisfiability of this logic is decidable. A
crucial step of the decision procedure is to compute the transitive closure of
DBS-definable set relations, to capture which we propose an extension of
quantified set constraints with Presburger Arithmetic (RQSPA). The
satisfiability of RQSPA is then shown to be decidable by harnessing advanced
automata-theoretic techniques.Comment: 31 pages, 2 figures, SOFSEM 2019, to appea
Go with the Flow: Compositional Abstractions for Concurrent Data Structures (Extended Version)
Concurrent separation logics have helped to significantly simplify
correctness proofs for concurrent data structures. However, a recurring problem
in such proofs is that data structure abstractions that work well in the
sequential setting are much harder to reason about in a concurrent setting due
to complex sharing and overlays. To solve this problem, we propose a novel
approach to abstracting regions in the heap by encoding the data structure
invariant into a local condition on each individual node. This condition may
depend on a quantity associated with the node that is computed as a fixpoint
over the entire heap graph. We refer to this quantity as a flow. Flows can
encode both structural properties of the heap (e.g. the reachable nodes from
the root form a tree) as well as data invariants (e.g. sortedness). We then
introduce the notion of a flow interface, which expresses the relies and
guarantees that a heap region imposes on its context to maintain the local flow
invariant with respect to the global heap. Our main technical result is that
this notion leads to a new semantic model of separation logic. In this model,
flow interfaces provide a general abstraction mechanism for describing complex
data structures. This abstraction mechanism admits proof rules that generalize
over a wide variety of data structures. To demonstrate the versatility of our
approach, we show how to extend the logic RGSep with flow interfaces. We have
used this new logic to prove linearizability and memory safety of nontrivial
concurrent data structures. In particular, we obtain parametric linearizability
proofs for concurrent dictionary algorithms that abstract from the details of
the underlying data structure representation. These proofs cannot be easily
expressed using the abstraction mechanisms provided by existing separation
logics.Comment: This is an extended version of a POPL 2018 conference pape