973 research outputs found

    Permission-Based Separation Logic for Multithreaded Java Programs

    Get PDF
    This paper motivates and presents a program logic for reasoning about multithreaded Java-like programs with concurrency primitives such as dynamic thread creation, thread joining and reentrant object monitors. The logic is based on concurrent separation logic. It is the first detailed adaptation of concurrent separation logic to a multithreaded Java-like language. The program logic associates a unique static access permission with each heap location, ensuring exclusive write accesses and ruling out data races. Concurrent reads are supported through fractional permissions. Permissions can be transferred between threads upon thread starting, thread joining, initial monitor entrancies and final monitor exits.\ud This paper presents the basic principles to reason about thread creation and thread joining. It finishes with an outlook how this logic will evolve into a full-fledged verification technique for Java (and possibly other multithreaded languages)

    Permission-Based Separation Logic for Multithreaded Java Programs

    Get PDF
    This paper presents a program logic for reasoning about multithreaded Java-like programs with dynamic thread creation, thread joining and reentrant object monitors. The logic is based on concurrent separation logic. It is the first detailed adaptation of concurrent separation logic to a multithreaded Java-like language. The program logic associates a unique static access permission with each heap location, ensuring exclusive write accesses and ruling out data races. Concurrent reads are supported through fractional permissions. Permissions can be transferred between threads upon thread starting, thread joining, initial monitor entrancies and final monitor exits. In order to distinguish between initial monitor entrancies and monitor reentrancies, auxiliary variables keep track of multisets of currently held monitors. Data abstraction and behavioral subtyping are facilitated through abstract predicates, which are also used to represent monitor invariants, preconditions for thread starting and postconditions for thread joining. Value-parametrized types allow to conveniently capture common strong global invariants, like static object ownership relations. The program logic is presented for a model language with Java-like classes and interfaces, the soundness of the program logic is proven, and a number of illustrative examples are presented

    Resource Usage Protocols for Iterators

    Get PDF
    We discuss usage protocols for iterator objects that prevent concurrent modifications of the underlying collection while iterators are in progress. We formalize these protocols in Java-like object interfaces, enriched with separation logic contracts. We present examples of iterator clients and proofs that they adhere to the iterator protocol, as well as examples of iterator implementations and proofs that they implement the iterator interface

    The VerCors tool for verification of concurrent programs

    Get PDF
    The VerCors tool implements thread-modular static verification of concurrent programs, annotated with functional properties and heap access permissions. The tool supports both generic multithreaded and vector-based programming models. In particular, it can verify multithreaded programs written in Java, specified with JML extended with separation logic. It can also verify parallelizable programs written in a toy language that supports the characteristic features of OpenCL. The tool verifies programs by first encoding the specified program into a much simpler programming language and then applying the Chalice verifier to the simplified program. In this paper we discuss both the implementation of the tool and the features of its specification language

    History-based verification of functional behaviour of concurrent programs

    Get PDF
    Modular verification of the functional behaviour of a concurrent program remains a challenge. We propose a new way to achieve this, using histories, modelled as process algebra terms, to keep track of local changes. When threads terminate or synchronise in some other way, local histories are combined into global histories, and by resolving the global histories, the reachable state properties can be determined. Our logic is an extension of permission-based separation logic, which supports expressive and intuitive specifications. We discuss soundness of the approach, and illustrate it on several examples

    Blockchain technology for the construction industry

    Get PDF
    One of the challenges that the construction industry faces is the lack of trust between participants and information sharing processes. Blockchain is a disruptive and emerging technology that can be used to add immutability, trust and transparency to information. This dissertation proposes a platform that aims to mitigate the problem of information sharing in the construction industry using blockchain technology. The platform allows to keep an immutable record of file interactions between construction participants and simulate document signatures that can later be verified. A proof-of-concept was developed using the Ethereum network, which was also used to evaluate the gas price influence in the execution duration of the transaction and its cost. It is concluded that blockchain technology can support information sharing in the construction industry.Um dos desafios que a indústria da construção enfrenta é a falta de confiança entre os intervenientes e os sistemas de partilha de informação. Blockchain é uma tecnologia disruptiva e emergente que pode ser usada para adicionar imutabilidade, confiança e transparência à informação. A presente dissertação propõe uma plataforma que pretende mitigar o problema de partilha de informação na indústria da construção utilizando a tecnologia blockchain. A plataforma permite manter um registo imutável das alterações efetuadas em ficheiros partilhados entre os vários intervenientes da obra e simular assinaturas de documentos que possam ser, posteriormente, verificadas. Foi desenvolvida uma prova de conceito utilizando a rede Ethereum sendo, de seguida, utilizada para avaliar a influência do preço unitário do gas na duração de execução da transação e o seu custo. Conclui-se que a tecnologia blockchain pode auxiliar a partilha de informação na indústria da construção
    corecore