7,280 research outputs found
Implementation of Code Properties via Transducers
The FAdo system is a symbolic manipulator of formal language objects, implemented in Python. In this work, we extend its capabilities by implementing methods to manipulate transducers and we go one level higher than existing formal language systems and implement methods to manipulate objects representing classes of independent languages (widely known as code properties). Our methods allow users to define their own code properties and combine them between themselves or with fixed properties such as prefix codes, suffix codes, error detecting codes, etc. The satisfaction and maximality decision questions are solvable for any of the definable properties. The new online system LaSer allows one to query about a code property and obtain the answer in a batch mode. Our work is founded on independence theory as well as the theory of rational relations and transducers, and contributes with improved algorithms on these objects
Design and Development of Software Tools for Bio-PEPA
This paper surveys the design of software tools for the Bio-PEPA process algebra. Bio-PEPA is a high-level language for modelling biological systems such as metabolic pathways and other biochemical reaction networks. Through providing tools for this modelling language we hope to allow easier use of a range of simulators and model-checkers thereby freeing the modeller from the responsibility of developing a custom simulator for the problem of interest. Further, by providing mappings to a range of different analysis tools the Bio-PEPA language allows modellers to compare analysis results which have been computed using independent numerical analysers, which enhances the reliability and robustness of the results computed.
A Syntactic Model of Mutation and Aliasing
Traditionally, semantic models of imperative languages use an auxiliary
structure which mimics memory. In this way, ownership and other encapsulation
properties need to be reconstructed from the graph structure of such global
memory. We present an alternative "syntactic" model where memory is encoded as
part of the program rather than as a separate resource. This means that
execution can be modelled by just rewriting source code terms, as in semantic
models for functional programs. Formally, this is achieved by the block
construct, introducing local variable declarations, which play the role of
memory when their initializing expressions have been evaluated. In this way, we
obtain a language semantics which directly represents at the syntactic level
constraints on aliasing, allowing simpler reasoning about related properties.
To illustrate this advantage, we consider the issue, widely studied in the
literature, of characterizing an isolated portion of memory, which cannot be
reached through external references. In the syntactic model, closed block
values, called "capsules", provide a simple representation of isolated portions
of memory, and capsules can be safely moved to another location in the memory,
without introducing sharing, by means of "affine' variables. We prove that the
syntactic model can be encoded in the conventional one, hence efficiently
implemented.Comment: In Proceedings DCM 2018 and ITRS 2018 , arXiv:1904.0956
Cause Clue Clauses: Error Localization using Maximum Satisfiability
Much effort is spent everyday by programmers in trying to reduce long,
failing execution traces to the cause of the error. We present a new algorithm
for error cause localization based on a reduction to the maximal satisfiability
problem (MAX-SAT), which asks what is the maximum number of clauses of a
Boolean formula that can be simultaneously satisfied by an assignment. At an
intuitive level, our algorithm takes as input a program and a failing test, and
comprises the following three steps. First, using symbolic execution, we encode
a trace of a program as a Boolean trace formula which is satisfiable iff the
trace is feasible. Second, for a failing program execution (e.g., one that
violates an assertion or a post-condition), we construct an unsatisfiable
formula by taking the trace formula and additionally asserting that the input
is the failing test and that the assertion condition does hold at the end.
Third, using MAX-SAT, we find a maximal set of clauses in this formula that can
be satisfied together, and output the complement set as a potential cause of
the error. We have implemented our algorithm in a tool called bug-assist for C
programs. We demonstrate the surprising effectiveness of the tool on a set of
benchmark examples with injected faults, and show that in most cases,
bug-assist can quickly and precisely isolate the exact few lines of code whose
change eliminates the error. We also demonstrate how our algorithm can be
modified to automatically suggest fixes for common classes of errors such as
off-by-one.Comment: The pre-alpha version of the tool can be downloaded from
http://bugassist.mpi-sws.or
Design and Optimisation of the FlyFast Front-end for Attribute-based Coordination
Collective Adaptive Systems (CAS) consist of a large number of interacting
objects. The design of such systems requires scalable analysis tools and
methods, which have necessarily to rely on some form of approximation of the
system's actual behaviour. Promising techniques are those based on mean-field
approximation. The FlyFast model-checker uses an on-the-fly algorithm for
bounded PCTL model-checking of selected individual(s) in the context of very
large populations whose global behaviour is approximated using deterministic
limit mean-field techniques. Recently, a front-end for FlyFast has been
proposed which provides a modelling language, PiFF in the sequel, for the
Predicate-based Interaction for FlyFast. In this paper we present details of
PiFF design and an approach to state-space reduction based on probabilistic
bisimulation for inhomogeneous DTMCs.Comment: In Proceedings QAPL 2017, arXiv:1707.0366
- …