(University Crest)

Foundations of Programming Meetings 1997

School of Computer Science and IT
University of Nottingham

Speakers; Abstracts.


Speakers 1997

13th January, Benedict Gaster, University of Nottingham.
A simple semantics for qualified types.

20th January, Anthony Daniels, University of Nottingham.
An introduction to RBMH.

27th January, Paul Blampied, University of Nottingham.
Multiple state-threads within a pure functional language.

3rd February, Colin Taylor, University of Nottingham.
The pi-calculus and its relation to the lambda-calculus.

10th February, Group discussion.
Induction over functions (Colin); Rewrite rules (Paul); Natural numbers (Ben).

24th February, Benedict Gaster, University of Nottingham.
Proof principles for inductive types.

3rd March, Graham Hutton, University of Nottingham.
A fix for left-recursive parsers.

10th March, Colin Taylor, University of Nottingham.
Reasoning about stream processors.

28th April, Colin Taylor, University of Nottingham.
Introducing Pict.

6th May, Paul Blampied, University of Nottingham.
Categorical computation with relations.

12th May, Anthony Daniels, University of Nottingham.
Implementing real-valued functions for ODE's.

19th May, Group discussion.
Brainstorming session: bring along your unsolved problems.

3rd June, Group discussion.
Preparation for ICFP'97.

12th June, Group discussion.
Review of ICFP'97: five go mad in Amsterdam.

4th July, Colin Taylor, University of Nottingham.
Playing games for semantics: An introduction.

11th July, Paul Blampied, University of Nottingham.
Monads reduced to monoids.

6th October, LAP Group, University of Nottingham.
Introductory session.

13th October, Colin Taylor, University of Nottingham.
Congruence proofs for bisimulation equivalences.

20th October, Claus Reinke, University of Nottingham.
On functional programming, language design, and persistence .

27th October, Louise Dennis, University of Nottingham.
Proof planning coinduction.

3rd November, Benedict R. Gaster, University of Nottingham.
Type specialisation for the lambda calculus.

10th November, Colin Taylor, University of Nottingham.
Formalising and reasoning about Fudgets.

24th November, Dick Crouch, University of Nottingham.
Linear logic for context dependency in natural language.

1st December, Louise Dennis, University of Nottingham.
Corecursion.

Abstracts 1997

13th January, Benedict Gaster, University of Nottingham.
A simple semantics for qualified types.

The semantics of qualified types has previously been defined in terms of a translation into the second order polymorphic lambda-calculus, supported by a coherence result stating that although there may be many translations for a given term, they are in some sense equivalent. Though a reasonable solution, it depends on the fact that a suitable model is constructed for the polymorphic lambda-calculus.

A model for the polymorphic lambda-calculus requires structures suitable for modelling impredicative polymorphism, which, in light of the fact that qualified types supports only predicative polymorphism, seems a strong requirement. In this talk, we present an alternative semantics for qualified types. Extending previous results of Ohori, we present a simple semantics for qualified types in terms of the simply typed lambda-calculus. Exploiting well-known results for logical relations and the simply typed lambda-calculus, we develop a parametricity theorem for qualified types with respect to our original semantics.

20th January, Anthony Daniels, University of Nottingham.
An introduction to RBMH.

RBMH is a language for creating interactive animations on PCs. It is implemented in Haskell, and uses Haskell as a host language so that animations are actually Haskell programs. The declarative style of programming appears to be well suited to animation. I will give some indications as to why this is so. I will also describe in detail some simple examples in RBMH and then demonstrate them. This will help to show that the approach makes the construction of animations very easy and concise. The main concepts will be introduced, and some implementation considerations discussed.

RBMH is an interesting application in itself, but also has relevance to functional programming in general by addressing questions in semantics, interaction, interfacing with other technologies, modularity, type systems and compile-time optimization.

The RBMH system is being developed by Conal Elliott at Microsoft Research, and in collaboration with Nottingham, Yale and Glasgow Universities.

27th January, Paul Blampied, University of Nottingham.
Multiple state-threads within a pure functional language.

In recent years state transformers have been used to provide a structured and efficient implementation of state within pure functional programs. However, programs written using this method can only exploit "single-threaded" state, that is, there is one mutable state value of a fixed type that is threaded through the program. In practice this means that all variables are global.

I approach the problem of state within the context of describing simple data-flow networks. This raises problems as individual components within the network might require their own _local_ state, but must still be able to be combined to form larger components. I describe combinators for constructing these networks that allow the programmer the clarity, safety and modularity of local variables, with the resulting programs being automatically transformed to a single state-thread.

3rd February, Colin Taylor, University of Nottingham.
The pi-calculus and its relation to the lambda-calculus.

The pi-calculus is a model of concurrent computation whose central concept is that of the channel name. In the earlier calculus CCS, values and channels are different entities. This distinction is not made in the pi-calculus, and results in extra expressive power. In this tutorial talk I will give examples to illustrate the polyadic version of the pi-calculus, and describe the monomorphic type system for this calculus developed by Turner. I will also present Ostheimer and Davie's encoding of the call-by-value lambda-calculus, thus illustrating how the pi-calculus can be considered a superset of the lambda-calculus.

24th February, Benedict Gaster, University of Nottingham.
Proof principles for inductive types.

The Girard/Reynolds calculus of polymorphic functions, also known as system F, provides a general framework for the representation of inductive types, for example the natural numbers. In this talk we highlight the correspondence between the inductive types of system F and the propositions of second-order logic, in particular that well known inductive proof principles arise as a natural consequence of inductive types.

3rd March, Graham Hutton, University of Nottingham.
A fix for left-recursive parsers.

One of the attractions of building functional parsers using combinators is that the structure of parsers closely follows the structure of the underlying grammars. Unfortunately, this is not true for left-recursive grammars, which must either be transformed to eliminate the left-recursion, or re-expressed using special combinators. In this talk I will show that left-recursion does not in fact present a problem, provided that the correct fixpoint operator for parsers is used. Some prior exposure to the theory of fixpoints will be assumed, but all the necessary definitions and results will be summarised.

This talk is based upon an idea by Philip Wadler.

10th March, Colin Taylor, University of Nottingham.
Reasoning about stream processors.

Conceptually, stream processors are concurrent processes with a number of input and output streams. Networks of such processors have applications in a variety of areas, including simulation of systems, mechanisms for I/O in functional languages, and the high-level construction of graphical interfaces. Developing equational theories for stream processors based on implementations in deterministic functional languages can give misleading results. In this talk we develop a simple language of stream processors, whose semantics is specified by translation into the pi-calculus. We avoid misleading results in the equational theory by using bisimulation as a notion of semantic equivalence.

28th April, Colin Taylor, University of Nottingham.
Introducing Pict.

Milner, Walker, and Parrow's pi-calculus has been proposed as a fundamental calculus of processes in the same way that the lambda calculus is considered a fundamental calculus of functions. A lot of programming languages have been based upon the lambda calculus, and so, dually, it is interesting to ask what a programming language based upon the pi-calculus would look like. Pierce and Turner have developed such a language, called Pict. In this talk I will give an introduction to Pict, and concentrate on the derived constructs in the language that allow Pict programs to be written at a high level, as opposed to the low level nature of the pure pi-calculus. Examples of Pict programs will be used extensively to explain the language's features.

6th May, Paul Blampied, University of Nottingham.
Categorical computation with relations.

Category theory is a very natural setting for thinking about functions and functional programming, but some extra work is required to extend functions to the more general notion of relations. I will describe one approach to modelling the relational calculus in a categorical setting, and show the importance and problems of calculating 'pullbacks' in the evaluation of relational expressions using this approach.

12th May, Anthony Daniels, University of Nottingham.
Implementing real-valued functions for ODEs.

Real-valued functions and ordinary differential equations (ODEs) are useful for describing behaviors in (continuous) animation but they are also used in many other domains. Our work on functional animation has introduced some interesting ideas in this area which may be worth exploring independently, in a more general setting. In this talk I will describe the problem of representing real-valed functions, how numerical methods for solving ODEs work, and a neat representation for ODEs.

19th May, Group discussion.
Brainstorming session: bring along your unsolved problems.

Paul: Genetic programming for countdown;
Ben: Type inference for cyclic types;
Graham: Non-structural induction over trees;
Colin: Structural congruences in the pi-calculus;
Tony: Modelling behaviours functionally;
Mark: Reasoning about an abstract machine.

4th July, Colin Taylor, University of Nottingham.
Playing games for semantics: An introduction.

Game semantics is an approach to specifying the semantics of programming languages through the ideas of game theory. In this talk I will give an introduction to the basic concepts in this field. The semantics of programming language constructs such as constants, functions, state, and control operators will be illustrated using games. Constraints can be placed on the strategies used to play the games and these correspond closely to certain programming disciplines. These constraints will be explained and used to describe a "semantic cube".

11th July, Paul Blampied, University of Nottingham.
Monads reduced to monoids.

Monads are a concept from category theory that have applications in many areas of computing. In this talk I will explain how the concept of a monad can be viewed in terms of the simpler set-theoretic concept of a monoid. More technically, I will explain how a monad in a category C can be defined to be a monoid in the functor category C^C.

6th October, FOP Group, University of Nottingham.
Introductory session.

This is the first meeting of the Autumn term. Each member of the group will present a 5-minute overview of their recent and current work, addressed to a general audience.

13th October, Colin Taylor, University of Nottingham.
Congruence proofs for bisimulation equivalences.

Bisimulation is a standard technique for defining equivalences for concurrent languages. We can reason equationally about programs if such bisimulations are congruences. The proof of these congruences for bisimulations on higher-order calculi, and weak bisimulations tend to be significantly complex. In this talk I will discuss a technique that simplifies these proofs and was first proposed by Howe. Using a simple arithmetical language I will illustrate the basic concepts involved in his method.

20th October, Claus Reinke, University of Nottingham.
On functional programming, language design, and persistence.

The principles of abstraction, correspondence, and data type completeness have been proposed to guide and evaluate the design of general purpose languages in the late 1970s. I argue that these semantic principles for language design can be particularly useful for the design of extensions to purely functional languages. After evaluating a simple functional core language with respect to the design principles, I focus on language extensions, using module systems and i/o-facilities as examples. Following the principles, we are led to a simple, yet expressive extended language. It turns out that the final language design demands support for orthogonal persistence.

Comments: The core of this talk has been given at IFL'97. It addresses a fairly general audience and presents some afterthoughts on my Ph.D. work. I will try to extend the parts describing my work and the context in which I have been working.

27th October, Louise Dennis, University of Nottingham.
Proof planning coinduction.

Several proof tools have been developed to aid coinductive proofs but nearly all require user interaction. Crucially they require the user to supply an appropriate relation which the system can then prove to be a bisimulation (a relation of observationally equivalent objects).

Proof planning is an approach to automated theorem proving that aims to extend the current tactic based systems with proof methods, which may involve heuristics, to guide tactic application. Proof planning has been successfully applied to the area of inductive theorem proving. This talk aims to outline the basic ideas behind proof planning with reference to the planning of coinductive proofs.

3rd November, Benedict R. Gaster, University of Nottingham.
Type specialisation for the lambda calculus.

In this talk we describe a technique called type directed specialisation, which has recently been proposed as a new paradigm for partial evaluation. We show that an interpreter for the simply typed lambda calculus, which operates on a universal type, can be specialised such that all type tags are removed (e.g. run-time type checking is avoided).

This talk is based upon a recent paper by John Hughes.

10th November, Colin Taylor, University of Nottingham.
Formalising and reasoning about Fudgets.

Fudgets is a toolkit for developing graphical applications in the functional language Haskell. In this talk I will describe the basics of a formal theory of Fudgets based upon ideas from concurrency theory. The theory is useful for reasoning about programs written in Fudgets, and also for verification of Fudget implementations. Some simple examples of using the theory for reasoning will be illustrated.

24th November, Dick Crouch, University of Nottingham.
Linear logic for context dependency in natural language.

The interpretation of natural language utterances typically depends on the context of utterance, and also has effect of updating that context. This talk looks at using a fragment of linear logic as a tool for formally modelling context update in natural language.

The work, which is the result of collaboration with Josef van Genabith, extends the glue language approach of Mary Dalrymple and colleagues. This uses a fragment of linear logic as a meta-level glue language, determining how the object-level meanings of individual words and constituents may be stuck together. Dalrymple's work does not address context dependent aspects of meaning, but the resource sensitivity of linear makes it well suited for modelling various forms of update.

1st December, Louise Dennis, University of Nottingham.
Corecursion.

Corecursion is a definition principle that is commonly described as the dual of recursion. This talk will review various discussions of corecursion and various attempts at providing a formal definition of what corecursion is. I shall also discuss the need for corecursive definitions in coinductive proof and the connection between non--termination and corecursion. This talk will raise several questions about corecursion which it won't answer, hopefully at the end there will be time for some discussion of those questions.