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