64,519 research outputs found

    On Verifying Causal Consistency

    Full text link
    Causal consistency is one of the most adopted consistency criteria for distributed implementations of data structures. It ensures that operations are executed at all sites according to their causal precedence. We address the issue of verifying automatically whether the executions of an implementation of a data structure are causally consistent. We consider two problems: (1) checking whether one single execution is causally consistent, which is relevant for developing testing and bug finding algorithms, and (2) verifying whether all the executions of an implementation are causally consistent. We show that the first problem is NP-complete. This holds even for the read-write memory abstraction, which is a building block of many modern distributed systems. Indeed, such systems often store data in key-value stores, which are instances of the read-write memory abstraction. Moreover, we prove that, surprisingly, the second problem is undecidable, and again this holds even for the read-write memory abstraction. However, we show that for the read-write memory abstraction, these negative results can be circumvented if the implementations are data independent, i.e., their behaviors do not depend on the data values that are written or read at each moment, which is a realistic assumption.Comment: extended version of POPL 201

    Tools for Verifying Classical and Quantum Superintegrability

    Get PDF
    Recently many new classes of integrable systems in n dimensions occurring in classical and quantum mechanics have been shown to admit a functionally independent set of 2n-1 symmetries polynomial in the canonical momenta, so that they are in fact superintegrable. These newly discovered systems are all separable in some coordinate system and, typically, they depend on one or more parameters in such a way that the system is superintegrable exactly when some of the parameters are rational numbers. Most of the constructions to date are for n=2 but cases where n>2 are multiplying rapidly. In this article we organize a large class of such systems, many new, and emphasize the underlying mechanisms which enable this phenomena to occur and to prove superintegrability. In addition to proofs of classical superintegrability we show that the 2D caged anisotropic oscillator and a Stackel transformed version on the 2-sheet hyperboloid are quantum superintegrable for all rational relative frequencies, and that a deformed 2D Kepler-Coulomb system is quantum superintegrable for all rational values of a parameter k in the potential

    Concurrent Data Structures Linked in Time

    Get PDF
    Arguments about correctness of a concurrent data structure are typically carried out by using the notion of linearizability and specifying the linearization points of the data structure's procedures. Such arguments are often cumbersome as the linearization points' position in time can be dynamic (depend on the interference, run-time values and events from the past, or even future), non-local (appear in procedures other than the one considered), and whose position in the execution trace may only be determined after the considered procedure has already terminated. In this paper we propose a new method, based on a separation-style logic, for reasoning about concurrent objects with such linearization points. We embrace the dynamic nature of linearization points, and encode it as part of the data structure's auxiliary state, so that it can be dynamically modified in place by auxiliary code, as needed when some appropriate run-time event occurs. We name the idea linking-in-time, because it reduces temporal reasoning to spatial reasoning. For example, modifying a temporal position of a linearization point can be modeled similarly to a pointer update in separation logic. Furthermore, the auxiliary state provides a convenient way to concisely express the properties essential for reasoning about clients of such concurrent objects. We illustrate the method by verifying (mechanically in Coq) an intricate optimal snapshot algorithm due to Jayanti, as well as some clients
    corecore