973 research outputs found
Permission-Based Separation Logic for Multithreaded Java Programs
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
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
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
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
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
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
- …