Table of Contents

Function Create-Theory

(create-theory <theory-name> <included-theories>
    [:documentation <docstring>]
    [:implementation <target-KR-system-name>]
    [:io-package <lisp-package-name>]
    [:issues <issue-tree>]
    <key-arg-pairs>*)

Defines or modifies an OntoLingua theory. See also DEFINE-THEORY, which is the functional form.

The remaining keyword arguments may occur in any order, and are described below:

:DOCUMENTATION - if supplied, should be a string describing the theory being defined or modified. This string will be stored as the documentation (of type OL:ONTO-THEORY) of the symbol which names the theory.

:IMPLEMENTATION - The value of this keyword argument indicates the desired implementation for the theory to be defined or modified. It may be either a symbol (usually a keyword) which names an implementation, or a list whose first element is such a symbol. If a list, the tail of the list will be included in the init-plist of the CLOS object which represents the theory being defined or modified when it is instantiated or reinitialized, respectively. This provides a convenient way to individually tailor theory instances within a single implementation.

If this keyword is unspecified, the current implementation (see IN-IMPLEMENTATION) will be assumed.

:IO-PACKAGE - The value of this keyword arg should be a package or a symbol or string which names one; this value is put in the IO-PACKAGE slot on the theory object being defined or modified. User interface code which operates on behalf of the theory can then examine this slot for a suggestion of a good package to use when printing and reading.

:ISSUES - The value of this argument should be a Lisp "tree" of strings. The tree can be either a string, or a list of strings, or a list of (<label> <any-lisp-object>) pairs, where <label> is a string or symbol that names the type of the comment. For examples,

   :issues ("This is a footnote about FOO."
            (:example (= (foo ?x) (inverse (bar ?x))))
            ("Why not do it this way?

All other supplied keyword arguments will be spliced into the init-plist of the CLOS object which represents the theory being defined of modified when it is instantiated or reinitialized, respectively.