4.13 Union

Union( D1, D2... )
Union( list )

In the first form Union returns the union of the domains D1, D2, etc. In the second form list must be a list of domains and Union returns the union of those domains. Each argument D or element of list respectively may also be an arbitrary list, in which case Union silently applies Set (see Set) to it first.

The result of Union is the set of elements that lie in any the domains D1, D2, etc. Functions called by the dispatcher function Union however, are encouraged to keep as much structure as possible. However, currently GAP does not support any category that is closed under taking unions except the category of all domains. So the only case that structure will be kept is when one argument D or element of list respectively is a superset of all the other arguments or elements of list.

    gap> Union( GaussianIntegers, Rationals );
    Error, sorry, cannot unite <E> with the infinite domain <D>
    gap> Union( D12, Group( (1,2), (1,2,3) ) );
    [ (), (2,3), (2,6)(3,5), (1,2), (1,2)(3,6)(4,5), (1,2,3),
      (1,2,3,4,5,6), (1,3,2), (1,3), (1,3)(4,6), (1,3,5)(2,4,6),
      (1,4)(2,3)(5,6), (1,4)(2,5)(3,6), (1,5)(2,4), (1,5,3)(2,6,4),
      (1,6,5,4,3,2), (1,6)(2,5)(3,4) ]
    gap> Union( [2,4,6,8,10], [3,6,9,12,15], [5,10,15,20,25] );
    [ 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 20, 25 ]
        # two or more domains or sets as arguments are legal
    gap> Union( [ [1,2,4], [2,3,4], [1,3,4] ] );
    [ 1, 2, 3, 4 ]    # or a list of domains or sets
    gap> Union( [ ] );
    [  ] 

The dispatcher function (see Dispatchers) Union is slightly different from other dispatcher functions. It does not simply call the function in the operations record passings its arguments. Instead it loops over its arguments (or the list of domains or sets) and calls the function in the operations record repeatedly, and passes each time only two domains. This obviously makes writing the function for the operations record simpler.

The default function DomainOps.Union checks whether either domain is infinite. If one is it signals an error. If both domains are finite it computes the proper sets of elements of both and unites them (see Elements and Set Functions for Sets). This default method is overlaid by more special functions for some other domains. Those functions usually are faster.

Previous Up Top Next
Index

GAP 3.4.4
April 1997