The PHOENIX Action aimed to develop the technologies necessary to fully exploit the features of declarative programming languages. These languages have many advantages for software development over imperative languages because of their sound mathematical foundations. The objective is to incorporate the functional and logic programming paradigms within one language and implementation framework. In order to achieve complete and practical solutions, the integration of these paradigms was investigated at all levels: the specification of programs and large systems description; the transformation and refinement of programs; and at the level of the underlying abstract machines.
The technologies necessary to make a practical declarative programming language were developed by studying combinations of the most important approaches to the design and implementation of such languages. These were investigated at all levels (ranging from language definitions to the underlying abstract machines) in order to provide a practical method of mapping high level system descriptions onto efficient implementations for a range of target machines.
Based on a systematic classification of existing declarative languages the PHOENIX design space (PDS) was developed using assertional programming. The mathematical semantic foundations of languages were expressed in terms of general logics, and the constrained deduction calculus was designed to provide a general framework for investigating the computational models of integrated languages.
2 new declarative programming paradigms have been developed, constraint functional logic programming designing using semantics based integration methodology and guarded functional programming with lazy streams (GFP).
In parallel with the language design space, a design space of abstract machines has been developed to implement PDS languages and a general computational model has been proposed for the implementation of constraint based languages.
The JUMP machine has been designed and a GFP language (Guarded TermML) has been implemented based on the JUMP machine.
The classification of exisiting type and module systems led to the development of AIAS, a language independent system for expressing higher order parameterization and abstraction.
Further important results include a characterization of program transformations as inductive proofs in the framework of the PDS extensions of GFP.
APPROACH AND METHODS
In the first phase, current technology has been evaluated in order to identify the subjects which need further development. This concerns all three levels of the hierarchical approach adopted. In particular, attention is being focused on:
-A classification of the language concepts of declarative programming paradigms including the semantic models behind them, and the relations between them. This classification will lead to the "Phoenix Design Space", a general framework for studying and d eveloping declarative languages.
-An evaluation of existing type and module systems for supporting programming in-the-large.
-An evaluation of transformation technologies.
-An evaluation of existing abstract machines for declarative languages and of techniques for systematic derivation of abstract machines from formal language descriptions.
In the second phase, the insights obtained are used to carry out concrete work in language design, transformation technology, and abstract machine design. The whole programme of work is supported by a case-study, where different languages will be used to implement a sample problem. The different implementations were evaluated in order to reveal the strengths and weaknesses of the various design techniques.
PROGRESS AND RESULTS
-Based on a systematic classification of existing declarative languages, the PHOENIX Design Space (PDS) takes a uniform view of declarative programming languages by developing the notion of assertional programming. The mathematical semantic foundations o f languages are expressed in terms of general logics, and the constrained deduction calculus is designed so as to provide a general framework for investigating the computational models of integrated languages.
-Two new declarative programming paradigms have been developed. Constraint Functional Logic Programming has been designed by means of a semantics based integration methodology which directly evolved from the PDS. In contrast, Guarded Functional Programmi ng with Lazy Streams (GFP*) has been developed pragmatically driven by the needs which became apparent through the case study.
-In parallel with the language design space, a design space of abstract machines has been developed which supports all features necessary to implement PDS languages. In addition, a general computational model has been proposed for the implementation of c onstraint based languages.
-The JUMP machine has been designed, which supports reduction, narrowing, and SLD-resolution, and simplified versions of two functional abstract machines which make lambda-lifting unnecessary. A GFP* language (Guarded TermML) has been implemented based o n the JUMP machine.
-The classification of existing type and module systems led to the development of AIAS, a language-independent system for expressing higher order parameterisation and abstraction.
-Further important results include a characterisation of program transformations as inductive proofs in the framework of the PHOENIX Design Space, extensions of GFP* to support concurrency and interaction by means of temporal logic annotations, an extend ed non-deterministic lambda-calculus as a uniform operational model for integrated languages, and a specification formalism for abstract machines which allows rapid prototyping of machines (Update Plans).
The integration of declarative programming paradigms will benefit software development because it promises powerful descriptive capabilities, the availability of formal manipulation and transformation rules, and the potential for parallel execution. The improvements in descriptive capabilities and the development of efficient implementation will significantly increase the availability and reliability of the declarative paradigm for practical applications. The unification of the two main approaches to declarative programming will, in addition, stimulate the two separate schools of research through the cross-fertilisation of ideas.
Funding Schemeundefined - undefined
SW7 2BZ London
6525 ED Nijmegen