2,143 research outputs found
Logic programming in the context of multiparadigm programming: the Oz experience
Oz is a multiparadigm language that supports logic programming as one of its
major paradigms. A multiparadigm language is designed to support different
programming paradigms (logic, functional, constraint, object-oriented,
sequential, concurrent, etc.) with equal ease. This article has two goals: to
give a tutorial of logic programming in Oz and to show how logic programming
fits naturally into the wider context of multiparadigm programming. Our
experience shows that there are two classes of problems, which we call
algorithmic and search problems, for which logic programming can help formulate
practical solutions. Algorithmic problems have known efficient algorithms.
Search problems do not have known efficient algorithms but can be solved with
search. The Oz support for logic programming targets these two problem classes
specifically, using the concepts needed for each. This is in contrast to the
Prolog approach, which targets both classes with one set of concepts, which
results in less than optimal support for each class. To explain the essential
difference between algorithmic and search programs, we define the Oz execution
model. This model subsumes both concurrent logic programming
(committed-choice-style) and search-based logic programming (Prolog-style).
Instead of Horn clause syntax, Oz has a simple, fully compositional,
higher-order syntax that accommodates the abilities of the language. We
conclude with lessons learned from this work, a brief history of Oz, and many
entry points into the Oz literature.Comment: 48 pages, to appear in the journal "Theory and Practice of Logic
Programming
Formalization of Petri Nets with Individual Tokens as Basis for DPO Net Transformations
Reconfigurable place/transition systems are Petri nets with initial markings
and a set of rules which allow the modification of the net structure during runtime.
They have been successfully used in different areas like mobile ad-hoc networks.
In most of these applications the modification of net markings during runtime
is an important issue. This requires the analysis of the interaction between firing and
rule-based modification. For place/transition systems this analysis has been started
explicitly without using the general theory of M-adhesive transformation systems,
because firing cannot be expressed by rule-based transformations for P/T systems in
this framework. This problem is solved in this paper using the new approach of P/T
nets with individual tokens. In our main results we show that on one hand this new
approach allows to express firing by transformation via suitable transition rules. On
the other hand transformations of P/T nets with individual tokens can be shown to
be an instance ofM-adhesive transformation systems, such that several well-known
results, like the local Church-Rosser theorem, can be applied. This avoids a separate
conflict analysis of token firing and transformations. Moreover, we compare
the behavior of P/T nets with individual tokens with that of classical P/T nets. Our
new approach is also motivated and demonstrated by a network scenario modeling
a distributed communication system
The Parma Polyhedra Library: Toward a Complete Set of Numerical Abstractions for the Analysis and Verification of Hardware and Software Systems
Since its inception as a student project in 2001, initially just for the
handling (as the name implies) of convex polyhedra, the Parma Polyhedra Library
has been continuously improved and extended by joining scrupulous research on
the theoretical foundations of (possibly non-convex) numerical abstractions to
a total adherence to the best available practices in software development. Even
though it is still not fully mature and functionally complete, the Parma
Polyhedra Library already offers a combination of functionality, reliability,
usability and performance that is not matched by similar, freely available
libraries. In this paper, we present the main features of the current version
of the library, emphasizing those that distinguish it from other similar
libraries and those that are important for applications in the field of
analysis and verification of hardware and software systems.Comment: 38 pages, 2 figures, 3 listings, 3 table
The design co-ordination framework : key elements for effective product development
This paper proposes a Design Co-ordination Framework (DCF) i.e. a concept for an ideal DC system with the abilities to support co-ordination of various complex aspects of product development. A set of frames, modelling key elements of co-ordination, which reflect the states of design, plans, organisation, allocations, tasks etc. during the design process, has been identified. Each frame is explained and the co-ordination, i.e. the management of the links between these frames, is presented, based upon characteristic DC situations in industry. It is concluded that while the DCF provides a basis for our research efforts into enhancing the product development process there is still considerable work and development required before it can adequately reflect and support Design Co-ordination
Revisiting Actor Programming in C++
The actor model of computation has gained significant popularity over the
last decade. Its high level of abstraction makes it appealing for concurrent
applications in parallel and distributed systems. However, designing a
real-world actor framework that subsumes full scalability, strong reliability,
and high resource efficiency requires many conceptual and algorithmic additives
to the original model.
In this paper, we report on designing and building CAF, the "C++ Actor
Framework". CAF targets at providing a concurrent and distributed native
environment for scaling up to very large, high-performance applications, and
equally well down to small constrained systems. We present the key
specifications and design concepts---in particular a message-transparent
architecture, type-safe message interfaces, and pattern matching
facilities---that make native actors a viable approach for many robust,
elastic, and highly distributed developments. We demonstrate the feasibility of
CAF in three scenarios: first for elastic, upscaling environments, second for
including heterogeneous hardware like GPGPUs, and third for distributed runtime
systems. Extensive performance evaluations indicate ideal runtime behaviour for
up to 64 cores at very low memory footprint, or in the presence of GPUs. In
these tests, CAF continuously outperforms the competing actor environments
Erlang, Charm++, SalsaLite, Scala, ActorFoundry, and even the OpenMPI.Comment: 33 page
- …