100 likes | 222 Views
Predicates and Denotational Functions. The Basics Arity Argument Types Second-Order Predicates More on Functions. Second-Order Predicates. Sometimes we want to make statements about predicates themselves.
E N D
Predicates and Denotational Functions • The Basics • Arity • Argument Types • Second-Order Predicates • More on Functions
Second-Order Predicates • Sometimes we want to make statements about predicates themselves. • This requires “second-order” predicates, whichcan take predicates as arguments. • Examples : #$arg1Isa, #$arity, #$isa • Thus in (#$arity #$mother 2), #$arity takes the predicate #$mother as its first argument. • Some second-order predicates are used to relate CycL predicates to one another within a predicate hierarchy. . .
#$genlPreds #$genlPreds • (#$isa #$genlPreds #$BinaryPredicate) • (#$arg1Isa #$genlPreds #$Predicate) • (#$arg2Isa #$genlPreds #$Predicate) • (#$genlPreds ?NARROW-PRED ?WIDE-PRED) means that ?NARROW-PRED is a restricted version of ?WIDE-PRED • Any arguments of which ?NARROW-PRED is true are also ones of which ?WIDE-PRED is true. • Predicates related by #$genlPreds can be any arity, as long as they both have the same arity.
#$genlPreds #$genlPreds (continued) • (#$genlPreds #$biologicalMother #$biologicalParents) is(#$implies (#$biologicalMother ?X ?Y) (#$biologicalParents ?X ?Y)) • (#$genlPreds #$createdBy #$startsAfterStartingOf) is(#$implies (#$createdBy ?X ?Y) (#$startsAfterStartingOf ?X ?Y))
#$genlInverse #$genlInverse • (#$genlInverse ?NARROW-PRED ?WIDE-PRED-INV) means that • ?NARROW-PRED is a restricted version of ?WIDE-PRED-INV, • with argument order reversed.
#$genlInverse #$genlInverse • (#$genlInverse ?NARROW-PRED ?WIDE-PRED-INV) means that • ?NARROW-PRED is a restricted version of ?WIDE-PRED-INV, • with argument order reversed. • How would this be expressed in a rule ?
#$genlInverse #$genlInverse • (#$genlInverse ?NARROW-PRED ?WIDE-PRED-INV) means that ?NARROW-PRED is a restricted version of ?WIDE-PRED-INV, with argument order reversed. • How would this be expressed in a rule ? • (#$implies • (?NARROW-PRED ?ARG1 ?ARG2) • (?WIDE-PRED-INV ?ARG2 ?ARG1)) • ?NARROW-PRED and ?WIDE-INV-PRED must be binary predicates. • Example :(#$genlInverse #$customers #$suppliers)
#$negationPreds #$negationPreds • (#$negationPreds ?PRED ?NEG-PRED) means that • if(?PRED ?ARG1 … ?ARGN) • then not (?NEG-PRED ?ARG1 … ?ARGN) • ?PRED and ?NEG-PRED can be of any arity, as long as • they both have the same arity. • Example :(#$negationPreds #$owns #$rents)
#$negationInverse #$negationInverse • (#$negationInverse ?PRED ?NEG-PRED-INV) means that • if (?PRED ?ARG1 ?ARG2) • then not (?NEG-PRED-INV ?ARG2 ?ARG1) • ?PRED and ?NEG-PRED-INV must be binary predicates. • Example:(#$negationInverse #$subordinates #$subordinates)
Summary • Second-Order predicates can be used to express relations between predicates • The four predicates discussed were: • #$genlPreds • #$genlInverse • #$negationPreds • #$negationInverse