Documentation |
Difference of sets and/or intervals
This functionality does not run in MATLAB.
set_{1}minus set_{2} _minus(set_{1}, set_{2})
minus computes the difference between sets and intervals.
set1 minus set2 is equivalent to _minus(set1, set2).
The precedences of intersect, minus, union are as follows: The operator intersect is stronger binding than minus, i.e, set1 intersect set2 minus set3 = (set 1 intersect set2) minus set3. The operator minus is stronger binding than union, i.e., set1 minus set2 union set3 = (set1 minus set2) union set3. Further, set1 minus set2 minus set3 = (set 1 minus set2) minus set3. If in doubt, use brackets to make sure that the expression is parsed as desired.
If sets or intervals are specified by symbolic expressions involving identifiers or indexed identifiers, then symbolic calls of _intersect, _minus, _union are returned. On the screen, they are represented via the operator notation set1 intersect set2 etc.
Note: On finite sets of type DOM_SET, these operators act in a purely syntactical way. E.g., {1}minus {x} simplifies to {1}. Mathematically, this result may not be correct in general, because x might represent the value 1. |
On intervals of type Dom::Interval, these operators act in a semantical way. In particular, properties of identifiers are taken into account.
_intersect() returns universe (of type stdlib::Universe) which represents the set of all mathematical objects.
_union() returns the empty set {}.
intersect, minus, and union operate on finite sets:
{x, 1, 5} intersect {x, 1, 3, 4}, {x, 1, 5} union {x, 1, 3, 4}, {x, 1, 5} minus {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} minus {1, x}
intersect, minus, and union are overloaded by the domain Dom::Interval:
Dom::Interval([0, 1]) union Dom::Interval(1, 4)
Dom::Interval([0, 1]) union Dom::Interval(4, infinity)
Dom::Interval(2, infinity) intersect Dom::Interval([1, 3])
{PI/2, 2, 2.5, 3} intersect Dom::Interval(1,3)
Dom::Interval(1, PI) minus {2, 3}
In contrast to finite sets of type DOM_SET, the interval domain works semantically. It takes properties into account:
Dom::Interval(-1, 1) minus {x}
assume(x > 2): Dom::Interval(-1, 1) minus {x}
unassume(x):
The following list provides a collection of sets:
L := [{a, b}, {1, 2, a, c}, {3, a, b}, {a, c}]:
The functional equivalent _intersect of the intersect operator accepts an arbitray number of arguments. Thus, the intersection of all sets in L can be computed as follows:
_intersect(op(L))
The union of all sets in L is:
_union(op(L))
delete L:
universe represents the set of all mathematical objects:
_intersect()
set_{1}, set_{2}, … |
Finite sets of type DOM_SET, or intervals of type Dom::Interval, or arithmetical expressions |
Set, an interval, a symbolic expression of type "_intersect", "_minus", "_union", or universe.