We have seen that the predicate:
x is to the left of y
is mapped to the truth value TRUE when Charles is substituted for x and Genghis Khan is substituted for y. The Relation TO_THE_LEFT_OF comprises all true propositions and only true propositions that get generated when values are substituted for x and y. So the predicate is a function whose range is the truth value TRUE for every proposition that is included in the relation, and FALSE for every proposition that is not included in the relation.
I think, however, that we would get a slightly simpler account if we see the predicate as a function returning Relations comprising the single proposition TRUE, or the single proposition FALSE. In the Relational Algebra, we would get a relation comprising the single tuple (and therefore proposition) TRUE if, after doing the Restriction that gives us:
Charles is to the left of Genghis Khan.
we then projected on the null set of attributes (“columns”). We would then end up with Chris Date’s TABLE_DEE, that is, the Relation with cardinality 0 (o attributes, that is, 0 “columns”) and a single tuple. TABLE_DEE is the Relation that corresponds to (I guess I should say ‘is identical with’) the weird classical logic proposition TRUE. The predicate returns the proposition TRUE wrapped in the Relation TABLE_DEE when the Charles and Genghis Khan substitution is made.
Correspondingly, when John is substituted for x and Genghis Khan is subsituted for y, so that we get:
John is to the left of Genghis Khan.
the Restriction selects no tuple in the Relation TO_THE_LEFT_OF. We then have a Derived Relation with a cardinality of 2 (i.e., the Relation has 2 “columns”) holding the null set of tuples. If we then project on the null set of attributes, we end up with a Relation of cardinality 0 comprising 0 tuples. Chris Date calls this Relation TABLE_DUM, and it holds the tuple, that is to say, the proposition FALSE. The predicate returns the proposition FALSE wrapped in the Relation TABLE_DUM when the John and Genghis Khan substitution is made.
Thinking of the predicate as returning either TABLE_DEE or TABLE_DUM simplifies things a bit, because it means we never have to leave the Relational Algebra when modeling the predicate. Everything gets explained in terms of just one set of operations, the operations of the Relational Algebra.