If #a# and #b# are Real numbers with #a < b#, then #(a, b)# denotes an open interval, consisting of all values from #a# up to #b#, but not including #a# and #b# themselves.

#[a, b]# denotes a closed interval, consisting of all values from #a# up to #b#, including #a# and #b# themselves.

Other combinations are called half-open intervals, e.g.:

#[a, b) = { x in RR : a <= x < b }#

**What about #+-oo# ?**

First note that neither #+oo# (a.k.a. #oo#) nor #-oo# are Real numbers. Intuitively they lie beyond the ends of the Real number line, with #+oo# to the right and #-oo# to the left.

We can take the set of Real numbers #RR# and add these two objects as members to get the set #RR uu { +-oo }#. They cannot be incorporated fully into the arithmetic of the Real numbers, since expressions like #oo - oo# and #0 * oo# are indeterminate. So they cannot fully be treated as numbers.

They can however be fully incorporated into the total order of the Real line, so that for any #x in RR# we have #-oo < x < +oo#.

So we can use the notation #(0, oo)# to denote all of the positive Real numbers.

Note that the notation #(0, oo]# is bogus in that it includes the 'value' #+oo#, unless you are specifically talking about #RR uu { +-oo }# rather than #RR#.

**What about infinitesimals?**

You can add infinitesimals and their reciprocals (which are infinite values) to the Real numbers #RR# in a way that is consistent with arithmetic and has none of the strangeness of #+-oo#.

There's a description of how at https://socratic.org/s/axhXNryX

What you end up with is called a totally ordered non-Archimedean field. Let's call it #bar(RR)#.

Suppose #epsilon# is an infinitesimal in #bar(RR)#. Then in some ways the interval #[epsilon, oo)# is similar to #(0, oo)#. It includes all positive Real numbers - i.e. Real numbers greater than #0#. However, it does not include all positive numbers in #bar(RR)#. For example, it does not include #epsilon/2#.

Note that the interval #[epsilon, 1/epsilon]# is well defined in #bar(RR)# and also includes all positive Real numbers. It does not include all transfinite positive numbers in #bar(RR)#, e.g. #2/epsilon !in [epsilon, 1/epsilon]#.