There has been a steady increase recently in research towards systems that can provide assistance with reasoning about a variety of problems. Examples of such systems include operational semantics, lambda calculi, and verification systems for the development of hardware and software.
Such systems must provide a user-friendly, problem-specific environment for the development of formal proofs because they must be usable by programmers and hardware designers who are not experts in logic. A key objective of the research is to understand the relationships among these systems.
The overall aim of the LF Action was to design a proof development environment that is logic-independent, accepting a specification of the logic to be used and yielding a proof development environment for that logic.
Research on logical systems for formal reasoning as programming systems was undertaken. Various formal systems relevant to computer science were designed, investigated and implemented. The formal systems are all centred around typed lambda calculi. The results should provide the software writer with programming environments that facilitate certification of software.
APPROACH AND METHODS
The task of implementing a proof development environment for a given logic is at first sight discouraging, and there is considerable duplication between implementations of different logics. The task can be eased, however, by developing a unifying theory of formal systems.
The "logical framework" is just such a unifying theory: it provides a concise notation and calculus for specifying logics, and will eliminate, to a large extent, the redundancy between implementations, so that systems for a variety of logics can be rapidly prototyped.
The participants experimented with various systems as frameworks in which to conduct formal proofs, including AUTOMATH-related type theories with variants of Church's higher-order logic, and a general system of operational semantics. The experience gainedin such endeavours is among the principal results of the collaboration.
Collaboration among the participants is enhanced by adopting one programming language in which most prototype software is written. This is ML, a functional programming language oriented toward symbolic computation.
PROGRESS AND RESULTS
It appears, on present evidence, that a basic component of a unifying framework is some form of typed lambda calculus. Furthermore, a common feature of implementations is their ability to provide the user with proof-search procedures. The progress made during the first year of the Action is fully reported in the proceedings of the First Workshop on Logical Frameworks, held at Antibes, France in May 1990 and which has now appeared as a book (see below).
The second workshop, held in May 1991 in Edinburgh, was noticeable for the high number of system implementations that were demonstrated. Major implementation efforts comprise LEGO at University of Edinburgh (Calculus of Extended Constructions), Isabelle at University of Cambridge, Coq at INRIA-Rocquencourt (Calculus of Inductive Constructions), and ALF at Gteborg University (Martin-Lf's framework). These four systems permit interactive developments of proofs with machine assistance. Coq contains a program extractor towards ML. The Paris VII group implemented an executable functional specification language PROPRE. The Sophia-Antipolis group uses CENTAUR to develop a generic interface to theorem provers.
In addition to scientific publications, the expected result is a demonstration of the feasibility and usefulness of "developing certified software-in-the-large".
78153 Le Chesnay
CB2 3QG Cambridge
M13 9PL Manchester
OX1 3QD Oxford