The RHET System: A Sequence of Self-Guided Tutorials [report]

James F. Allen, Bradford W. Miller
1991 unpublished
The RHET system is a knowledge representation tool that is intended to support the development of advanced prototype natural language understanding and planning systems. It is what is currently called a "hybrid" representation, which consists of a set of separately defined specialized reasoning systems that are presented to the user within a single uniform framework. It can be used as a hornclause based theorem proving system, or it can be used as a rich frame-based representation, or used in
more » ... y way falling between these styles of use. The primary specialized reasoning components include a type hierarchy system, an equality reasoning system, a temporal reasoning system, and a hierarchical context mechanism that support reasoning about different agent's beliefs as well as hypothetical reasoning. This report provides a sequence of tutorials each demonstrating a major feature of the system. The RHET system is a knowledge representation tool that is intended to support the development of advanced prototype natural language understanding and planning systems. It is what is currently called a "hybrid" representation, which consists of a set of separately defined specialized reasoning systems that are presented to the user within a single uniform framework. It can be used as a hornclause based theorem proving system, or it can be used as a rich frame-based representation, or used in any way falling between these styles of use. The primary specialized reasoning components include a type hierarchy system, an equality reasoning system, a temporal reasoning system, and a hierarchical context mechanism that support reasoning about different agent's beliefs as well as hypothetical reasoning. RHET is built in Common Lisp [Steele, 1990] and has many features and options. This report provides a sequence of tutorials each demonstrating a major feature of the system. The first section introduces RHET. 1, a subset of RHET that can be viewed as a variant of PROLOG, and is the basis for all subsequent sections. Once you are familiar with the RHET.1 and RHET.2 subsets, most of the other tutorials can be examined independently of the others. This way, you can become familiar with the features of RHET that you are interested in without having to read through many other features that are not of interest. Each tutorial presents the new concepts, defines the syntax for the new parts of the RHET, describes the basic functions in the user interface, presents examples that illustrate the new techniques and capabilities, and finally describes any other functions and built-in predicates that are useful in certain applications. Appendix A describes how to install and run RHET in the Symbolics environment and in Allegro Common Lisp. Further details on RET can be found in the reference manual [Miller 1990a ] and the programmer's guide [Miller 1990b ]. Like PROLOG, RHET offers a range of special operators that are useful for making certain operations more convenient and for introducing control commands. This section reviews the common operators that can be found in most PROLOGs. Unless explicitly mentioned, these operators are not assertable, i.e., they cannot be added to the database. For example, it would make no sense to add axioms and facts defining [Cut] to the database. But, of course, [Cut] can appear in axioms that are added to the database. [And Forml ... FormN] This is true iff all the forms can be proven. And evaluates its arguments in the order supplied and short-circuits evaluation if possible. Thus any form following a form that fails will not be evaluated. The null form [And] automatically succeeds. If [Cut] is encountered as a form, backtracking past it cuts out of the entire And, but not necessarily the entire rule. [Bound Term] Succeeds only if the specified term is a bound variable. It fails on any other term such as an unbound variable or a constant. Thus if ?x is bound to [Fool, then [Bound ?x] will succeed, whereas [Bound ?y] and [Bound [Foo]] will fail. Note that [Bound ] differs from [Unless [Var ]] on how they treat constants. [Cond (TestForm ActForml ... ActFormn)*) This expression is like the Lisp COND statement, the first testForm to succeed results in its ActForms being proven. For example, [COND ([pli [all [a2]) ([p2] [a3])] is equivalent to [OR [AND [pl] [CUT] [all [a2]] [CUT] [AND [p2] [CUT] [a3]]].
doi:10.21236/ada248960 fatcat:naukiercujeulbkzgben7m5nxu