5.3.19.3. Set-Like Operations on Collections with Duplicates
Assume that the example bags are A={a,b,b}
and B={b,b,c,c,d}
. The result of any set-like operation is a collection, in this case a bag. The only exception is subset resulting in a Boolean .true or .false. Using the collections A
and B
, the different set-like operators produce the following:
- UNION operation
All elements of
A
and
B
are united:
A UNION B = {a,b,b,b,b,c,c,d}
- DIFFERENCE operation
The resulting collection contains all elements of the first bag except for those that also appear in the second bag. The system iterates over the elements of the second bag and removes them from the first bag one by one.
A DIFFERENCE B = {a}
B DIFFERENCE A = {c,c,d}
- XOR operation
The resulting collection contains all elements of the first bag that are not in the second bag and all elements of the second bag that are not in the second bag:
A XOR B = {a,c,c,d}
- INTERSECTION operation
The resulting collection contains all elements that appear in both bags:
A INTERSECTION B = {b,b}
- SUBSET operation
Returns
.true
if the first set contains only elements that also appear in the second set, otherwise it returns
.false
:
A SUBSET B = .false
B SUBSET A = .false
- EQUIVALENT operation
Returns
.true
if the first set contains only elements that also appear in the second set and the two sets have the same number of elements, otherwise it returns
.false
:
A EQUIVALENT B = .false
B EQUIVALENT A = .false
- DISJOINT operation
Returns
.true
if there are no elements that appear in both sets, otherwise it returns
.false
:
A DISJOINT B = .false
B DISJOINT A = .false