CONSISTENT Operator

CONSISTENT compares the objects in two sets, and only includes objects in the resulting set which are consistent between the two sets. CONSISTENT acts as an operator between factors, as

Aset CONSISTENT Bset

and returns a set.

Consistency can be based on:

Numeric values
Numeric variables which have the same parent, or no parent, and whose values are consistent with each other - the value 3 is consistent with the range 1..10, the range 2..5 is consistent with the range 3..4
Parentage
Object variables, one of which is the parent of the other
Indirection
Object variables, one of which points to the other
Consistent Attributes
Object variables which share a common parent, are not disjoint members (their membership of the same class precludes them being consistent, like lions and tigers), and have no inconsistent attributes
Same Relation
If both objects head relations, they are checked for being invocations of the same relation, and the parameters are consistent. If only one object heads a relation, the parentage of the other object is checked to see whether it includes the relation the other object is invoked from. That is, Delay1 - heading a RELATION operator - will be found to be consistent with the word "delayed", as delayed is an alternative way of specifying ToDelay.

The direction of consistency is immaterial, and a variable in one set may be consistent with many in the other set. The result is that the output set will be a mixture of members of both of the input sets.

To enforce a direction, use an AND after selection, as

(Aset CONSISTENT Bset) AND Aset

finds the members of Aset that are consistent with the members of Bset.