3,275 research outputs found

    A multi-paradigm language for reactive synthesis

    Get PDF
    This paper proposes a language for describing reactive synthesis problems that integrates imperative and declarative elements. The semantics is defined in terms of two-player turn-based infinite games with full information. Currently, synthesis tools accept linear temporal logic (LTL) as input, but this description is less structured and does not facilitate the expression of sequential constraints. This motivates the use of a structured programming language to specify synthesis problems. Transition systems and guarded commands serve as imperative constructs, expressed in a syntax based on that of the modeling language Promela. The syntax allows defining which player controls data and control flow, and separating a program into assumptions and guarantees. These notions are necessary for input to game solvers. The integration of imperative and declarative paradigms allows using the paradigm that is most appropriate for expressing each requirement. The declarative part is expressed in the LTL fragment of generalized reactivity(1), which admits efficient synthesis algorithms, extended with past LTL. The implementation translates Promela to input for the Slugs synthesizer and is written in Python. The AMBA AHB bus case study is revisited and synthesized efficiently, identifying the need to reorder binary decision diagrams during strategy construction, in order to prevent the exponential blowup observed in previous work.Comment: In Proceedings SYNT 2015, arXiv:1602.0078

    Reactive Visualizer: A Learning Tool for Reactive Programming Using Reactive Extensions for JavaScript

    Get PDF
    Reaktiivne programmeerimine võimaldab asünkroonsete protsesside ja nendevaheliste seoste deklaratiivset kirjeldamist, lihtsustades asünkroonsete programmide kirjutamist ja mõistmist. Reaktiivse programmeerimise õppimist takistab aga asjaolu, et selle õppimine on raske ja nõuab algajatel tugevat pingutust. Reaktiivse programmeerimise õppimist lihtsustaks interaktiivne õppevahend, mis visualiseerib asünkroonseid seoseid, pakub abistavaid näiteid ja garanteerib korrektse programmistruktuuri. Antud bakalaurusetöö kirjeldab õppevahendi Reactive Visualizer, mis püüab eelnimetatud nõudeid täita, disaini ja implementatsiooni.Reactive programming enables declarative composition of asynchronous processes, making asynchronous programs simpler to write and understand. The downside of reactive programming is that learning it requires considerable effort, which can overwhelm beginners. An interactive learning tool can help beginners comprehend reactive programming by visualizing asynchronous interactions, providing helpful examples and guaranteeing a valid program structure. This thesis describes the design and implementation of Reactive Visualizer, a tool which aims to fulfill those requirements

    On Synchronous and Asynchronous Monitor Instrumentation for Actor-based systems

    Full text link
    We study the impact of synchronous and asynchronous monitoring instrumentation on runtime overheads in the context of a runtime verification framework for actor-based systems. We show that, in such a context, asynchronous monitoring incurs substantially lower overhead costs. We also show how, for certain properties that require synchronous monitoring, a hybrid approach can be used that ensures timely violation detections for the important events while, at the same time, incurring lower overhead costs that are closer to those of an asynchronous instrumentation.Comment: In Proceedings FOCLASA 2014, arXiv:1502.0315

    The synchronous languages 12 years later

    Full text link

    Desynchronization: Synthesis of asynchronous circuits from synchronous specifications

    Get PDF
    Asynchronous implementation techniques, which measure logic delays at run time and activate registers accordingly, are inherently more robust than their synchronous counterparts, which estimate worst-case delays at design time, and constrain the clock cycle accordingly. De-synchronization is a new paradigm to automate the design of asynchronous circuits from synchronous specifications, thus permitting widespread adoption of asynchronicity, without requiring special design skills or tools. In this paper, we first of all study different protocols for de-synchronization and formally prove their correctness, using techniques originally developed for distributed deployment of synchronous language specifications. We also provide a taxonomy of existing protocols for asynchronous latch controllers, covering in particular the four-phase handshake protocols devised in the literature for micro-pipelines. We then propose a new controller which exhibits provably maximal concurrency, and analyze the performance of desynchronized circuits with respect to the original synchronous optimized implementation. We finally prove the feasibility and effectiveness of our approach, by showing its application to a set of real designs, including a complete implementation of the DLX microprocessor architectur
    corecore