The concept of an expert system covers an increasingly large group of software packages which often have more dissimilarities than points in common. We shall not attempt to give a precise definition of an expert system here, because this might impose too restrictive a framework on the rest of our discussion. We shall simply state that, as is generally recognized, an expert system is a piece of software intended to resolve a certain category of problems, that it uses for this purpose a large quantity of knowledge specific to the field in question, and that in each expert system there is a very distinct separation between this knowledge and the procedures which make use of it.