Very nice, thanks for sharing! Maybe show which upper or lower values are included in the intervals? A notation I am familiar with uses outward facing brackets if the value is not included in the interval. That always applies to infinity.

Applied to the cases here:

]-∞, -1] U [0.5, +∞[

The excluded interval in between becomes ]-1, 0.5[ then.

That’s how min (and analogously max) works, right? min(A, B) = [lo(A,B), lo (hi(A), hi(B))].

Edit: idea: copy a formula from the results section to the input field if the user clicks/taps on it.

I was also a bit confused by this. I thought the standard notation was round brackets, but maybe doesn't work well in ASCII?

Round brackets are standard in the US but that notation is used in France and some other places.

  (0, 1)
Is this an twice-open interval or a 2D vector?

See, this is why Bourbaki introduced the ]0,1[ notation.

Is there any reasonable situation where you'd be confusing a vector with an interval? Having done mathematical writing and grading of tests using both styles of notation (simply adapting to what was used at the institution), I can't say that I ever noticed any practical difference between them.

From reading the linked paper[0], It explains closed interval only. "An interval union is a set of closed and disjoint intervals where the bounds of the extreme interval can be ±∞".

[0]: https://www.ime.usp.br/~montanhe/unions.pdf

It's possible to support that but it makes the code very very much more complicated. I've decided early on to not support it. Would be a cool addition though!