Functional programming languages of the ML family such as Standard ML, Concurrent ML and Facile have provided the framework of my research so far. These languages are known for their expressive power due to higher-order programming constructs, well-definedness of their computational model and the presence of sophisticated type systems which provide security through type safety in the contexts of sequential and concurrent computation. My doctoral research was motivated by the idea that adopting the principles of functional computation can give rise to well-founded and secure mobile code languages which also enable rigorous reasoning about programs.
As a departure point in the exploration of functional mobile computation,
I defined a simple language, Mobile-
, which integrates a
functional core with channel-based communication. In this language
functions are first class values which can be transmitted
between different sites in a system. This leads to a natural support for code
mobility since functions are code containing computational objects.
My primary interest has been to exploit the methodology of annotated
type and effect systems to expose and analyse the behaviour of
Mobile-
programs. Static estimation of potentially mobile
functions and distributed call-tracking analysis are among the
problems which I considered in the earlier stages of my research. The
information obtained by such static analyses can be put to use in
compiler-optimisations.
More recently, I have been investigating notions of secure
information flow for functional mobile computation in multi-user
systems where users and data may be of different trust
and sensitivity levels. This involves adapting relatively
well-established notions such as non-interference to the
context of functional mobile computation and investigating novel
notions which are particularly relevant to mobile functions. My work on the language Confined-
introduces a confidentiality
property called "confinement in a mobility region". By using Confined-
a user can create a confidential piece
of information and declare the subsystem in which this information is
allowed to flow freely. Such a subsystem is called a mobility region
and is declared by providing the required annotations. The type system of
the language makes use of these annotations to guarantee that
well-typed programs cannot leak the confidential information to the
parties outside the designated mobility region.
In general, my work requires an understanding of theoretical models of functional and mobile computation as well as an awareness of the practical challenges of computing in modern distributed systems. In the near future, I intend to work on transforming the meta-language nature of the languages I have designed to arrive at realistic intermediate languages such as those employed within state-of-the-art compilers. I am also interested in exploring the connections of my work with object oriented mobile code languages which take objects rather than functions as basic mobile units.