ClearAll[itrF, slitrF, intervalComplementF]
slitrF = Statistics`Library`IntervalToRegion;
itrF[x_][Interval[p : {_, _} ..]] := Or @@ (slitrF[#, x] & /@ Interval /@ {p});
intervalComplementF = Interval @@ (Reduce[itrF[x]@# && Not[itrF[x]@#2], x, Reals] /.
{ Or -> List , Inequality[a_, __, b_] :> {a, b},
Less[_, a_] | LessEqual[_, a_] :> {-Infinity, a},
Greater[_, b_] | GreaterEqual[_, b_] :> {b, Infinity}} ) &;
Examples:
i1 = Interval[{1, 4}];
i2 = Interval[{2, 3}];
intervalComplementF[i1, i2]
Interval[{1, 2}, {3, 4}]
a = Interval[{0, 10}];
b = Interval[{1, 3}, {7, 12}];
intervalComplementF[a, b]
Interval[{0, 1}, {3, 7}]
intervalComplementF[Interval[{-Infinity, Infinity}], Interval[{2, 3}, {5, 6}]]
Interval[{-Infinity, 2}, {3, 5}, {6, Infinity}]
http://mathematica.stackexchange.com/questions/11345/can-mathematica-handle-open-intervals-interval-complements?rq=1
– Searke Mar 30 '16 at 02:28Intervalobjects represent closed intervals. If you complement two such overlapping intervals, the result will have an interval with an open end. You can't represent that on Mathematica with a plainIntervalobject. – kirma Mar 30 '16 at 04:17