# Re: completeness of the relational lattice

Date: Fri, 22 Jun 2007 10:08:47 -0000

Message-ID: <1182506927.393612.229850_at_u2g2000hsc.googlegroups.com>

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

[Quoted] On 22 jun, 06:52, Vadim Tropashko <vadimtro_inva..._at_yahoo.com> wrote:

> 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?

> What is the (B=B) (e.g. in set builder notation)?

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