POLY: Declarative Programming with Concurrency and Mobility


Project Code
  34398/2000
Project Title
  POLY: Declarative Programming with Concurrency and Mobility
Research Unit
  CENTRO DE INFORMÁTICA E TECNOLOGIAS DA INFORMAÇÃO - CITI
Principal Researcher
  Luís Caires
  Luis.Caires@di.fct.unl.pt
Team Members
  Luís Caires
  Margarida Mamede
  Artur Miguel Dias
  Pedro Barbosa
  José Pacheco
  Hugo Vieira (BIC)
  Vera Pereira (BIC)
Summary
  An ongoing research issue concerns the integration of declarative specification styles into programming languages. Declarative programming has been most successful in modelling transformational processes, as witnessed by "pure" logic and functional programming. Nevertheless, any comprehensive programming model must address not only transformational, but also reactive aspects of systems, like interaction, concurrency and mobility.

The integration of such aspects into declarative programming languages has often been made by "disjoint sum" of features. Consequently, the interaction between the various aspects, whose design took place in altogether different settings, must be carefully analysed, since their joint consistency cannot automatically be taken for granted. Another approach consists in making use of some foundational calculus and developing high-level languages on top of it. This is the case of ML, based on the typed lambda calculus. Likewise, the pi-calculus [M99] has recently motivated several interactive programming languages that unify aspects of OO and functional programming with concurrency and mobility [P98,L99]. Moreover, some connections between the pi-calculus and proof-search in linear logic can motivate even more encompassing models, integrating action and deduction.

Along this lines, the candidate PI for this project introduced [C96] and studied [C98,C99] LPI, which is a core programming calculus that unifies, in a uniform and tightly coupled way, the deduction-oriented computational model with a pi-calculus-like model of interaction. Despite its simplicity and uniformity, LPI is very expressive. Besides integrating logic programming and interactive computation (on which functional and OOP can be embedded as idioms [M99]) in a natural way, the LPI model separates transformational localized computations from global interactive ones, unlike other declarative concurrent programming languages. LPI expressions define interacting agents, which perform encapsulated transformational computations inside elementary steps. LPI programs are built from a few constructs: "messages", "commands", and "definitions", which are combined by concurrent composition and name restriction. Expressiveness of LPI results essentially from a generalised prefix construction available in commands and definitions, that combines multiway pattern matching and encapsulated search.

This project focuses on the design and implementation of a concrete programming language based on the LPI model. The main motivation for LPI is not just to define an expressive specification formalism, but also to develop a real programming and coordination language. Such an effort is a requirement for a practical evaluation and dissemination of the LPI model. A reasonably efficient implementation is a goal to attain: one has reasons to believe that the structured nature of LPI computations will be a major simplification factor, when compared with languages that require global propagation of constraints. Moreover, since abuse of idioms tends to weaken the readability of programs, some effort must also be placed in the conception of appropriate high-level programming language constructs, fundamentally in what concerns multi-paradigm programming. It is expected that the development and analysis of LPI programs will support the forthcoming design issues.
   

 

Project Resources (Software, POLY Examples)