Domain layer knowledge about the specific domain the expert system
Meta-Interpretation 255
As noted in Section 1.8, the idea of explicit metalevel control systems which may themselves be programmed first arose in the context of production rule systems, where it was possible that in a given situation more than one rule could fire. In this case, the potential set of rules that can fire is termed the conflict resolution set and the mechanism for picking one rule to fire from these is termed conflict resolution. Early production systems had simple built-in implicit strategies, just as Prolog had a built-in control order. OPS [Forgy and McDermott, 1977], for example, gives a preference to the rule which matches with the most recent additions to working memory and then to the rule with the greatest number of conditional elements. One of the first systems to give an explicit control over selection of rules in conflict resolution was TEIRESIAS [Davis and Buchanan, 1977; Davis, 1980], which gave the ability to specify which rule to select by a set of metarules. As these metarules took the same format as the object-level rules, the possibility of meta-metalevel rules to govern them and so on existed, though Davis did not find any need for levels of rules above the metalevel.
• • • • |
---|
In intelligent agent systems, multiple layers of control are also a common form of structuring [Malec, 1994]. For example, a system developed in Sweden to give intelligent assistance to drivers [Morin et al., 1992] has three layers:
• • • |
|
---|
256 Chapter 8
does not involve domain knowledge would be one that stated that the rule with the largest number of conditions to match should always be tried first. Metarules like this, which simply specify a search order without reference to the domain or solely in terms of the representation at the metalevel, may be considered essentially as a way of structuring the interpreter. In a concurrent language, an important application of this layering of interpreters is to have an interpreter which provides an abstract layer of virtual parallelism [Burton and Huntbach, 1984]. The applications program interpreted itself by a meta-interpreter maps the virtual parallelism onto a real parallel architecture [Taylor et al., 1987]. Annotations such as those we have described for priority and codemapping may be considered as a simple metalanguage that breaks through to the mapping meta-interpreter. Prolog’s cut may be considered a similar sort of notation which breaks through the control-free model of clause resolution in logic to a separate control mechanism, thus accounting for the difficulty of modeling it in a meta-interpreter.