# Re: completeness of the relational lattice

From: Jan Hidders <hidders_at_gmail.com>
Date: Fri, 22 Jun 2007 10:08:47 -0000

(moving some of the discussion in "TRUE and FALSE values in the relational lattice" to this thread)

> On 22 Jun 2007, at 03:20, Jan Hidders wrote:
>
>
>
> > On 22 Jun 2007, at 02:51, Vadim Tropashko wrote:
>
> >> Jan Hidders wrote:
>
> >>> On 22 Jun 2007, at 02:36, Vadim Tropashko wrote:
>
> >>>> I doubt a normal form for RL expressions exists. (If you insist otherwise, we can play a little game when I give you an example and you reduce it to a normal form).
>
> >>>> An example may be n-th iteration of transitive closure.
> > So you are telling me to normalize:
>
> > R(x,y) \/ ( ( (R(x,y)/\`y=z`) \/ [x,z] ) /\ ( (R(x,y)/\`x=z` ) \/ [z,y] ) ) \/ ...
>
> > Let me first give you a smaller example. Suppose you have:
>
> > R /\ ( S \/ 'z=y') with R(x,y) and S(y,z)
>
> Careful there! You probably don't want to union anything with equality
> relation. You must have meant:
>
> (R(x,y) /\ `x=z`) \/ [z,y]
>
> where [z,y] is subsequntly generalized to S(y,z).

No, I meant what I wrote. It doesn't do anything that seems meaningful, but that is besides the point.

> > We cannot distribute in general, but we have a specific distribution rule:
>
> > (1) r /\ ((s \/ [H]) \/ (t\/[H])) = r /\ (s \/ [H]) \/ r*(t \/ [H])
>
> Which is BTW a very limited case embraced by Spight criteria.

Indeed. But it is a simple equation, no premises.

> Once again, we are interested if union distributes over join, not if
> join distributes over union.

?? No, here I'm interested if join distributes over union, because I want a union normal form.

> BTW, why don't we define square brackets [R] as an unary operator,
> expressed in my notation as
>
> [R] = R /\ 00

What is R? In [R] it is a set of attributes. So a set of attributes is a valid expression in your syntax? I'm not sure what that means. Could you give a complete definition of your syntax just like I did?

The unary relation with header {B} that contains all possible values: { (B:x} | x in Domain }. But as you see in my other posting, I'm ok with disallowing that.

• Jan Hidders
Received on Fri Jun 22 2007 - 12:08:47 CEST

Original text of this message