$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Max Motovilov (max_at_[hidden])
Date: 2008-03-12 08:40:45
Larry Evans wrote:
> Input:
>    list
>    < list<A0_0, A0_1> //S1
>    , list<A1_0, A1_1> //S2
>    >
> Output:
>    list
>    < list<A0_0, A1_0> //s1[1]...S1[2]? Nope, this is S1[1]...S2[1]
>    , list<A0_0, A2_0>
>    , list<A0_1, A1_0>
>    , list<A0_1, A1_1>
>    >
Not quite like that, and I knew my "description" would end up being 
misleading :( -- so much for posting after a long working day.
Input:
list<
   list< A0_0, A0_1 >,
   list< A1_0, A1_1 >
 >
Output:
list<
   list< A0_0, A1_0 >,
   list< A0_0, A1_1 >,
   list< A0_1, A1_0 >,
   list< A0_1, A1_1 >
 >
I think this is what you meant to write above. Yes, it is an outer 
product, or direct product, or Cartesian product:
C(A,B)={ [x,y] | for each x in A and y in B }
And of course if any of the sequences is empty, the output is also 
empty. Requires a separate rule, incidentally.
...Max...