The goal of this Action was to develop the foundations of a programming methodology that brings together characteristics of functional and logic programming. The former is based on lambda calculus, and its results and techniques will be used. From the latter will be incorporated pragmatic advantages such as input/output symmetry (ie procedures that do not distinguish between input and output parameters) and non-determinism. The relationship of such a methodology with object-oriented programming was also considered. .

A unified theory and prototype tools were developed for a programming paradigm based on results from mathematical logic. Extensions of these results and techniques were sought that were suitable for computer science use. Recursive processes within the framework of fixed point theory and inductive definitions were also studied. A number of different notions have been carefully analyzed, and relations between different notions have been defined precisely. There have been three main directions: extensions of the Robinson unification algorithm for the synthesis of various kinds of types for lambda terms, extensions of techniques originating with Herbrand to the framework of linear logic, and unification techniques for the subclass of infinite terms known as rational terms. The mechanization of the proof construction process has been studied by defining adequate tactics. Concerning the additive and multiplicative linear logic (AMLL), considered as a tool to address the topic of logic foundations for parallelism and concurrency, a new algorithm for proof construction from a given sequent has been proposed and proved to be correct, complete and terminating. A new model for distributed computation based on Girard's proof-net for linear logic has been proposed. In this model deadlock-free computation of programs is ensured by purely logical criteria. A unified framework has been inspired from this model. A notion of natural encoding motivated by issues in implementation and partial evaluation has been given. By embedding algebraic or relational structures into a combinatory algebra a notion of computation is adjoined to these structures. Problems concerning interpretation of the notion of type as well as solution of equations in this setting have been investigated. Cumulative fixed points have been considered for giving the semantics of so-called weakly monotone programs, a generalization of the well known class of stratified programs. Fixed-point methods and language theore tic tools have been applied to the optimization of recursive queries in logic programs. The connection between logical parameters and complexity properties has been established. With the aim of extending boundedness results to logic programs with negation, some semantics of negation (eg, cumulative, nondeterministic, well founded, stratified) have been studied; almost all of these semantics are shown to be uncomparable, and known boundedness results are proved to be extensible only to stratified programs. A filter domain for strictness analysis of functional higher order languages has been proposed. The axiomatization of the inclusion relation determined by strictness properties has been proved complete with respect to the interpretation of the basic language in domains. Type inference rules cannot be complete (strictness being an undecidable property), but a complete, non-finitary extension of the type inference system has been found. The use of higher-order types has been proposed for recovering the type preserving property and the definitional genericity principle and for capturing the types of the term synthesis and term analysis features of Prolog.

APPROACH AND METHODS

The work followed three approaches, all firmly rooted in mathematical logic:

-Lambda calculus. Untyped lambda calculus suggests new typing mechanisms and a type-free approach to modularity in functional programming. The well-known Curry-Howard isomorphism establishes a correspondence between proofs and programs and between proof -theoretic methods and modularity issues in typed functional programming.

-Linear logic. Linear logic is a very promising foundation for a programming style based on the symmetry of input/output, non-determinism and a logical treatment of control. In order to study time from a proof-theoretic point of view, a variant of linear logic called non-commutative linear logic has been formulated, in which the exchange rule is treated with the same methodological approach as weakening and contraction in linear logic.

-Fixed-point theory. The recursive aspects of programming are considered in the framework of fixed-point theory and its connection with inductive definitions and formal language theory. This theory will be used in the semantics of programs.

PROGRESS AND RESULTS

-The unification problem has been investigated both to get a better understanding of it and to extend it to various concerns. A number of different notions, vaguely referred to as unification problems, have been carefully analyzed, and relations betweensuch different notions have been defined precisely. As far as extensions are concerned, there have been three main directions: extensions of the Robinson unification algorithm for the synthesis of various kinds of types for lambda terms, extensions of techniques originating with Herbrand to the framework of linear logic, and unification techniques for the subclass of infinite terms known as rational terms.

-In the framework of proofs as programs, the mechanization of the proof construction process has been studied by defining adequate tactics. Concerning the additive and multiplicative linear logic (AMLL), considered as a tool to address the topic of logic foundations for parallelism and concurrency, a new algorithm for proof construction from a given sequent has been proposed and proved to be correct, complete and terminating.

-A new model for distributed computation based on Girard's proof-net for linear logic (interaction nets0 has been proposed. In this model deadlock-free computation of programs is ensured by purely logical criteria. A unified framework has been inspired f rom this model, subsuming well known models of sequential or parallel computations, has been proposed as a general interaction paradigm. A notion of natural encoding motivated by issues in implementation and partial evaluation has been given.

-By embedding algebraic or relational structures into a combinatory algebra a notion of computation is adjoined to these structures. Problems concerning interpretation of the notion of type as well as solution of equations in this setting have been inves tigated.

-Cumulative fixed-points have been considered for giving the semantics of so-called weakly monotone programs, a generalization of the well-known class of stratified programs. Fixed-point methods and language theoretic tools have been applied to the optim ization of recursive queries in logic programs. By considering a logic program as a uniform definition on a class of finite structures, the connection between logical parameters and complexity properties has been established.

-With the aim of extending boundedness results to logic programs with negation, some semantics of negation (e.g. cumulative, nondeterministic, well founded, stratified) have been studied; almost all of these semantics are shown to be uncomparable, and kn own boundedness results are proved to be extensible only to stratified programs.

-A filter domain for strictness analysis of functional higher order languages has been proposed. The axiomatisation of the inclusion relation determined by stricteness properties has been proved complete with respect to the interpretation of the basic la nguage in domains. Type inference rules cannot be complete (stricteness being an undecidable property), but a complete, non finitary extension of the type inference system has been found.

-The use of higher-order types has been proposed for recovering the type preserving property (type variables in an argument type always occur in the result type) and the definitional genericity pronciple (all occurences of a predicate symbol in the concl usion of a clause have the same type) and for capturing the types of the term synthesis and term analysis features of Prolog.

POTENTIAL

A fascinating possibility, encouraged by some existing results, is to obtain a purely logical understanding of "control" aspects of programming (these are usually treated in an ad hoc fashion) and to build programming environments based on such theories.