The implementation of the Generic Frame Protocol for the THEO FRS [] has the following characteristics.
The behaviors supported by the THEO back end are as follows:
We expect future versions of this implementation to support defaults, since these are provided by THEO\ itself.
Use KB class theo-kb to build THEO KBs.
One of the major tasks in supporting the protocol for THEO was to add support for multiple KBs, since THEO supports only a single global KB. The current implementation of the protocol does track the (single) KB file in which each frame resides. However, all THEO\ frames reside in a single name space (although COMMON LISP packages can be used to overcome this limitation).
Another extension to THEO that is supported within the protocol is the maintenance of inverse relations, although this capability is not yet fully documented.
THEO supports an additional constraint facet called :lisp-predicate. Its value is the name of a function to call with the arguments frame, slot, values, kb. That function should return non-nil to indicate a constraint violation. If the value returned is a string, it will be treated as an error message.