Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> comp.databases.theory -> Re: Relational symmetric difference is well defined
On 16 jun, 15:13, "V.J. Kumar" <vjkm..._at_gmail.com> wrote:
> Jan Hidders <hidd..._at_gmail.com> wrote innews:1181948397.949921.43300_at_n2g2000hse.googlegroups.com:
>
>
>
> > On 15 jun, 23:17, "V.J. Kumar" <vjkm..._at_gmail.com> wrote:
> >> Jan Hidders <hidd..._at_gmail.com> wrote
> >> innews:1181919464.037821.176760_at_p77g2000hsh.googlegroups.com:
>
> >> > On 15 jun, 16:00, "V.J. Kumar" <vjkm..._at_gmail.com> wrote:
> >> >> Jan Hidders <hidd..._at_gmail.com> wrote
> >> >> innews:1181910061.495472.280190_at_c77g2000hse.googlegroups.com:
>
> >> >> > On 1 jun, 03:40, "V.J. Kumar" <vjkm..._at_gmail.com> wrote:
> >> >> >> Vadim Tropashko <vadimtro_inva..._at_yahoo.com> wrote
> >> >> >> innews:1180628927.976321.267880_at_a26g2000pre.googlegroups.com:
>
> >> >> >> > On May 30, 8:52 pm, Marshall <marshall.spi..._at_gmail.com>
> >> >> >> > wrote:
> >> >> >> >> Can you clarify the difference between set containment join
> >> >> >> >> and set equality join? The inverse of join is much on my
> >> >> >> >> mind these days.
>
> >> >> >> > Set equality join
>
> >> >> >> > A(x,y)/=B(y,z) is {(x,z)| {y|A(x,y)}={y|A(y,z)} }
>
> >> >> >> > Set containment join
>
> >> >> >> > A(x,y)/=B(y,z) is {(x,z)| {y|A(x,y)}>{y|A(y,z)} }
>
> >> >> >> > where the ">" is "subset of".
>
> >> >> >> The above formulas obviously are no longer first-order
> >> >> >> expressions. Along with the increased expressive power (e.g.
> >> >> >> it's trivial to define a powerset), you will reap the usual
> >> >> >> drawbacks of the higher order logic.
>
> >> >> > This was perhaps already clear, but it is the *formulation* of
> >> >> > the semantics which is not first-order. The semantics themselves
> >> >> > are clearly first order since they can be defined in first order
> >> >> > logic or the flat relational algebra.
>
> >> >> This is very intriguing !
>
> >> > Not really. It is pretty obvious that in the above formulation of
> >> > the semantics of the joins you can replace the higher order
> >> > expression with a first order formula.
>
> >> How ?
>
> > For example, the formula
>
> > {y|A(x,y)}={y|A(y,z)}
>
> > is equivalent with
>
> > (Forall y : A(x,y) -> A(y,z)) and (Forall y : A(y,z) -> A(x,y))
>
> That's fine, but even with substituting a predicate expression for the
> set expression in the original expression you'd still quantify over
> predicates which is another way of saying 'over sets':
>
> {x| (setA = setB)} is no different from {x| (A <=>B)} because forall
> (setA=setB) is the same like forall(A<=B), so you are still dealing with
> the second order quantification.
Where in the formula that I gave did you see second order quantifiers or quantification over predicates?