I didn't want to continue the discussion in comments so I decided to ask as a question:
What do we gain by writing this simple expression
$\sum_{k=0}^n 2^k = 2^{n+1} - 1$
as this where final index is missing and the index $k$ is a range:
$\sum_{0\le k < n} 2^k = 2^{n} - 1$
Apparently this is used in high mathematics by professional mathematicians but what do we gain in this case?
There are at least two (related) advantages to excluding the upper bound.
The sum $$\sum_{m \leq k < n}$$ (with $k$ being the bound variable) extends over $n - m$ terms; if you include the upper bound, it’s $n - m + 1$.
If you split up a summation, you get $$\sum_{m \leq k < n} = \sum_{m \leq k < l} + \sum_{l \leq k < n}$$ for any $m \leq l \leq n$. If you include the upper bound, you get shifts by $1$ again.
(For these reasons, it’s common for
rangeoperators in programming languages to work this way.)Now, in math the notation $$\sum_{k=m}^n$$ is firmly established to include the upper bound. If you want to exclude it, you have the option of using either the notation from above; or you need to change the meaning of the summation sign (which will be confusing even if you are explicit about it); or you need to invent your own version, like $$\sum_{k=m}^{<n}.$$
Of course, the notation with $m \leq k < n$ in the subscript also has a technical problem: It is not apparent anymore which variable is the one bound by the summation sign. I have seen $$\sum_{k : m \leq k < n}$$ as a possible notation to indicate that, but often, context is enough.