(University Crest)

Foundations of Programming Meetings

School of Computer Science and IT
University of Nottingham

Speakers; Abstracts; Further Information.

The Foundations of Programming group holds regular research meetings. The meetings last around an hour, and are intended to be a friendly forum for discussion and exchange of ideas. Most meetings take the form of a talk by a group member or an invited speaker, but we also have various kinds of discussion sessions. The meetings are open to everyone, not just members of the group. Please contact Neil Ghani if you are interested in visiting the group and giving a talk.

Details of previous years meetings are also available: 1995; 1996; 1997; 1998; 1999; 2000; 2001; 2002. 2003. 2004. 2005. 2006.

Details of recent and upcoming meetings are given below.


Speakers 2007

Friday the 2nd of February, 2pm, C1
Roland Backhouse, University of Nottingham
Category Theory = Coherently Constructive Preorder Theory

Friday the 9th of February, 2pm, C60
Sven-Bodo Scholz, University of Hertfordshire
Dynamic Typing + Partial Evaluation = Static Typing?!

Friday the 16th of February, 2pm, C1
Dirk Pattinson, Imperial College
Compositional Reasoning in Heterogeneous Modal Logics

Friday the 23rd of February, 2pm, C1
Graham Hutton
What is the Meaning of These Constant Interruptions?

Friday the 2nd of March, 2pm, C1
Satnam Singh, Microsoft Research
Lava: Optimizing Circuit Layout for FPGAs

Friday the 9th of March, 2pm, C1
Rasmus Mogelberg, University of Edinburgh
Relational Parametricity for Computational Effects

Friday the 23rd of March, 2pm, C60
Thorsten Altenkirch, University of Nottingham
Indexed Containers

Friday the 2nd of Novemeber, 3pm, C1
Mauro Jaskelioff, University of Nottingham
Modularity of Functional Operational Semantics

Friday the 2nd of Novemeber, 3pm, C1
Mauro Jaskelioff, University of Nottingham
Modularity of Functional Operational Semantics

Friday the 9th of Novemeber, 3pm, C60
Aleksandar Navevski, Harvard University
Towards a language design for modular software verification

Friday the 16th of Novemeber, 3pm, C1
Rawle Prince, University of Nottingham
Proving Properties about lists using Containers

Friday the 23rd of Novemeber, 3pm, C1
Robert Atkey, Edinburgh University
Algebraic Semantics of Typed Effects

Friday the 30th of Novemeber, 3pm, C1
Randy Pollack, Edinburgh University
Locally nameless representation and nominal Isabelle

Friday the 7th of December, 3pm, C1
Monika Seisenberger, Swansea University
Program Extraction Revisited

Abstracts 2007

Friday the 2nd of February, 2pm, C1
Roland Backhouse, University of Nottingham
Category Theory = Coherently Constructive Preorder Theory

This talk reveals a closely kept secret of category theory, namely that it is "just" the theory of preorders made constructive. Knowing the secret affords an extremely beneficial separation of concerns, which helps considerably in understanding categorical concepts. I will demonstrate this seperation of concerns by constructing an isomorphism between List.(A+B) and List.A x List.(B x List.A) using coherently constructive fixed-point calculus (aka the calculus of initial algebras). (Thorsten's talk at the away day was about the particular case then B is the unit type.)

Friday the 9th of February, 2pm, C60
Sven-bodo Scholz, University of Hertfordshire
Dynamic Typing + Partial Evaluation = Static Typing?!

When programming with arrays, the most common domain error encountered is out-of-bound selection. Unfortunately these errors cannot be statically detected unless either the source language is substantially restricted or the type system is rendered undecidable. In the context of Single Assignment C (or SaC for short) we have taken a different approach. We do not restrict the source language but we partially evaluate programs in order to avoid runtime checks. It turns out that we can statically approximate to what extent programs need to be evaluated in order to give certain runtime guarantees. Using these approximations, we can define several different type systems which require different levels of program specialisation in order to give different levels of soundness guarantees.

Friday the 16th of February, 2pm, C1
Dirk Pattinson, Imperial College
Compositional Reasoning in Heterogeneous Modal Logics

State-based systems and the modal logics for reasoning about them often heterogeneously combine a number of features such as non-determinism and probabilities. Here, we show that the combination of features can also be reflected algorithmically and develop modular decision procedures for heterogeneous modal logics. We start by reviewing coalgebraic semantics for modal logics, which provides a common ground for a large class of modal logics and then focus on synthesising decision procedures for heterogeneous logics that combine a number of different features.

Friday the 23rd of February, 2pm, C1
Graham Hutton, University of Nottingham
What is the Meaning of These Constant Interruptions?

Asynchronous exceptions, or interrupts, are important for writing robust, modular programs, but are traditionally viewed as being difficult from a semantic perspective. In this talk we present a simple, formally justified, semantics for interrupts. Our approach is to show how a high-level semantics for interrupts can be justified with respect to a low-level implementation, by means of a compiler and its correctness theorem. In this manner we obtain two different perspectives on the problem, formally shown to be equivalent, which gives greater confidence in the correctness of our semantics. (Joint work with Joel Wright.)

Friday the 2nd of March, 2pm, C1
Satnam Singh, Microsoft Research
Lava: Optimizing Circuit Layout for FPGAs

This presentation provides an introduction to the Lava system for compact and efficient structural circuit design for FPGAs. The Lava system is a collection of Haskell libraries which specifies a domain specific language for composing the interconnection and layout of gates. The system makes extensive use of higher order combinators to specify combinators that can generate new composite circuits in a way which that not possible with conventional languages like VHDL and Verilog. We give an example of a high speed sorter circuit based on Batcher's bitonic merger (and hopefully hardware demo). Finally, we show how close one can encode a Lava-like language in an imperative language like C# which now has limited support for lambda expressions ("delegates").

Satnam's Homepage

Lava Page

Friday the 9th of March, 2pm, C1
Rasmus Mogelberg University of Edinburgh
Relational Parametricity for Computational Effects

According to Strachey, a polymorphic program is parametric if it applies a uniform algorithm independently of the type instantiations at which it is applied. The notion of relational parametricity, introduced by Reynolds, is one possible mathematical formulation of this idea. Relational parametricity provides a powerful tool for establishing data abstraction properties, proving equivalences of datatypes, and establishing equalities of programs. Such properties have been well studied in a pure functional setting. Real programs, however, exhibit computational effects. In this paper, we develop a framework for extending the notion of relational parametricity to languages with effects. This is joint work with Alex Simpson.

Friday the 23rd of March, 2pm, C60
Thorsten Altenkirch University of Nottingham
Indexed Containers

Inductive datatypes like lists can be understood as initial algebras and dually coinductive datatypes like streams correspond to terminal coalgebras. We (Michael Abbott, Neil Ghani, & myself) have introduced the theory of containers to construct such datatypes and also to be able to reason about the generically. In my talk I am going to review the theory of containers and then discuss the question how to extend it to inductive families (like the typed lambda terms). This is ongoing work with Neil Ghani, Peter Hancock, Peter Morris and Conor McBride sometimes summarily referred to as Midlands Containers Ltd.

Friday the 2nd of November, 3pm, C1
Mauro Jaskelioff University of Nottingham
Modularity of Functional Operational Semantics

Modularity is the key to designing and reasoning about large systems. Because of the lack of a clean theory of operational semantics the question of its modularity has long remained unanswered. In this I talk, I will present Turi's mathematical operational semantic using Haskell, and then propose an answer to the question of its modularity. The proposed solution is based on a structure which has already proved to be fundamental in modular denotational semantics : monads.

Friday the 9th of November, 3pm, C60
Aleksandar Nanevski Microsoft Research
Towards a language design for modular software verification

In this talk, I will explore some choices that arise if one wants to design a programming language from scratch, with the intention of supporting software verification.

I will describe Hoare Type Theory (HTT) which integrates a dependently typed higher-order language, with Hoare-like specifications for reasoning about mutable state and pointer aliasing. The lack of this integration in the past has arguably been one of the most significant obstacles in the application of Hoare-style verification methodology, since it prevented effective reasoning about constructs for data abstraction, information hiding, and code reuse.

From the technical standpoint, it is interesting that the design of HTT relates in an essential way some of the most venerable ideas from language theory , which have so far largely existed in isolation, like Dijkstra's predicate transformers, Curry-Howard isomorphism, monads, as well as the more recent idea of Separation Logic.

We have formally proved that HTT is modular, in the sense that the verification of individual program components suffices to establish the correctness of the whole program. HTT is also (almost) conservative over the programming practice in modern functional languages; if the verification features are not used, HTT very much looks like core Haskell.

I will discuss the implementation of HTT (called Y-not) which is currently under way, as well as the possibilities for scaling HTT to support further programming features.

Friday the 16th of November , 3pm, C1
Rawle Prince University of Nottingham
Proving Properties about lists using Containers

Some years ago, Alan Bundy and Julian Richardson presented a technique for representing and reasoning about lists using ellipsis. Although successful, this technique had various limitations. In this talk, I will recap this technique, highlight its limitations and show how they can be addressed via Containers. I will then discuss how such a container-based system is implemented.

Friday the 23rd of November , 3pm, C1
Robert Atkey Edinburgh University
Algebraic Semantics of Typed Effects

I will talk about a way to give a useful denotational semantics to type and effect systems. I will show how to extend Plotkin and Power's interpretation of effectful programs as elements of a free universal algebra to incorporate type information that restricts the effects that are allowed at any point in the program.

By relating this typed semantics to the usual untyped semantics I will show how to derive useful program equivalences permitted by the type system. These equivalences have previously been proved using an extensional relational semantics by Benton, Kennedy, Hofmann and Beringer. This method provides an intensional method of proving such equivalences that extends easily to other kinds of effects.

Friday the 30th of November , 3pm, C1
Randy Pollack Edinburgh University
Locally nameless representation and nominal Isabelle

The idea that bound variables and free (global) variables should be represented by distinct syntactic classes of names goes back at least to Gentzen and Prawitz. In the early 1990's, McKinna and Pollack formalized a large amount of the metatheory of Pure Type Systems with a representation using two classes of names. This work developed a style for formalizing reasoning about binding which was heavy, but worked reliably. However, the use of names for bound variables is not a perfect fit to the intuitive notion of binding, so I suggested (1994) that the McKinna--Pollack approach to reasoning with two species of variables also works well with a representation that uses names for global variables, and de Bruijn indices for bound variables. This \emph{locally nameless} representation, in which alpha equivalence classes have exactly one element, had previously been used in Huet's Constructive Engine and by Andy Gordon. The locally nameless representation with McKinna--Pollack style reasoning has recently been used by several researchers (with several proof tools) for solutions to the POPLmark Challenge.

In this talk I discuss the current state of play with locally nameless representation and suitable styles of reasoning about it. Using Urban's nominal Isabelle package, it is possible to get the boilerplate definitions and lemmas about freshness of names and swapping/permuting names for free. From nominal Isabelle and other work there are new appraches to proving the strengthened induction principles that reasoning with names requires. There are also some downsides to the new ideas, which I will point out.

Friday the 7th of December, 3pm, C60
Monika Seisenberger Swansea University
Program Extraction Revisited

This talk will give an overview of the technique for extracting computational content from proofs emphasising the gab between the pure method that works in principle and refined techniques that can be applied to nontrivial examples with practically useful results. We will focus on programs from classical proofs involving choice principles and further show how program extraction can be successfully applied to algorithm verification.


Further Information

Meetings are normally held on Fridays at 3 p.m. in room C1 in the School of Computer Science on the Jubilee Campus. On-line directions to the Jubilee Campus are available, and our address is as follows:
School of Computer Science and IT
University of Nottingham
Jubilee Campus, Wollaton Road
Nottingham NG8 1BB
United Kingdom