PROLOG: a language for implementing expert systems

We briefly describe the logic programming language PROLOG concentrating on those aspects of the language that make it suitable for implementing expert systems. We show how features of expert systems such as: (1) inference generated requests for data, (2) probabilistic reasoning, (3) explanation of behaviour can be easily programmed in PROLOG. We illustrate each of these features by showing how a fault finder expert could be programmed in PROLOG. 1.0 AN INTRODUCTION TO PROLOG 1.1 A Brief History PROLOG is a programming language based on Kowalski's procedural interpretation of Horn clause predicate logic (Kowalski 1974,1979). The language was developed and first implemented by Alain Colmerauer's research group in Marseilles (Colmerauer et al. 1973, Roussel 1975). There are now many implementations of the language, of which the most well known is the Edinburgh DEC-10 compiler/interpreter (Pereira et al. 1979). There are also machine coded interpreters for the IBM 370 (Roberts 1977), for the PDP-11 under UNIX (Mellish & Cross 1979), for any Z80 micro running CP/M (McCabe 1980) and for the Apple micro-computer (Kanoui and van Canaghem). Most of the interpreters give execution times of the same order as interpreted LISP, and DEC-10 compiled PROLOG compares favourably with DEC-10 compiled LISP (see Warren et al. 1977 for details). So we are talking about a programming language on a par with LISP with respect to efficiency. At the same time PROLOG provides much of the inference machinery that the expert system implementer has to program up in LISP.