Spatial concurrent constraint programming (SCCP) is an algebraic model of spatial modalities in constrained-based process calculi; it can be used to reason about spatial information distributed among the agents of a system. This work presents an executable rewriting logic semantics of SCCP with extrusion (i.e., process mobility) that uses rewriting modulo SMT, a novel technique that combines the power of term rewriting, matching algorithms, and SMT-solving. In this setting, constraints are encoded as formulas in a theory with a satisfaction relation decided by an SMT solver, while the topology of the spatial hierarchy is encoded as part of the term structure of symbolic states. By being executable, the rewriting logic specification offers support for the inherent symbolic and challenging task of reachability analysis in the constrainedbased model. The approach is illustrated with examples about the automatic verification of fault-tolerance, consistency, and privacy in distributed spatial and hierarchical systems.examples illustrating such a feature. The language and tool based on the algebraic model are explained in Section 7. Finally, Section 8 concludes the work.
Preliminaries
Concurrent Constraint Programming and Constraint SystemsConcurrent Constraint Programming (CCP) [26][27][28] (see a survey in [21]) is a model for concurrency that combines the traditional operational view of process calculi with a declarative view based on logic. This allows CCP benefit from the large set of reasoning techniques of both process calculi and logic. Under this paradigm, the conception of store as valuation in the von Neumann model is replaced by the notion of store as constraint and processes are seen as information transducers.The CCP model of computation makes use of ask and tell operations instead of the classical read and write. An ask operation tests if a given piece of information (i.e., a constraint as in temperature ą 23) can be deduced from the store. The tell operations post constraints in the store, thus augmenting/refining the information in it. A fundamental issue in CCP is then the specification of systems by means of constraints that represent partial information about certain variables. The state of the system is specified by the store (i.e., a constraint) that is monotonically refined by processes adding new information.The basic constructs (processes) in CCP are: (1) the tell pcq agent, which posts the constraint c to the store, making it available to the other processes. Once a constraint is added, it cannot be removed from the store (i.e., the store grows monotonically). And (2), the ask process c Ñ P , which queries if c can be deduced from the information in the current store; if so, the agent behaves like P , otherwise, it remains blocked until more information is added to the store. In this way, ask processes define a reactive synchronization mechanism based on entailment of constraints. A basic CCP process language usually adds parallel composition (P Q) combining processes concurrently, a hiding op...