Informal minutes of IFIP Working Group 2.1
60th meeting, Pajaro Dunes, California, USA
Sunday 2005-05-22 to Thursday 2005-05-26

Contents of this page:    Administrative matters  |  Technical presentations
(Last updated 19th July 2005.)


Organizational and administrative matters

List of attendees

Members: Observers:

Membership (Thu 2005-05-26, 09:05)

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


Next meetings (Thu 2005-05-26, 09:50)

Meeting 61
This will be organized by Lambert Meertens, in Antalya in Southern Turkey, between 27th and 31st March 2006, to coincide temporally and spatially with a total solar eclipse.

Meeting 62
This will be organized by Michel Sintzoff, in either mid-December 2006 or mid-January 2007, probably in the Ardennes.

Meeting 63
This should be held around October 2007. The chairman will ask a couple of people whether they are willing to organize it.


Algol68 Genie (Thu 2005-05-26, 10:20)

Marcel van der Meer has been developing Algol68 Genie, an interpreted nearly full implementation of Algol68 as specified by the Revised Report, extended with Charles Lindsey's partial parameterisation proposal. The Mark 7 version has just been released.


Formal resolution (Thu 2005-05-26, 10:25)

The members of WG2.1 and the observers present at the 60th meeting at Pajaro Dunes, California wish to thank Allen Goldberg of Kestrel Technology for bringing us to these serene surroundings of sand, surf and sun -- a pacific peace punctuated only by the plaintive protestations of the prowling puss.

Unusual as it is for a kestrel to play host to a flock of shorebirds, we found a bountiful suite of hospitality, good food and plenty of it.

Our explorations led us -- without major mishap -- on a zigzag course, and allowed us to take a new tack and view our position from a wider perspective.



Technical presentations

Note: presentation summaries were prepared by the speakers.


Presentation: Hinze, Finger Trees: The Swiss Army Knife of Data Structures (Sun 2005-05-22, 10:50)

I presented 2-3 finger trees, a functional representation of sequences supporting access to the ends in amortised constant time, and concatenation and splitting in time logarithmic in the size of the smaller piece. Representations achieving these bounds have appeared previously, but finger trees are much simpler, as are the operations on them. Further, by defining the split operation in a general form, we obtain a general purpose data structure that can serve as a sequence, priority queue, search tree, priority search queue and more.
See slides and paper. This is joint work with Ross Paterson.


Presentation: Glück, A Program Inverter Based on Parsing Methods (Sun 2005-05-22, 14:05)

Program inversion is a fundamental concept in program transformation. We describe the principles behind an automatic program inverter for a first-order functional language and show the inversion of several programs produced by our system. The core of the system uses a stack-based language, local inversion, and eliminates nondeterminism by applying methods from LR(0) parsing. Joint work with M.Kawabe.
See paper.


Presentation: Jeuring, Transforming Types (Sun 2005-05-22, 15:45)

Information is often organized in a structure used to store, edit, view and search data. This structural information can be described by a type (or schema). There are many applications in which we want to view values of a certain type as values of other types, or transform types to other types. In this talk I give several example situations in which you need type transformations, and I discuss a generic program which, given two types, returns the minimum cost (or distance) transformation between these types.
The slides are available.


Discussion: Gibbons, Canonical Object-Oriented Programs (Sun 2005-05-22, 16:30)

I often feel the need for `canonical examples' of particular programming paradigms: convincing examples that show the advantages and/or capture the essence of that paradigm. I might want such examples for cocktail party conversation (to explain to laypersons what I do), or for illustrations for students (to clarify the differences between paradigms), or as case studies for testing out new techniques (for example, deriving OO programs). I can easily construct such examples for functional programming, imperative programming, algebraic specifications, and so on; but I don't really have any for object-oriented programming. Why is that?

I proposed a variety of explanations and answers.

Participants suggested some other answers.

The discussion was lively, but my initial desires have not been completely satisfied.


Presentation: Smith, Policy Enforcement and Refinement (Mon 2005-05-23, 09:10)

No abstract provided.
The slides are available.


Presentation: Gibbons, Streaming for Tail-Recursive Programs (Mon 2005-05-23, 11:05)

At Meeting 58 in Rome, I talked about Streaming algorithms or metamorphisms: the fused composition of an unfold after a fold, and useful for various change-of-representation problems. However, the theory I had then was specific to lists. I think I now see how to generalize it; the key observation is that the fold stage should be tail-recursive. I reported on this generalization.
The slides are available.


Presentation: Hehner, Specified Blocks (Mon 2005-05-23, 11:55)

This talk argues that specified blocks have every advantage over the combination of assertions, preconditions, postconditions, invariants, and variants, both for verifying programs, and for program development. They are simpler, more general, easier to write, and they make proofs easier.
The slides are available.


Presentation: Goldberg, Eagle and its Application to Software Fault Protection (Mon 2005-05-23, 14:10)

We present a rule-based framework for defining and implementing a range of finite trace monitoring logics, including future and past time temporal logic, extended regular expressions, real-time logics, interval logics, forms of quantified temporal logics, and so on. Our logic, Eagle, is implemented as a Java library and involves novel techniques for rule definition, manipulation and execution. Monitoring is done on a state-by-state basis, without storing the execution trace. We explained some subtle features of the algorithm and described its application to software fault protection.
The slides are available.


Presentation: Glück, A Program Inverter Based on Parsing Methods, Part 2 (Mon 2005-05-23, 16:15)

No abstract provided.

See paper.


Presentation: Swierstra, Explicit Implicit Parameters (Mon 2005-05-23, 16:45)

No abstract provided.


Presentation: Coglio, Toward Certifiably Correct JavaCard Applets (Tue 2005-05-24, 09:15)

This talk describes AutoSmart, an automatic generator of smart card applets that is being developed at Kestrel Institute. AutoSmart generates programs in Java Card (a version of Java tailored to smart cards) from applet specifications written in SmartSlang, a domain-specific language (also being developed at Kestrel Institute as part of this project) that features high-level constructs for smart card concepts. Before generating the code, AutoSmart performs several consistency checks on the SmartSlang specification, some of which involve automated reasoning. The talk also describes an approach to formally certify the correctness of the generated code (with respect to the input specification) independently from AutoSmart, relying on a very small checker only.
The slides are available.


Presentation: Pepper, Self Healing for Bluetooth (Tue 2005-05-24, 11:00)

No abstract provided.


Presentation: Errington, Deriving a Refinement Calculus (Wed 2005-05-25, 09:10)

No abstract provided.


Presentation: Smith, Access Control Policies and their Enforcement (Wed 2005-05-25, 10:15)

No abstract provided.


Presentation: Liu, Incrementalization across Object Abstraction (Wed 2005-05-25, 11:30)

Object abstraction supports the separation of what operations are provided by systems and components from how the operations are implemented, and is essential in enabling the construction of complex systems from components. Unfortunately, clear and modular implementations have poor performance when expensive query operations are repeated, while efficient implementations that incrementally maintain these query results are much more difficult to develop and to understand, because the code blows up significantly and is no longer clear or modular.

This paper describes a powerful and systematic method that first allows the ``what'' of each component to be specified in a clear and modular fashion and implemented straightforwardly in an object-oriented language; then analyzes the queries and updates, across object abstraction, in the straightforward implementation; and finally derives the sophisticated and efficient ``how'' of each component by incrementally maintaining the results of repeated expensive queries with respect to updates to their parameters. Our implementation and experimental results for example applications in query optimization, role-based access control, etc. demonstrate the effectiveness and benefit of the method.

(This work continued from a talk I gave in the NYC meeting but it has grown significantly: starting with a simple high-level language, completely free of complicated Java stuff; with transformations specified in a powerful rule language; with analysis worked out for sets and objects; and with a prototype, exciting applications and experiements. I mainly discussed these new apsects. The tech report version has been accepted by OOPSLA 2005.)


Presentation: Liu, Querying Complex Graphs (Wed 2005-05-25, 14:05)

This talks presents a novel language for querying complex graphs where graph edges may have labels that may have parameters. These graphs easily and naturally capture complex interrelated objects in object-oriented systems and XML data. The language is built on extended regular path expressions, and is easier to use and has greater expressive power than previous query languages. We also describe how to transform queries in this language into Datalog with limited extensions, and how to generate specialized algorithms and complexity formulas from Datalog programs with these extensions.
This ongoing work also generalizes our work on parametric regular path queries that appeared in PLDI 2004, but we do not yet have extensive applications and experiments like in the PLDI paper. See technical report.


Presentation: Desharnais, State-Feedback Control of Discrete Event Systems (Wed 2005-05-25, 14:55)

In 1987, Ramadge and Wonham have initiated a successful approach to the control of discrete event systems (DES). DES are modelled by languages or automata over an alphabet of symbols denoting the events. Control can be language-based (observing events and forbidding some event sequences) or state-based (observing states and forbidding some of them).

The talk was about using Kleene algebra with domain (KAD), an extension of Kleene algebra, for calculating controllers for DESs under partial observation. I showed how results of Takai, Kodama and Ushio (1995 to 1998) can be reproduced and generalised. The main generalisations are that the results apply to nondeterministic DES and to arbitrary observability relations (not only equivalence relations). KAD leads to these generalisations without any additional effort.

Because the results are proved in a calculational style, they can more easily be checked than those of standard presentations.


Discussion: Green, Bootstrapping SpecWare (Wed 2005-05-25, 15:45)

No abstract provided.


Discussion: Goldberg, Policies, Software Fault Protection and Recovery-Oriented Computing (Thu 2005-05-26, 11:05)

No abstract provided.



Working documents

855 PAJ-1
Johan Jeuring. Transforming Types (copy of slides).

856 PAJ-2
Jeremy Gibbons. Streaming for Tail-Recursive Programs (copy of slides).

857 PAJ-3
Glück R., Kawabe M. Derivation of deterministic inverse programs based on LR parsing. In: Kameyama Y., Stuckey P.J. (eds.), Functional and Logic Programming. Proceedings. LNCS 2998, 291-306, 2004.

858 PAJ-4
Ralf Hinze. Finger Trees: The Swiss Army Knife of Data Structures (slides).

859 PAJ-5
Ralf Hinze. Finger Trees: The Swiss Army Knife of Data Structures (paper).

860 PAJ-6
Yanhong A. Liu, Scott D. Stoller, Michael Gorbovitski, Tom Rothamel and Yanni Ellen Liu. Incrementalization across Object Abstraction (technical report).

861 PAJ-7
Yanhong A. Liu and Scott D. Stoller. Querying Complex Graphs (technical report).

862 PAJ-8
Doug Smith. Policy Enforcement and Refinement (slides).

863 PAJ-9
Rick Hehner. Specified Blocks (slides).

864 PAJ-10
Allen Goldberg. Runtime Verification and Software Fault Protection with Eagle (slides).

865 PAJ-11
Alessandro Coglio. Toward Certifiably Correct Java Card Applets (slides).



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