Informal minutes of IFIP Working Group 2.1
56th meeting, Ameland, The Netherlands
Monday 2001-09-10 to Friday 2001-09-14

Contents of this page:    Administrative matters  |  Technical presentations
(Last updated 2nd November 2001.)


Organizational and administrative matters

List of attendees

Members: Observers:

Membership (Fri 2001-09-14, 09:20)

This discussion was for members only, and is not recorded in these public minutes.


Formal resolution (Fri 2001-09-14, 11:00)

The members of IFIP WG2.1 and the observers present at the 56th meeting on Ameland, The Netherlands, wish to express their gratitude to Johan Jeuring of Utrecht University and his assistants, for hosting us in this splendid venue, still reverberating with the echoes of the renowned STOP summer schools (``f map map'').

We are appreciative of the careful planning that caused the one day of good weather to coincide with our study of Dutch marine lifeforms - the more so since, in order to perform the aforesaid study, the group had to brave climatic conditions on an up-and-duin bike ride.


Next meetings (Fri 2001-09-14, 11:05)

Working Conference
Schloss Dagstuhl, Germany, a Working Conference on Generic Programming. This will be in combination with the next Mathematics of Program Construction conference; the two will be three days each in the week 8th to 13th July 2002. Dagstuhl will handle most of the local organization; Bernhard Möller will act as local contact, and liaison with MPC. The working conference co-chairs are Johan Jeuring and Jeremy Gibbons.

There will be no ordinary meeting attached to the Working Conference; it was decided that the one-day meeting at Le Bischenberg had not been a success. Therefore the Working Conference will not be numbered in the usual sequence.

Meeting 57
This will be on the east coast of the United States, probably Sunday 30th March to Thursday 3rd April. (It was decided to shift the meeting by one day, both to allow for cheaper flights because of a Saturday night stay, and to avoid commuter traffic on Sunday and Friday nights.)

The local organizers will be Robert Dewar and Annie Liu. Three possible venues were discussed:

All three possibilities sounded equally attractive to the group, so the local organizers will explore all of them further.

Meeting 58
This is due in Europe, around the end of 2003 or the start of 2004. We did not discuss the date or organizer.


TC2 issues (Fri 2001-09-14, 11:30)

Armando Haeberer, chair of TC2, has distributed to WG2.* chairs a proposal for strengthening ties between the working groups. In the first instance, this will involve each WG chair nominating one member representing each research trend in the group. Each representative will produce a six-page `vertical draft' document about their trend, by February 2002. These vertical drafts will later be analyzed into `horizontal drafts', covering all trends in TC2. Horizontal and vertical drafts will be discussed by their authors at a TC2 meeting adjacent to the IFIP Congress in Montreal in August 2002, and the results will form the basis of a TC2 Working Conference adjacent to the following IFIP Congress in Jerusalem in September 2004.

The WG2.1 chair will consider the trends represented in the group, and nominate one author for each.


Book in honour of Bob Paige (Fri 2001-09-14, 11:40)

Alberto Pettorossi is planning a book in honour of Bob Paige (as described in the minutes of Meeting 54). Olivier Danvy is also planning a special issue of Higher Order and Symbolic Computation dedicated to Bob Paige, which has already received a number of contributions. It is proposed to merge the two initiatives, and further contributions are still welcome. In principle, two kinds of papers may be submitted: either a research paper or a human aspects paper.



Technical presentations

Note: presentation summaries were prepared by the speakers.


Presentation: Bird, Tiling a chessboard (Mon 2001-09-10, 10:00)

No summary received yet.


Presentation: Liu, From recursion to iteration (Mon 2001-09-10, 11:15)

Transforming recursion into iteration eliminates the use of stack frames during program execution. It has been studied extensively. This talk describes a powerful and systematic method, based on incrementalization, for transforming general recursion into iteration: identify an input increment, derive an incremental version under the input increment, and form an iterative computation using the incremental version.

Exploiting incrementalization yields iterative computation in a uniform way and also allows additional optimizations to be explored cleanly and applied systematically, in most cases yielding iterative programs that use constant additional space, reducing additional space usage asymptotically, and run much faster. I will summarize major optimizations, complexity improvements, and performance measurements. An initial surprise we found is that the classical tail recursive factorial function that uses an accumulating parameter can be slower than the recursive version, even though it eliminates the stack overhead.

This is joint work with Scott Stoller. The slides are available as a working document.


Presentation: Trichina, Problems in cryptography (Mon 2001-09-10, 12:15)

No summary received yet.


Presentation: Meertens, CONSONA: Constraint Networks for the Synthesis of Networked Applications (Mon 2001-09-10, 14:05)

Consider a large, possibly heterogeneous collection of `nodes' having some (typically modest) computing power, and some of which are equipped with sensors or actuators. Large here means up to 100,000 nodes. Nodes can communicate `locally'. Both nodes and communication can fail. The problem is: How can we program such a collection to realize real-time fault-tolerant and adaptive distributed applications? The new Consona project at Kestrel Institute tries to develop model-based methods and tools for the goal-oriented design and synthesis of such applications and services.

The slides are available.


Presentation: Backhouse, Abstract interpretations for free (Mon 2001-09-10, 14:45)

Abstract interpretation is a technique for safely approximating the behaviour of computer programs. It is used widely in compiler optimisation and, increasingly, as a basis for model checking. Theorems for free is a technique for deriving properties of parametrically polymorphic functions from their type. This talk is about combining abstract interpretations with theorems-for-free. We introduce the use of Galois connections in abstract interpretations and we show how given base Galois connections can be extended to Galois connections of arbitrary type. It is then shown that theorems-for-free establishes the safety of the abstract interpretations.

This is joint work with Kevin Backhouse. The slides are available, as is a paper.


Presentation: Hinze, The derivative of a functor (Mon 2001-09-10, 16:00)

No summary received yet.


Presentation: Doelstra, First Class Rules and Generic Traversals for Program Transformation Languages (Mon 2001-09-10, 16:55)

This talk reported on work from my master's thesis:
The subject of this thesis is the construction of programming languages suitable for the implementation of program transformation systems. First class rules and generic traversals are especially useful in such languages. Stratego, a language specifically intended for program transformations, supports these features, but is untyped and impure.

In this thesis we develop a pure non-strict functional language called RhoStratego, incorporating features from Stratego. First class rules are obtained through the equivalent of Stratego's left-biased choice operator. This approach is not only useful to strategic programming, but is also more powerful than existing proposals to extend pattern matching, such as views and pattern guards. Stratego's generic traversal primitives are implemented through a more fundamental mechanism, the application pattern match, whereby constructed values can be deconstructed in a generic and typeable fashion. We present the syntax and semantics of the language, as well as the semantics of a strict variant.

Furthermore, we have developed a type system for RhoStratego, which consists of the Hindley-Milner type system extended with rank-2 polymorphism and typing rules to support generic traversals. The type system is powerful enough to allow, and ensure the safety of, type unifying and type preserving generic transformations. We have implemented a type checker that infers all types, except rank-2 types for which annotations must be given.

The slides are available, as is the thesis on which the talk was based.


Presentation: de Moor, Paths for regular expressions (Tue 2001-09-11, 09:00)

No summary received yet, but the slides are available.


Presentation: Gibbons, Superposition as a calculus for components (Tue 2001-09-11, 09:50)

[HYPERBOLE ON...] Object-oriented programming has failed to live up to its promises of reuse and compositionality: implementation inheritance breaks encapsulation. Component-oriented programming, based on composition and delegation rather than inheritance and overriding, is the way to go. [...HYPERBOLE OFF.]

Various groups researching in software architecture, coordination languages, and distributed systems have proposed the separation of computation and coordination as a paradigm for component-oriented programming. Computation is achieved by old-fashioned sequential components; coordination of these components is achieved by the superposition of connectors (first-class entities in their own right) onto the components. Maibaum and Fiadeiro, among others, have shown how to make formal sense of the resulting configurations using pushouts or colimits.

We explain the ideas and motivation, and show how superposition captures exactly what visual application development environments do with technologies like JavaBeans. This is very definitely work in progress.


Presentation: Hinze, Functorial Unparsing (Tue 2001-09-11, 11:10)

Danvy has shown how to implement a variant of C's printf function in a statically typed language. We present a new solution to this problem based on the notion of a functor. Our solution enjoys nice algebraic properties and is more direct than the original one. Along the way, we encounter singleton types, type-indexed values, type-indexed types, multiple-parameter type classes, and functional dependencies.

The slides and a paper are available as working documents.


Presentation: Bird, Inverting the Burrows-Wheeler Transform (Tue 2001-09-11, 11:55)

No summary received yet, but the paper was published in the Haskell Workshop, 2001.


Presentation: Möller, Greedy-like algorithms in Kleene Algebra (Tue 2001-09-11, 14:00)

This continues the talk I gave at the Cochabamba meeting.

There a recursion scheme for Greedy-like algorithms was based on a a general notion of a `part-of-relation' in monoids. It turns out that this can be generalized in two ways:

Matroids require a fairly strong closure assumption. Therefore they have been generalized to greedoids; these, too, can be dealt with in a simpler fashion using Kleene algebra.


Presentation: Gibbons, When is a function a fold or an unfold? (Tue 2001-09-11, 15:15)

At WG2.1 Meeting 55, I presented necessary and sufficient conditions for when a total function can be written as a fold or as an unfold. I gave a complicated set-theoretic proof of the result.

Since then, we have generalized the result to partial functions as well. I presented ugly set-theoretic proofs of both results, and an elegant relational proof of the result for total functions.

I didn't know how to adapt the elegant relational proof to the result for partial functions. Roland Backhouse showed how to simplify what I had, but we still can't complete the proof.

This is joint work with Graham Hutton and Thorsten Altenkirch.


Presentation: Löh, Parsing Permutation Phrases (Tue 2001-09-11, 16:40)

A permutation phrase is a sequence of elements (possibly of different types) in which each element occurs exactly once and the order is irrelevant. Some of the permutable elements may be optional. We show a way to extend a parser combinator library with support for parsing such free-order constructs. A user of the library can easily write parsers for permutation phrases and does not need to care about checking and reordering the recognised elements. Possible applications include the generation of parsers for attributes of XML tags and Haskell's record syntax.

This is just work with Arthur Baars and Doaitse Swierstra. An implementation is available on the web. The slides and a paper are also available.


Presentation: Wile, More on tiling the chessboard (Tue 2001-09-11, 17:15)

Pursuing a suggestion by Ernie Cohen, I presented a brief generalization to Richard Bird's board tiling presentation suitable for tiling arbitrary boards with tiles of arbitrary shapes, stated in the relational calculus. I believe it went something like: let E be the empty board relation, P the relation between legal board positions - the left board is the right board with more tiles on it - and F the full board relation. Obviously, the predicate F Sn E must hold (for some n) for each legal tiling. Then using Richard's formulation, namely that we seek Q = SP where S is a subrelation of the identity, we now want to establish that F Qn E holds for some value of n. Such a sequence of Qs is referred to as a safe partial tiling. No solution based on this specification was proposed, but it should admit to alternative tiling strategies to that used by Richard, even when specialized to the dominos and chess board.


Presentation: Pardo, Comonad-based accumulations (Mon 2001-09-10, 09:10)

No summary received yet.


Discussion: Dewar, Building reliable software (Wed 2001-09-12, 16:05)

This was a presentation on typical industry procedures for generating safety critical certified software.


Presentation: Trichina, Reconfigurable hardware (Thu 2001-09-13, 09:05)

No summary received yet.


Presentation: Cohen, Omega Algebra and Concurrency Control (Thu 2001-09-13, 10:00)

I presented an introduction to omega algebra (an extension of Kleene algebra to omega-regular languages) and its use in the transformation of concurrent programs.


Presentation: Lämmel, Generic Programming in Haskell with Applications to Refactoring (Thu 2001-09-13, 11:45)

This presentation is concerned with typed generic higher-order functions of the following kind:
  1. The functions can be applied to terms of any type,
  2. they admit generic traversal into subterms, and
  3. they also admit type-safe dynamic update.
These properties are sufficient to define generic function combinators, especially combinators representing traversal schemes. We discuss two models of such generic functions within Haskell. One model is based on universally quantified parameters of datatype constructors. The other one makes hidden use of a universal representation type in a completely safe manner. In both cases, we rely on a very simple term interface.

By contrast, the required form of genericity cannot be achieved with top-level quantified polytypic type parameters as present in PolyP or Generic Haskell. Type cases required for generic function update (see 3 above) are also not supported in those languages.

We present a combinator library for generic functions. We employ our style of generic programming for program transformation, namely for the encoding of program refactorings.

A paper draft, the combinator library and generative support for the term interface is readily available at the Strafunski project web page. This is joint work with Joost Visser.


Presentation: Pepper, Notes on Designing Advanced (Functional) Languages (Thu 2001-09-13, 14:25)

The realm of this presentation is ``basic concepts for the design of programming languages''. We consider it as the major challenge of future research on language design to combine the benefits of different successful paradigms -- e.g. functional programming, object-oriented programming, logic programming -- into a common development framework. Ideally, such a framework should also acknowledge modern developments in Software Engineering such as patterns, components, and software architecture. And all this should be accomplished without creating monstrous languages like Algol68, PL/1 or Ada.

Evidently, such a wish list is easy to formulate but hard to realize. But we believe that it provides a valuable direction for our future research efforts.

In this talk we present some facets of our work towards this goal. To this end, we try to elaborate the most fundamental design issues in the development of languages. In doing so, we concentrate on three topics: Typing, modularization with scoping, and the integration of state into a functional view. (The talk concentrates on the first one of these issues.) It turns out that a few basic principles indeed suffice to describe a whole plethora of well-known programming features. This gives hope that an orthogonal language design is possible, which achieves a considerable portion of the above-mentioned goals.


Presentation: Pardo, C5: A C extension with dependent types (Thu 2001-09-13, 16:05)

No summary received yet.
This presentation concerns work by Juan José Cabezas.


Presentation: Desharnais, Matrices over a Kleene algebra (Thu 2001-09-13, 16:20)

It is well-known that the set of square matrices whose entries come from a Kleene algebra themselves form a Kleene algebra. Varying-size matrices can also be handled, giving heterogeneous Kleene algebras. In addition, it is known that such matrices can be used to represent automata.

We recall the operations that can be applied to such matrices, including residuation and domain. We also present examples showing how automata are represented, and how modal formulae can be interpreted over a matrix by means of algebraic expressions involving the given matrix.

The main insight of the talk is that matrices of types (i.e., elements below 1) are relations, to which the standard relational operators can be applied. Two applications of this fact are presented:

The talk concludes by describing the problem of controller synthesis, where all the concepts presented come together. It is hoped that these concepts will help finding elegant solutions to the problem.

The slides are available as a working document.


Presentation: Möller, Oege's problem: yet another view (Thu 2001-09-13, 17:10)

No summary received yet.


Presentation: Bird, Walking the DAWG (Thu 2001-09-13, 17:20)

No summary received yet.



Working documents

809 AME-1
Annie Liu. From recursion to iteration (slides).

810 AME-2
Ralf Hinze. Functorial Unparsing (slides).

811 AME-3
Ralf Hinze. Functorial Unparsing (article), in pdf and compressed postscript.

812 AME-4
Ralf Lämmel and Joost Visser. Typed Combinators for Generic Traversal .

813 AME-5
Roland Backhouse. Abstract Interpretations for Free (slides).

814 AME-6
Lambert Meertens. CONSONA: Constraint Networks for the Synthesis of Networked Applications (slides).

815 AME-7
Oege de Moor. Paths for regular expressions (slides).

816 AME-8
Arthur Baars, Andres Löh and Doaitse Swierstra. Parsing Permutation Phrases (slides).

817 AME-9
Arthur Baars, Andres Löh and Doaitse Swierstra. Parsing Permutation Phrases. In Haskell Workshop 2001.

818 AME-10
Eelco Doelstra. First Class Rules and Generic Traversals for Program Transformation Languages (slides).

819 AME-11
Eelco Doelstra. First Class Rules and Generic Traversals for Program Transformation Languages (Master's Thesis).

820 AME-12
Jules Desharnais. Matrices over a Kleene Algebra (slides).

821 AME-13
Kevin Backhouse and Roland Backhouse. Abstract Interpretations for Free (slides).



Jeremy Gibbons (email: Jeremy.Gibbons@comlab.ox.ac.uk)