Results 1 -
6 of
6
Pure type systems in rewriting logic: Specifying typed higher-order languages in a first-order logical framework
- In Essays in Memory of Ole-Johan Dahl, volume 2635 of LNCS
, 2004
"... ..."
Specifying an active network programming language
- Electronic Notes in theoretical Computer Science 71
, 2002
"... In tutorial form we discuss our specification of PLAN, an active network programming language, in Maude, a formal specification language based on rewriting logic and membership equational logic. We will point out a number of challenges that we faced in this enterprise as well as our solutions and ho ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
In tutorial form we discuss our specification of PLAN, an active network programming language, in Maude, a formal specification language based on rewriting logic and membership equational logic. We will point out a number of challenges that we faced in this enterprise as well as our solutions and how we have formalized them using rewriting logic as a semantic framework. Since we believe that the underlying paradigm of the PLAN language is interesting in its own right, our approach is based on a fairly general treatment that is in its essential parts independent of the concrete application of active networks for which the language was originally designed. In fact, we think of PLAN more generally as a programming language for mobile programs where the concept of location is abstract and does not necessarily coincide with the physical location in a network. Furthermore, we feel that the techniques that we employed in this project and their combination, especially the use of rewriting logic, the modelling of a network, the treatment of multi-level concurrency, the use of an abstract reduction machine with explicit contexts, the treatment of bound variables and environments using an explicit substitution calculus, are worth to discuss, since they are equally applicable in many other contexts. 1 What are Active Networks? On the website of the Switchware Project [13] we find the following explanation: Active networks explore the idea of allowing routing elements to be extensively programmed by the packets passing through them. This allows computation previously possible only at endpoints to be carried out within the network itself, thus enabling optimizations and extensions of current protocols as well as the development of fundamentally new protocols. 1
Amalgams: Names and Name Capture in a Declarative Framework
, 1998
"... this paper, we address the problem of names and name capture on its own by designing, through the use of three operators, a complete and consistent mechanism of name capture for a declarative framework. We perceive expressions with free names as incomplete expressions which will be dynamically compl ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
this paper, we address the problem of names and name capture on its own by designing, through the use of three operators, a complete and consistent mechanism of name capture for a declarative framework. We perceive expressions with free names as incomplete expressions which will be dynamically completed by a name capture mechanism. The formalism allows the denition of rst-class environments (which can be the result of a computation). We apply this mechanism to model distributed incremental program construction and to dene an object oriented programming style in a declarative language
Using pi-RED as a Teaching Tool for Functional Programming and Program Execution
"... . This paper describes an interactively controlled reduction system --red which may be employed to teach both basic concepts of functional programming and program execution at the undergraduate level, and advanced topics of computer science at the graduate level. --red supports the reduction la ..."
Abstract
- Add to MetaCart
. This paper describes an interactively controlled reduction system --red which may be employed to teach both basic concepts of functional programming and program execution at the undergraduate level, and advanced topics of computer science at the graduate level. --red supports the reduction languages KiR - a sugared versions of an applied --calculus with a full-fledged (type-free) fi-reduction. Functions (-abstractions) are truly treated as first class objects: they may be applied to other functions or to themselves, and -abstractions may be computed as function values. Name clashes are resolved by an indexing scheme similar to de Bruijn indices. Programs may be executed in a stepwise mode and intermediate programs may be displayed in high-level notation. Special pattern matching constructs provide the means to directly specify in KiR complex term rewrite systems. In conjunction with the stepwise execution mode, this feature has been extensively used, in lab courses ac...
Functions, Frames, and Interactions -- completing a λ-calculus-based purely functional language with respect to programming-in-the-large and interactions with runtime environments
, 1998
"... The original aim of the work that led to this dissertation was to extend an existing, purely functional language with facilities for input/output and modular programming. The language is based on an untyped -calculus, i.e., program execution is defined as program transformation according to a fixed ..."
Abstract
- Add to MetaCart
The original aim of the work that led to this dissertation was to extend an existing, purely functional language with facilities for input/output and modular programming. The language is based on an untyped -calculus, i.e., program execution is defined as program transformation according to a fixed set of reduction rules including fi-reduction. Consistently, the implementation comprises an interactive reduction system which is integrated with a syntax-oriented editor: any sub-expression or program result can be submitted for (stepwise) reduction. There is no distinguished main program, no `global' environment and no explicit static part of the language -- in particular, there is no static type system. It is therefore not clear how to add one of the known solutions for input/output or modular programming to such a programming environment. Furthermore, simply adding features to the language would lead to a complex language design with weakly integrated parts, thus losing much of the appe...

