This Action aimed at integrating the foundations of functional, logic and object-oriented programming. Some of these combinations have been studied extensively (notably logic and functional programming) while others are much less understood (eg logic and object-oriented programming). A complete integration of the three programming styles is likely to result in a single framework for such disparate issues as higher-order functions and objects, dynamic aspects of object-oriented programming, declarative semantics in a logic programming style, and possibly parallelism.

The foundations of functional, logic and object oriented programming are integrated using an approach involving research into semantics, object oriented languages and calculi.

A selection of results include the following:

an efficient technique for implementing the innermost strategy of narrowing coupled with rewriting; significant progress in the study of conditional term rewriting systems, notably with respect to the modular character of fundamental properties such as confluence and termination;

a generalization of the new approach for the semantics of logic programs to a wider class of language such as constraint logic programming;

design of a simple approach for the study of termination of Prolog program (the proposed method allows one to factor termination proofs into simpler, separate proofs and to automate parts of the proof and moreover, the method is modular);

design of a new framework for carrying out semantic approximations of logic programs consisting of a new base interpretation, methods for constructing abstract interpretations starting from the base interpretation and an algorithm to efficiently compute the approximate meanings;

the definition of the language SPOOL-S, incorporating mechanisms for specifying the external behaviour of objects;

definition and implementation of a polymorphic type system incorporating structural inclusion and record inclusion;

design of an indipendent model theoretic semantics for class template programs based on new notions of interpretation, model and logical consequence;

development of procedural, declarative and fixed points semantics for syntactic and semantic forms of inheritance in logic programming (LP);

development of a general paradigm for asynchronous communication (this enables the design of a general semantic framework covering the whole family of parallel LP languages).

APPROACH AND METHODS

The Action was organised into three work-packages, focusing on the integration of:

-functional and logic programming

-functional and object-oriented programming

-logic and object-oriented programming.

The tasks undertaken within each work-package (ten in total) were selected so that common problems and techniques could be identified. For example, tasks dealing with semantic issues have been defined, devoted to extending the customary declarative semantics for logic programming to subtyping and to parallelism in logic and object-oriented programming respectively.

The research in this Action relied strongly on mathematical methods such as term-rewriting systems, automatic theorem-proving, lambda-calculus, equational theory, domain theory and category theory. As a result of the sound use of these mathematical tools,it was hoped to be able to clarify a number of fundamental issues in the areas of programming language design, formal description and methodology.

PROGRESS AND RESULTS - STATUS AS OF OCTOBER 1991

The Action produced over 40 papers during its second year. A selection of results includes:

-An efficient technique for implementing the inner-most strategy of narrowing coupled with rewriting was elaborated.

-Significant progress was made in the study of Conditional Term Rewriting Systems, notably with respect to the modular character of fundamental properties such as confluence and termination.

-A generalisation was obtained of the new approach for the semantics of logic programs to a wider class of language such as Constraint Logic Programming.

-A simple approach was designed for the study of termination of Prolog programs. The proposed method allows one to factor termination proofs into simpler, separate proofs and to automate parts of the proof. Moreover, the method is modular.

-A new framework for carrying out semantic approximations of logic programs was designed consisting of (i) a new base interpretation (ii) methods for constructing abstract interpretations starting from the base interpretation (iii) an algorithm to effici ently compute the approximate meanings.

-The definition of the language SPOOL-S, incorporating mechanisms for specifying the external behaviour of objects, was completed.

-A polymorphic type system incorporating structural inclusion and record inclusion has been defined and implemented.

-An independent model theoretic semantics for class template programs was designed, based on new notions of interpretation, model and logical consequence.

-Procedural, declarative and fixed points semantics for syntactic and semantic forms of inheritance in LP have been developed.

-A general paradigm for asynchronous communication was developed; this enables the design of a general semantic framework covering the whole family of parallel LP languages.

POTENTIAL

The programming styles of functional, logic and object-oriented programming have potential and actual applications in advanced database systems, symbolic computation, software engineering, parallel architectures, computer-aided design and other fields.