26 research outputs found
A novel symbolic approach to verifying epistemic properties of programs
We introduce a framework for the symbolic verification of epistemic properties of programs expressed in a class of general-purpose programming languages. To this end, we reduce the verification problem to that of satisfiability of first-order formulae in appropriate theories. We prove the correctness of our reduction and we validate our proposal by applying it to two examples: the dining cryptographers problem and the ThreeBallot voting protocol. We put forward an implementation using existing solvers, and report experimental results showing that the approach can perform better than state-of-the-art symbolic model checkers for temporal-epistemic logic
RacerD: compositional static race detection
Automatic static detection of data races is one of the most basic problems in reasoning about concurrency. We present RacerD—a static program analysis for detecting data races in Java programs which is fast, can scale to large code, and has proven effective in an industrial software engineering scenario. To our knowledge, RacerD is the first inter-procedural, compositional data race detector which has been empirically shown to have non-trivial precision and impact. Due to its compositionality, it can analyze code changes quickly, and this allows it to perform continuous reasoning about a large, rapidly changing codebase as part of deployment within a continuous integration ecosystem. In contrast to previous static race detectors, its design favors reporting high-confidence bugs over ensuring their absence. RacerD has been in deployment for over a year at Facebook, where it has flagged over 2500 issues that have been fixed by developers before reaching production. It has been important in enabling the development of new code as well as fixing old code: it helped support the conversion of part of the main Facebook Android app from a single-threaded to a multi-threaded architecture. In this paper we describe RacerD’s design, implementation, deployment and impact
Towards cyber-physical systems as services: the ASIP protocol
The development of Cyber-Physical Systems needs to address the heterogeneity of several components that interact to build a single application. In this paper we present a model to enable easy integration and interaction of micro-controllers. Specifically, we describe the Arduino Service Interface Protocol (ASIP), we provide an implementation and client libraries for Java, Racket and Erlang, together with the description of a practical example
Symbolic verification of event–condition–action rules in intelligent environments
In this paper we show how state-of-the art SMT-based techniques for software verification can be employed in the verification of event–condition–action rules in intelligent environments. Moreover, we exploit the specific features of intelligent environments to optimise the verification process. We compare our approach with previous work in a detailed evaluation section, showing how it improves both performance and expressivity of the language for event–condition–action rules
Requirements, specifications, and minimal refinement
Refinement is usually employed to produce more concrete versions of a specification, or to add new requirements to it. However, during specification revision one may over-refine, thus incorporating unnecessary requirements. In this paper, we argue that this process can be formalised by the notion of minimal refinements, hence avoiding over-refinement, and prove that this definition is well-behaved theoretically as well as computationall
An argument-based approach to reasoning with clinical knowledge
Better use of biomedical knowledge is an increasingly pressing concern for tackling challenging diseases and for generally improving the quality of healthcare. The quantity of biomedical knowledge is enormous and it is rapidly increasing. Furthermore, in many areas it is incomplete and inconsistent. The development of techniques for representing and reasoning with biomedical knowledge is therefore a timely and potentially valuable goal. In this paper, we focus on an important and common type of biomedical knowledge that has been obtained from clinical trials and studies. We aim for (1) a simple language for representing the results of clinical trials and studies; (2) transparent reasoning with that knowledge that is intuitive and understandable to users; and (3) simple computation mechanisms with this knowledge in order to facilitate the development of viable implementations. Our approach is to propose a logical language that is tailored to the needs of representing and reasoning with the results of clinical trials and studies. Using this logical language, we generate arguments and counterarguments for the relative merits of treatments. In this way, the incompleteness and inconsistency in the knowledge is analysed via argumentation. In addition to motivating and formalising the logical and argumentation aspects of the framework, we provide algorithms and computational complexity results
Model checking for symbolic-heap separation logic with inductive predicates
We investigate the model checking problem for symbolic-heap separation logic with user-defined inductive predicates, i.e., the problem of checking that a given stack-heap memory state satisfies a given formula in this language, as arises e.g. in software testing or runtime verification.
First, we show that the problem is decidable; specifically, we present a bottom-up fixed point algorithm that decides the problem and runs in exponential time in the size of the problem instance.
Second, we show that, while model checking for the full language is EXPTIME-complete, the problem becomes NP-complete or PTIME-solvable when we impose natural syntactic restrictions on the schemata defining the inductive predicates. We additionally present NP and PTIME algorithms for these restricted fragments.
Finally, we report on the experimental performance of our procedures on a variety of specifications extracted from programs, exercising multiple combinations of syntactic restrictions
SmartTrack: Efficient Predictive Race Detection
Widely used data race detectors, including the state-of-the-art FastTrack
algorithm, incur performance costs that are acceptable for regular in-house
testing, but miss races detectable from the analyzed execution. Predictive
analyses detect more data races in an analyzed execution than FastTrack
detects, but at significantly higher performance cost.
This paper presents SmartTrack, an algorithm that optimizes predictive race
detection analyses, including two analyses from prior work and a new analysis
introduced in this paper. SmartTrack's algorithm incorporates two main
optimizations: (1) epoch and ownership optimizations from prior work, applied
to predictive analysis for the first time; and (2) novel conflicting critical
section optimizations introduced by this paper. Our evaluation shows that
SmartTrack achieves performance competitive with FastTrack-a qualitative
improvement in the state of the art for data race detection.Comment: Extended arXiv version of PLDI 2020 paper (adds Appendices A-E) #228
SmartTrack: Efficient Predictive Race Detectio
MIRTO: an open-source robotic platform for education
This paper introduces the MIddlesex RoboTic platfOrm (MIRTO), an open-source platform that has been used for teaching First Year Computer Science students since the academic year 2013/2014, with the aim of providing a physical manifestation of Software Engineering concepts that are often delivered using only abstract or synthetic case studies. In this paper we provide a detailed description of the platform, whose hardware specifications and software libraries are all released open source; we describe a number of teaching usages of the platform, report students’ projects, and evaluate some of its aspects in terms of effectiveness, usability, and maintenance
SL-COMP: Competition of Solvers for Separation Logic
International audienceSL-COMP aims at bringing together researchers interested on improving the state of the art of the automated deduction methods for Separation Logic (SL). The event took place twice until now and collected more than 1K problems for different fragments of SL. The input format of problems is based on the SMT-LIB format and therefore fully typed; only one new command is added to SMT-LIB's list, the command for the declaration of the heap's type. The SMT-LIB theory of SL comes with ten logics, some of them being combinations of SL with linear arithmetics. The competition's divisions are defined by the logic fragment, the kind of decision problem (satisfiability or entailment) and the presence of quantifiers. Until now, SL-COMP has been run on the StarExec platform, where the benchmark set and the binaries of participant solvers are freely available. The benchmark set is also available with the competition's documentation on a public repository in GitHub