# `union`, `_union`

Union of sets or intervals or both

MuPAD® notebooks will be removed in a future release. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.

## Syntax

```set1 union set2
_union(`set1, set2, …`)
```

## Description

`union` computes the union of sets and intervals.

`set1 union set2` is equivalent to ```_union(set1, set2)```.

The precedences of `intersect`, `minus`, `union` are as follows. If in doubt, use parentheses to ensure that the expression is parsed as desired.

• The operator `intersect` is stronger binding than `minus`, that is, ```set1 intersect set2 minus set3``` = ```(set 1 intersect set2) minus set3```.

• The operator `minus` is stronger binding than `union`, that is, ```set1 minus set2 union set3``` = `(set1 minus set2) union set3`.

• `set1 minus set2 minus set3` = ```(set 1 minus set2) minus set3```

If sets or intervals are specified by symbolic expressions involving identifiers or indexed identifiers, then symbolic calls of `_union` are returned. On the screen, they are represented via the operator notation ```set1 union set2```.

### Note

On finite sets of type `DOM_SET`, `union` acts in a purely syntactical way. For eaxmple, ```{1} union {x}``` simplifies to `{1,x}`. Mathematically, this result can be incorrect in general, because `x` can represent the value 1.

On intervals of type `Dom::Interval`, `union` acts in a semantical way. In particular, properties of identifiers are taken into account.

`_union()` returns the empty set `{}`.

## Examples

### Example 1

`union` operates on finite sets:

`{x, 1, 5} union {x, 1, 3, 4}`
` `

For symbolic sets, specified as identifiers or indexed identifiers, symbolic calls are returned:

`{1, 2} union A union {2, 3}`
` `

Note that the set operations act on finite sets in a purely syntactical way. In the following call, `x` does not match any of the numbers 1, 2, 3 syntactically:

`{1, 2, 3} union {1, x}`
` `

### Example 2

`union` is overloaded by the domain `Dom::Interval`:

`Dom::Interval([0, 1]) union Dom::Interval(1, 4)`
` `
`Dom::Interval([0, 1]) union Dom::Interval(4, infinity)`
` `

In contrast to finite sets of type `DOM_SET`, the interval domain works semantically. It takes `properties` into account:

`Dom::Interval(-1, 1) union {x}`
` `
```assume(0 < x < 1): Dom::Interval(-1, 1) union {x}```
` `
`unassume(x):`

### Example 3

The following list provides a collection of sets:

`L := [{a, b}, {1, 2, a, c}, {3, a, b}, {a, c}]:`

The functional equivalent `_union` of the `union` operator accepts an arbitrary number of arguments. Thus, the union of all sets in `L` can be computed as follows:

`_union(op(L))`
` `
`delete L:`

## Parameters

 `set1, set2, …` Finite sets of type `DOM_SET`, or intervals of type `Dom::Interval`, or arithmetical expressions

## Return Values

Set, an interval, a symbolic expression of type `"_union"`.

`set1`, `set2`