2,143 research outputs found

    Logic programming in the context of multiparadigm programming: the Oz experience

    Full text link
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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++

    Full text link
    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
    corecore