Results 11  20
of
30
An Ultrametric Model of Reactive Programming
, 2010
"... We describe a denotational model of higherorder functional reactive programming using ultrametric spaces, which provide a natural Cartesian closed generalization of causal stream functions. We define a domainspecific language corresponding to the model. We then show how reactive programs written i ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We describe a denotational model of higherorder functional reactive programming using ultrametric spaces, which provide a natural Cartesian closed generalization of causal stream functions. We define a domainspecific language corresponding to the model. We then show how reactive programs written in this language may be implemented efficiently using an imperatively updated dataflow graph and give a higherorder separation logic proof that this lowlevel implementation is correct with respect to the highlevel semantics.
Stream Processing for Embedded Domain Specific Languages
"... We present a library for expressing digital signal processing (DSP) algorithms using a deeply embedded domainspecific language (EDSL) in Haskell. The library supports definitions in functional programming style, reducing the gap between the mathematical description of streaming algorithms and their ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
We present a library for expressing digital signal processing (DSP) algorithms using a deeply embedded domainspecific language (EDSL) in Haskell. The library supports definitions in functional programming style, reducing the gap between the mathematical description of streaming algorithms and their implementation. The deep embedding makes it possible to generate efficient C code. The signal processing library is intended to be an extension of the Feldspar EDSL which, until now, has had a rather lowlevel interface for dealing with synchronous streams. However, the presented library is independent of the underlying expression language, and can be used to extend any pure EDSL for which a C code generator exists with efficient stream processing capabilities. The library is evaluated using example implementations of common DSP algorithms and the generated code is compared to its handwritten counterpart.
Clockdirected Modular Code Generation from Synchronous Block Diagrams
 in "Workshop on Automatic Program Generation for Embedded Systems (APGES 2007
, 2007
"... The compilation of synchronous block diagrams into sequential imperative code has been addressed in the early eighties and can be considered now as folklore. However, separate or modular code generation, though largely used in existing compilers and particularly in industrial ones, has been neither ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
The compilation of synchronous block diagrams into sequential imperative code has been addressed in the early eighties and can be considered now as folklore. However, separate or modular code generation, though largely used in existing compilers and particularly in industrial ones, has been neither precisely described nor entirely formalized. Such a formalization appears now as a fundamental need in the longterm goal to develop a mathematically certified compiler for a synchronous language as well as in simplifying existing implementations. This article presents in full detail the modular compilation of synchronous block diagrams into sequential code. We consider a firstorder functional language reminiscent of Lustre which it extends with a general nary merge operator, a reset construct and a richer notion of clocks. The clocks are used to express activation of computations in the program and are specifically taken into account during the compilation process to produce efficient imperative code. We introduce a generic objectbased intermediate language to represent transition functions and we present a concise clockdirected translation function from the source to the intermediate language. We also address the target code generation phase by describing a translation from the intermediate language to Java and C. 1.
Synchronous Digital Circuits as Functional Programs
"... Functional programming techniques have been used to describe synchronous digital circuits since the early 1980s and have proven successful at describing certain types of designs. Here we survey the systems and formal underpinnings that constitute this tradition. We situate these techniques with resp ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Functional programming techniques have been used to describe synchronous digital circuits since the early 1980s and have proven successful at describing certain types of designs. Here we survey the systems and formal underpinnings that constitute this tradition. We situate these techniques with respect to other formal methods for hardware design and discuss the work yet to be done.
Efficient Monadic Streams
"... Abstract. Functional stream representations allow for a highlevel, compositional way of programming digital signal processing algorithms. However, some algorithms, such as filters, cannot be efficiently implemented using purely functional techniques, due to excessive copying of data. We present a ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. Functional stream representations allow for a highlevel, compositional way of programming digital signal processing algorithms. However, some algorithms, such as filters, cannot be efficiently implemented using purely functional techniques, due to excessive copying of data. We present a monadic representation of stream which introduces the ability to use mutation for efficiency when implementing algorithms. Still, our representation enjoys many of the benefits of purely functional streams, such as a functional API and fusion. Our representation enables further optimizations: we show how to remove duplicate loop variables, and how to keep buffers entirely in references. The representation has been evaluated in the context of the Feldspar embedded DSL, and our measurements show that our new monadic representation consistently outperforms the functional representation by at least a factor of four.
ProjectTeam Proval Proof of programs
"... c t i v it y e p o r t 2009 Table of contents ..."
(Show Context)
Embedded and Real Time Systems
"... 3.1.1. Synchronous functional programming 2 3.1.2. Relaxing synchrony with buffer communication 3 3.1.3. Polyhedral compilation and optimizing compilers 4 3.1.4. Automatic compilation of high performance circuits 4 ..."
Abstract
 Add to MetaCart
(Show Context)
3.1.1. Synchronous functional programming 2 3.1.2. Relaxing synchrony with buffer communication 3 3.1.3. Polyhedral compilation and optimizing compilers 4 3.1.4. Automatic compilation of high performance circuits 4
Deductive Proofs of Dataflow Programs 1
"... Introduction This deliverable is intended to present the current year achievements with respect to task 3.4. This task aimed at exploring both the need of theorem proving for synchronous dataflow programs and ways to achieve it. As an example, the chosen dataflow language was Lustre and the theore ..."
Abstract
 Add to MetaCart
Introduction This deliverable is intended to present the current year achievements with respect to task 3.4. This task aimed at exploring both the need of theorem proving for synchronous dataflow programs and ways to achieve it. As an example, the chosen dataflow language was Lustre and the theorem proving tool was PVS. According to the proposal, we had in mind the following schedule: ffl deliverable 3.4.1 (12 months) : Comparative study of dataflow to PVS translations. ffl deliverable 3.4.2 (24 months) : Case studies on checking dataflow programs with PVS. ffl deliverable 3.4.3 (36 months) : Frontend prototype. Yet this schedule was rather theoretical: for instance, in order to compare translations, we needed some case studies. Similarly, in order to have thorough comparisons we also needed some assistance from automated tools. This led us to progress in each direction at the same time: ffl<F13.3
A clocked denotational semantics for LucidSynchrone in COQ
, 2001
"... Synchronous languages [Hal93] have been designed to help in the conception of reactive systems, especially critical reactive systems (planes, power plants control...). Synchrony is a program property which ensures bounded reactiontime and memory at execution. Synchronous languages statically che ..."
Abstract
 Add to MetaCart
Synchronous languages [Hal93] have been designed to help in the conception of reactive systems, especially critical reactive systems (planes, power plants control...). Synchrony is a program property which ensures bounded reactiontime and memory at execution. Synchronous languages statically check this property. However, in a critical context, it may be needed to have it formally proved, or more generally to prove program properties. In this work we are interested in LucidSynchrone [PCCH01] (LS for short), a dataow synchronous language. We present here a natural and shallow embedding of LS into the Coq proof assistant. This embedding concerns both the dynamic and the static semantics of the language, such that synchrony analysis is obtained for free. Moreover, it gives us a denotational semantics of LS in Coq and is thus a good starting point for designing a prover for LS programs in Coq, following [Fil99, Par95] approach. This semantics can also be used to experiment with the language: we have used it here to propose a notion of recursive functions for LS, as a generalization of recursive streams. The main originality of this work is to apply the "clocks as types" paradigm (see [Cas92]) in the design of a formal semantics for a synchronous language. This paradigm consists in expressing static synchronization constraints with a restricted form of dependent types. We show here that such a type system is a subsystem of Coq type system.
A PVS Proof Obligation Generator for Lustre Programs
 Universite ParisSud
, 2000
"... . This paper presents a tool for proving safety properties of ..."