Re: Peculiar output from Union ?
- To: mathgroup at smc.vnet.net
- Subject: [mg108524] Re: Peculiar output from Union ?
- From: Murray Eisenberg <murray at math.umass.edu>
- Date: Sun, 21 Mar 2010 02:08:05 -0500 (EST)
This is platform-independent and totally predictable! Ordinarily, Union is used to form the union of two lists. But the two arguments 1< x< 2 and 3< x< 5 are not lists. Rather, they are abbreviations for the following two expressions each of whose heads is Less: Less[1,x,2] and Less[3,x,5] If you look at the Documentation Center page for Union, under the section Generalizations & Extensions you'll read that "Union works with any head, not just List." And you'll see the example: Union[f[a, b], f[c, a], f[b, b, a]] f[a,b,c] Evidently what Union does in such circumstances is form the Union of the list of all the arguments supplied to each instance of the function f inside. That would mean, then: Union[f[a, b, c], f[u, v, w]] f[a, b, c, u, v, w] Next, remember that the result of Union uses the canonical order for the elements of a list, so that, e.g.: Union[{a, z, b, 2, b, z}] {2, a, b, z} Then -- and here we're getting close to the example you asked about -- we predict the result: Union[f[a, x, c], f[d, x, e]] f[a, c, d, e, x] Now take f to be Less: Union[Less[a, x, c], Less[d, x, e]] a < c < d < e < x That's because: FullForm[%] Less[a,c,d,e,x] In other words, this example with Less is just a special case of a general head f. I deliberately used literal arguments a, c, e, e in that order, because when they are sorted into canonical order, it comes out as a,c,d,e; and then when you throw in x, it comes last. Finally, replace a with 1, b with 2, c with 3, and d with 5. Then the result you should expect from Union[Less[1, x, 2], Less[3, x, 5]] would be Union[1, 2, 3, 5, x], and that immediately evaluates to 5 < x, which is what you got. Perhaps you expected, instead, something like 1<x<2 || 3<x<5. But that would be the result not of a Union, but rather of an Or: Or[1<x<2,3<x<5] Were you conflating inequalities with the corresponding sets? On 3/20/2010 3:46 AM, Jack L Goldberg 1 wrote: > Hi Folks, > > Can anyone explain this: > > In[1]:= Union[ 1< x< 2, 3< x< 5 ] > > Out[1]= 5< x > > ?? > > I am using a MacBook Pro, OS 10.6.2 > > Thanks, > > Jack > -- Murray Eisenberg murray at math.umass.edu Mathematics & Statistics Dept. Lederle Graduate Research Tower phone 413 549-1020 (H) University of Massachusetts 413 545-2859 (W) 710 North Pleasant Street fax 413 545-1801 Amherst, MA 01003-9305