1 The Never-Ending Quest for Programming Paradigms

This paperproposes a synthetic presentation of the Proof Co nstruction paradigm, which underlies most of the research a nd development in the so-called “logic programming” area. Two essential aspects of this paradigm are discussed here: true nondeterminism et partial information. A new formulation of Fo cussing, the basic property used to deal with non-determini s in proof construction, is presented. This formulation is th en used to introduce a general constraint-based technique c apable of dealing with partial information in proof construction. One of the baselines of the paper is to avoid to rely on syntax t o describe the key mechanisms of the paradigm. In fact, the bipolar decomposition of formulas captures their main stru cture, which can then be directly mapped into a sequent syste m that uses only atoms. This system thus completely “dissolve ” the syntax of the formulas and retains only their behaviou ral content as far as proof construction is concerned. One step f urther is taken with so called “abstract” proofs, which diss olves in a similar way the specific tree-like syntax of the proofs th emselves and retains only what is relevant to proof construc tion. keywords: Linear Logic, Proof Construction, Ludics, Focussing Proofs, Constraint Propagation, Tableau Methods 1 Motivation 1.1 The Never-Ending Quest for Programming Paradigms An important part of theoretical computer science is intere sted in providing a mathematical-logical foundation to pro gramming “paradigms”. The most successful attempt in this respe ct is based on the functional interpretation of proofs captu red by the Curry-Howard isomorphism, which provides a steady fo undation to the so called functional programming paradigm. However, a large — and growing — number of applications do not fit well in this paradigm. Indeed, one of its essential features is that it is concerned with programmes meant to end and return a result. The cut-elimination procedure (and the strong normalisation theorem) give a convenient abstracti on of what is going on in the execution of such programmes. But many pieces of software do not fall in that category. What wou ld be the “end” and “result” of the execution of an operating system (except for a crash, as users of a popular operating sy stem may believe). Examples of this kind abound: take for instance an air-traffic control system which ensures that pl ane routes do not collide, or an electronic commerce broker, whose role is to mediate between a set of service and good providers , and a set of customers. Closer to everyone’s daily practise is the case of a Web browser which organises the interaction bet ween a client and a set of servers on the Internet. This kind of applications is gaining a huge momentum with the extraordinary development of the Internet. Their main characteristic is that instead of taking some input and retu rning a result, they are concerned with the coordination of e ntiti s (customers, providers, planes, etc.) which are external to them, and with which they have to continuously interact. The point here is not to say that the intuitions behind the fun ctio al programming paradigm are totally inadequate for th e class of applications mentioned above. Obviously, an opera ting system or an electronic commerce broker will need, at so me points in their execution, to launch a process to perform a fu nctional computation that takes input, executes during som e time as a black box and produces output. But the functional pr ogramming paradigm does not capture the overall picture of the behaviour of the application. It ignores a number of esse ntial characteristics of these applications, in particula r true nondeterminism, or the manipulation of partial information, n ot to mention a huge set of deeply woven issues such as securit y, robustness etc. Robustness, for instance, is not just a nice feature to have in an application such as an air-traffic contr ol system; it is an absolute requirement, almost the “raison-d ’être” of the application, and any programming paradigm wh ich would try to capture the computational essence of this appli cation without taking into account this aspect is deemed to f ail. Obviously, the quest for new programming paradigms will nev er end, since new abstract programming issues will always arise, calling for new foundations. Even trying to integrat e in a single paradigm major issues that exist today (some of t hem have been mentioned above) is, to say the least, premature. I n this paper, we are interested in the proof-theoretic found ation of