![]() | Sets and Individuals in CYC® |
![]() | Sibling-Disjoint Exceptions |
![]() | Partitioning Collections |
To specify a covering, we use the predicate #$covering, which relates a (set or) collection to a set of (sets or) collections that cover it. We indicate the collections in the covering set by making them arguments of the function #$TheCovering. This function creates a set -- here, an actual #$Set-Mathematical -- that contains the covering subsets. Consider the following example:
(#$covering Z (#$TheCovering D E F))
The collection Z is covered by the collections D, E, and F, which all belong to the set created by #$TheCovering. (Note that #$isa is not the predicate used to relate D, E, and F to the covering set. Since this is a mathematical set rather than a collection, the appropriate relation is #$elementOf.)
Note that the members of the covering set may or may not be subsets of the covered set -- D is a spec of Z, but E and F are not. Note also that the members of the covering set may share elements: R is an instance of both E and F.
The constant S is in a disallowed situation, since it is an instance of Z but it is not an instance of either D, E, or F.
Here is an example usage of #$covering in the KB:
(#$covering #$CreationOrDestructionEvent (#$TheCovering #$CreationEvent #$DestructionEvent))
The somewhat awkward-sounding constant #$CreationOrDestructionEvent is in fact a useful collection because it is used to constrain the arguments for predicates which apply to events which are either creation events, destruction events, or both.