Results 1 -
9 of
9
Ott: Effective tool support for the working semanticist
- PROC. ICFP
, 2007
"... It is rare to give a semantic definition of a full-scale programming language, despite the many potential benefits. Partly this is because the available metalanguages for expressing semantics -- usually either LATEX for informal mathematics, or the formal mathematics of a proof assistant -- make it ..."
Abstract
-
Cited by 32 (3 self)
- Add to MetaCart
It is rare to give a semantic definition of a full-scale programming language, despite the many potential benefits. Partly this is because the available metalanguages for expressing semantics -- usually either LATEX for informal mathematics, or the formal mathematics of a proof assistant -- make it much harder than necessary to work with large definitions. We present a metalanguage specifically designed for this problem, and a tool,
On the implementation of construction functions for non-free concrete data types
- in "16th European Symposium on Programming - ESOP’07
"... Abstract. Many algorithms use concrete data types with some additional invariants. The set of values satisfying the invariants is often a set of representatives for the equivalence classes of some equational theory. For instance, a sorted list is a particular representative wrt commutativity. Theori ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
Abstract. Many algorithms use concrete data types with some additional invariants. The set of values satisfying the invariants is often a set of representatives for the equivalence classes of some equational theory. For instance, a sorted list is a particular representative wrt commutativity. Theories like associativity, neutral element, idempotence, etc. are also very common. Now, when one wants to combine various invariants, it may be difficult to find the suitable representatives and to efficiently implement the invariants. The preservation of invariants throughout the whole program is even more difficult and error prone. Classically, the programmer solves this problem using a combination of two techniques: the definition of appropriate construction functions for the representatives and the consistent usage of these functions ensured via compiler data type for the representatives; unfortunately, pattern matching on representatives is lost. A more appealing alternative is to define a concrete data type with private constructors so that both compiler verification and pattern matching on representatives are granted. In this paper, we detail the notion of private data type and study the existence of construction functions. We also describe a prototype, called Moca, that addresses the entire problem of defining concrete data types with invariants: it generates efficient construction functions for the combination of common invariants and builds representatives that belong to a concrete data type with private constructors. 1
GLONEMO: Global and accurate formal models for the analysis of ad-hoc sensor networks
- In Proceedings of the First International Conference on Integrated Internet Ad hoc and Sensor Networks (InterSense’06
, 2006
"... Abstract — We describe an approach for the formal modeling and analysis of ad-hoc sensor networks, at various levels of abstraction. It is global because it takes into account all the following aspects: a precise modeling of the hardware that implements a model of the physical environment as viewed ..."
Abstract
-
Cited by 4 (3 self)
- Add to MetaCart
Abstract — We describe an approach for the formal modeling and analysis of ad-hoc sensor networks, at various levels of abstraction. It is global because it takes into account all the following aspects: a precise modeling of the hardware that implements a model of the physical environment as viewed by the sensors. The global model is executable, to enable validation by simulations, but we also aim at analyzing the global model with various formal validation tools (automatic test, runtime verification techniques, model-checking and abstract interpretations). Each technique or tool may need particular abstractions of the model. In this paper, we illustrate the whole approach with a simple model, and show what formal analysis can be performed on the model. A. Ad-hoc Sensor Networks I.
Type-safe Computation with Heterogeneous Data
, 2007
"... Computation with large-scale heterogeneous data typically requires universal traversal to search forall occurrences of a substructure that matches a possibly complex search pattern, whose context may be different in different places within the data. Both aspects cause difficulty for existing general ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
Computation with large-scale heterogeneous data typically requires universal traversal to search forall occurrences of a substructure that matches a possibly complex search pattern, whose context may be different in different places within the data. Both aspects cause difficulty for existing general-purpose programming languages, because these languages are designed for homogeneous data and have problems typing the different substructures in heterogeneous data, and the complex patterns to match with the substructures. Programmers either have to hard-code the structures and search patterns, preventing programs from being reusable and scalable, or have to use low-level untyped programming or programming with special-purpose query languages, opening the door to type mismatches that cause a high risk of program correctness and security problems. This thesis invents the concept of pattern structures, and proposes a general solution to the above problems -- a programming technique using pattern structures. In this solution, well-typed pattern structures are defined to represent complex search patterns, and pattern searching over heterogeneous data is programmed with pattern parameters, in a statically-typed language that supports first-class typing of structures and patterns. The resulting programs are statically-typed, highly reusable for different data structures and different patterns, and highly scalable in terms of the complexity of data structures and patterns. Adding new kinds of patterns for an application no longer requires changing the language in use or creating new ones, but is only a programming task. The thesis demonstrates the application of this approach to, and its advantages in, two important examples of computation with heterogeneous data, i.e., XML data processing and Java bytecode analysis.
Addressed Term rewriting Systems: . . .
, 2006
"... We present a formalism called Addressed Term Rewriting Systems, which can be used to model implementations of theorem proving, symbolic computation, and programming languages, especially aspects of sharing, recursive computations and cyclic data structures. Addressed Term Rewriting Systems are there ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
We present a formalism called Addressed Term Rewriting Systems, which can be used to model implementations of theorem proving, symbolic computation, and programming languages, especially aspects of sharing, recursive computations and cyclic data structures. Addressed Term Rewriting Systems are therefore well suited for describing object-based languages, and as an example we present a language called λObj a, incorporating both functional and object-based features. As a case study in how reasoning about languages is supported in the ATRS formalism a type system for λObj a is defined and a type soundness result is proved.
What Does Aspect-Oriented Programming Mean for Functional Programmers?
"... Aspect-Oriented Programming (AOP) aims at modularising crosscutting concerns that show up in software. The success of AOP has been almost viral and nearly all areas in Software Engineering and Programming Languages have become “infected ” by the AOP bug in one way or another. Interestingly the funct ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Aspect-Oriented Programming (AOP) aims at modularising crosscutting concerns that show up in software. The success of AOP has been almost viral and nearly all areas in Software Engineering and Programming Languages have become “infected ” by the AOP bug in one way or another. Interestingly the functional programming community (and, in particular, the pure functional programming community) seems to be resistant to the pandemic. The goal of this paper is to debate the possible causes of the functional programming community’s resistance and to raise awareness and interest by showcasing the benefits that could be gained from having a functional AOP language. At the same time, we identify the main challenges and explore the possible design-space. Categories and Subject Descriptors D.3.2 [Programming Languages]: Language Classifications—Applicative (functional) languages,
Simulation of Ad hoc Networks in ReactiveML
"... This paper presents a programming experiment of complex network routing protocols for mobile ad hoc networks within the reactive language ReactiveML. Mobile ad hoc networks are highly dynamic networks characterized by the absence of any physical infrastructure. In such networks, nodes move, evolve c ..."
Abstract
- Add to MetaCart
This paper presents a programming experiment of complex network routing protocols for mobile ad hoc networks within the reactive language ReactiveML. Mobile ad hoc networks are highly dynamic networks characterized by the absence of any physical infrastructure. In such networks, nodes move, evolve concurrently, and synchronize continuously with their neighbors. Due to mobility, connections in the network can change dynamically and nodes can join or leave at any time. All these characteristics — concurrency with many communications and the need of complex data-structure — combined to our routing protocol specifications make the use of standard simulation tools (e.g., NS-2, OPNET) inadequate. Moreover network protocols appear to be hard to program efficiently in conventional programming languages. In this paper, we show that the synchronous reactive model, as introduced in the pioneering work of Boussinot, matters for programming such systems. This model provides adequate programming constructs — namely synchronous parallel composition, broadcast communication and dynamic creation — which allow a natural implementation of the hard part of the simulation. This proposition is supported by two concrete examples: the first one is a routing protocol in mobile ad hoc networks where the simulation focuses only on the network layer. The second one is the power consumption in sensor networks. Here, every single layer is faithfully simulated (hardware, MAC, and network layers). More importantly, the physical environment (e.g., clouds) has also been integrated into the simulation using the tool Lucky. The implementation has been done in ReactiveML, an embedding of the reactive model inside the statically typed and strict functional language OCaml. ReactiveML provides reactive programming constructs together with most of the features of OCaml. Moreover, it provides an efficient execution scheme for reactive constructs which made the simulation of real-size examples (with thousands of nodes) feasible. 1

