![]() | Sets and Individuals in CYC® |
![]() | Sets Defined by Internal CYC® Functions |
![]() | Exercises About Sets And Elements |
Examine the term #$performedBy, an instance of #$BinaryPredicate. It has the following assertions:
(#$arg1Isa #$performedBy #$Action) (#$arg2Isa #$performedBy #$Agent)
These assertions specify the domain and range of #$performedBy, the collection whose instances can be its first argument and the collection whose instances can be its second argument. So we can only use #$performedBy to specify some agent which performs some action.
Because every argument of every predicate in CYC® has type constraints, the space of valid assertions is radically reduced.
Examine #$Action and #$Agent, noting the #$genls assertions for each. They each include #$Individual, not #$Collection. #$performedBy is therefore a relation between individual things. It would be incorrect to assert:
(#$performedBy #$Walking #$Fred)
Because #$Walking is a collection which is a subset of #$Action, not an individual which is an instance of #$Action.
(Incidentally, while there are plenty of predicates which relate individuals to collections, Cyc's representation philosophy has a bias towards the relations between individual things. In the final analysis, events and objects in the world are individuals and we must first and foremost be able to describe the relations between them.)