TRUE and FALSE values in the relational lattice
Date: Tue, 19 Jun 2007 10:51:05 -0700
Message-ID: <1182275465.366470.264750_at_e9g2000prf.googlegroups.com>
Given a relation R(x,y) with domains x={0,1,2}, y={'a','b'} we know from classic predicate theory that the expression
R(x=0, y='a')
evaluates to true or false. Here is how we establish this siumple fact in the relational lattice.
First, lets substitute x -> x=0 into R(x,y) and get unary relation R'(y). The formula for such substitution is
R'(y) = R(0,y) = (R /\ `x=0`) \/ `y`
where `x=0' is unary relation with one tuple {0} and attribute x, and `y` is the unary empty relation with attribute y. Informally, we select all the tuples in R such that x=0 and project the result to column y.
Next, we substitute y -> y=a into R'(y) and obtain "emptiary" relation R":
R"({}) = R(0,'a') = ( ( (R /\ `x=0`) \/ `y` ) /\ `y=a` ) \/ 00
It is instructive to apply the distributivity criteria (I lost count how many times I leveraged it!) and simplify the expression to
R(0,'a') = ( R /\ `x=0` /\ `y=a` ) \/ 00
As expected this expression is valued to 00 or 01, so Marshall was eventually right when interpreting those relations as TRUE and FALSE.
Received on Tue Jun 19 2007 - 19:51:05 CEST