Technically the Cartesian cross operator doesn't have an identity value.  There 
is no set X such that 
A x X = A.  Now any singleton set gives a result that is naturally isomorphic 
to the original set, I.e, there is a obvious bijection between the two sets, 
but they are not equal sets.

--
Mark Biggar
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]

 -------------- Original message ----------------------
From: Darren Duncan <[EMAIL PROTECTED]>
> Adriano, I think perhaps what Tsa is trying to get at is the identity value 
> for the X operator, and I believe I know what it is.
> 
> In the relational model of data, both the version of the model where tuples 
> have unordered named attributes/elements (which I prefer), and the version 
> where tuples have ordered attributes/elements (which Perl 6 seems to be 
> using in its X operator), the relational cross product operator is 
> analogous to numeric multiplication or logical 'and' in its properties 
> (except that the ordered version isn't commutative).
> 
> With respect to relational join being like multiplication, the special 
> values 0 and 1 are represented by the nilary (zero attribute) relation with 
> either 0 or 1 tuples respectively, which in common Perl array-of-hash (or 
> array-of-array) notation for rowsets is
> 
>    []
> 
> and
> 
>    [ {} ] or [ [] ]
> 
> respectively; I'll call them R0 and R1 for now.  Joining any relation R 
> with R0 gives R0 (or alternately a relation with the same attributes as R 
> but zero tuples; its zero tuples either way), and joining any relation R 
> with R1 gives R.
> 
> So R1 is the identity value for cross product, meaning the identity value 
> for X, in Perl 6 would be a one-element array|seq whose element is the 
> empty array|seq.  That is,
> 
>    [X] ()
> 
> equals this:
> 
>    ( () )
> 
> Larry et al, on a related note, the list of identity values for reduce in 
> S03 should be updated to account for this; [X] wasn't on the list last I 
> looked.
> 
> -- Darren Duncan

Reply via email to