[proofplan]
We prove the result by induction on the degree, using the degree-zero definition of B-splines and the recursive definition for higher degrees specified in the theorem statement. The knot set is $\mathcal{K}:=\{t_j:0\leq j\leq M\}$. For degree $0$, the B-splines are indicator functions of the half-open intervals in the knot vector, so each point outside $\mathcal{K}$ belongs to exactly one nonempty active interval. For the induction step, we sum the recursive formula over all active indices, reindex the second sum, and use a proved support containment to discard the two boundary splines. The remaining interior terms either have affine coefficients summing to $1$, or have collapsed support at a knot location excluded by $x\notin \mathcal{K}$.
[/proofplan]
[step:Verify the degree-zero partition on knot intervals]
Assume first that $r=0$. The active indices are $0 \leq i \leq M-1$, which form a nonempty finite index set because $M\geq 1$. For each such index, the degree-zero B-spline is the map $N_{i,0}: \mathbb{R} \to \mathbb{R}$ defined by
\begin{align*}
N_{i,0}(x)=\mathbb{1}_{[t_i,t_{i+1})}(x).
\end{align*}
Let $x \in [t_0,t_M)\setminus \mathcal{K}$. Because $x$ is not a knot location, there is a unique index $q$ with $0\leq q\leq M-1$ such that
\begin{align*}
t_q<x<t_{q+1}.
\end{align*}
For this index, $N_{q,0}(x)=1$. If $i<q$, then the knot vector is nondecreasing, so $t_{i+1}\leq t_q<x$ and hence $x\notin [t_i,t_{i+1})$. If $i>q$, then $x<t_{q+1}\leq t_i$, again giving $x\notin [t_i,t_{i+1})$. Thus $N_{i,0}(x)=0$ for every $i\neq q$. Empty intervals caused by repeated knots contribute zero because $[t_i,t_{i+1})=\varnothing$ when $t_i=t_{i+1}$. Hence
\begin{align*}
\sum_{i=0}^{M-1} N_{i,0}(x)=1.
\end{align*}
This proves the base case.
[/step]
[step:State the induction hypothesis on the active degree]
Fix an integer $k$ with $1 \leq k \leq r$. Since $M\geq 2r+1$ and $k\leq r$, the active index ranges $0\leq j\leq M-k$ for degree $k-1$ and $0\leq i\leq M-k-1$ for degree $k$ are well-defined finite ranges. Assume that the degree-$(k-1)$ B-splines satisfy
\begin{align*}
\sum_{j=0}^{M-k} N_{j,k-1}(x)=1
\end{align*}
for every $x \in [t_{k-1},t_{M-k+1})\setminus \mathcal{K}$. We prove that
\begin{align*}
\sum_{i=0}^{M-k-1} N_{i,k}(x)=1
\end{align*}
for every $x \in [t_k,t_{M-k})\setminus \mathcal{K}$.
[/step]
[step:Sum the Cox-de Boor recursion and reindex the second term]
Let $x \in [t_k,t_{M-k})\setminus \mathcal{K}$ be fixed. For each active index $0 \leq i \leq M-k-1$, the degree-$k$ B-spline is the map $N_{i,k}:\mathbb{R}\to\mathbb{R}$ determined by the recursive definition specified in the theorem statement:
\begin{align*}
N_{i,k}(x)
=
\frac{x-t_i}{t_{i+k}-t_i}N_{i,k-1}(x)
+
\frac{t_{i+k+1}-x}{t_{i+k+1}-t_{i+1}}N_{i+1,k-1}(x).
\end{align*}
Each zero-denominator term is interpreted as zero by the same definition.
Summing over $i$ gives
\begin{align*}
\sum_{i=0}^{M-k-1}N_{i,k}(x)
=
\sum_{i=0}^{M-k-1}
\frac{x-t_i}{t_{i+k}-t_i}N_{i,k-1}(x)
+
\sum_{i=0}^{M-k-1}
\frac{t_{i+k+1}-x}{t_{i+k+1}-t_{i+1}}N_{i+1,k-1}(x).
\end{align*}
In the second sum, set $j=i+1$. Then $1 \leq j \leq M-k$, and
\begin{align*}
\sum_{i=0}^{M-k-1}
\frac{t_{i+k+1}-x}{t_{i+k+1}-t_{i+1}}N_{i+1,k-1}(x)
=
\sum_{j=1}^{M-k}
\frac{t_{j+k}-x}{t_{j+k}-t_j}N_{j,k-1}(x).
\end{align*}
Thus
\begin{align*}
\sum_{i=0}^{M-k-1}N_{i,k}(x)
=
\sum_{j=0}^{M-k-1}
\frac{x-t_j}{t_{j+k}-t_j}N_{j,k-1}(x)
+
\sum_{j=1}^{M-k}
\frac{t_{j+k}-x}{t_{j+k}-t_j}N_{j,k-1}(x).
\end{align*}
For a function $f: \mathbb{R}\to \mathbb{R}$, define $\operatorname{supp} f$ to be the closure in $\mathbb{R}$ of the set $\{y\in \mathbb{R}: f(y)\neq 0\}$.
[claim:Locate the support of each B-spline]
For every degree $m$ with $0\leq m\leq r$ and every admissible index $j$, the support satisfies
\begin{align*}
\operatorname{supp} N_{j,m}\subset [t_j,t_{j+m+1}].
\end{align*}
[/claim]
[proof]
We prove the containment by induction on $m$. If $m=0$, then $N_{j,0}=\mathbb{1}_{[t_j,t_{j+1})}$, so the closure of the nonzero set is contained in $[t_j,t_{j+1}]$.
Assume the containment holds for degree $m-1$, where $1\leq m\leq r$. The defining recursion expresses $N_{j,m}$ as a sum of a scalar multiple of $N_{j,m-1}$ and a scalar multiple of $N_{j+1,m-1}$, with zero-denominator terms interpreted as the zero function. Hence $N_{j,m}(y)$ can be nonzero only if $N_{j,m-1}(y)\neq 0$ or $N_{j+1,m-1}(y)\neq 0$. By the induction hypothesis,
\begin{align*}
\operatorname{supp} N_{j,m-1}\subset [t_j,t_{j+m}]
\end{align*}
and
\begin{align*}
\operatorname{supp} N_{j+1,m-1}\subset [t_{j+1},t_{j+m+1}].
\end{align*}
Both intervals are contained in $[t_j,t_{j+m+1}]$ because the knot vector is nondecreasing. Taking closures gives
\begin{align*}
\operatorname{supp} N_{j,m}\subset [t_j,t_{j+m+1}].
\end{align*}
This completes the induction.
[/proof]
[guided]
We are proving the induction step for a fixed integer $k$ with $1\leq k\leq r$. Define the knot set by $\mathcal{K}:=\{t_j:0\leq j\leq M\}$. The induction hypothesis says that
\begin{align*}
\sum_{j=0}^{M-k} N_{j,k-1}(y)=1
\end{align*}
for every $y\in [t_{k-1},t_{M-k+1})\setminus\mathcal{K}$. We fix $x\in [t_k,t_{M-k})\setminus\mathcal{K}$ and must prove
\begin{align*}
\sum_{i=0}^{M-k-1}N_{i,k}(x)=1.
\end{align*}
The induction step is driven by one bookkeeping move: after expanding every degree-$k$ B-spline, we collect the coefficients of each degree-$(k-1)$ B-spline and then invoke the displayed induction hypothesis at the chosen point $x$.
For $0 \leq i \leq M-k-1$, the degree-$k$ B-spline is the map $N_{i,k}:\mathbb{R}\to\mathbb{R}$ defined by the recursive formula specified in the theorem statement:
\begin{align*}
N_{i,k}(x)
=
\frac{x-t_i}{t_{i+k}-t_i}N_{i,k-1}(x)
+
\frac{t_{i+k+1}-x}{t_{i+k+1}-t_{i+1}}N_{i+1,k-1}(x).
\end{align*}
As in the exact proof, every zero-denominator term is interpreted as zero.
The first term already involves $N_{i,k-1}$. The second term involves $N_{i+1,k-1}$, so we reindex it by defining $j=i+1$. As $i$ runs from $0$ to $M-k-1$, the new index $j$ runs from $1$ to $M-k$. Therefore
\begin{align*}
\sum_{i=0}^{M-k-1}
\frac{t_{i+k+1}-x}{t_{i+k+1}-t_{i+1}}N_{i+1,k-1}(x)
=
\sum_{j=1}^{M-k}
\frac{t_{j+k}-x}{t_{j+k}-t_j}N_{j,k-1}(x).
\end{align*}
Combining this with the first sum gives
\begin{align*}
\sum_{i=0}^{M-k-1}N_{i,k}(x)
=
\sum_{j=0}^{M-k-1}
\frac{x-t_j}{t_{j+k}-t_j}N_{j,k-1}(x)
+
\sum_{j=1}^{M-k}
\frac{t_{j+k}-x}{t_{j+k}-t_j}N_{j,k-1}(x).
\end{align*}
This formula separates the boundary degree-$(k-1)$ splines, indexed by $j=0$ and $j=M-k$, from the interior degree-$(k-1)$ splines, indexed by $1 \leq j \leq M-k-1$. We need to know where a degree-$(k-1)$ spline can be nonzero. For any function $f: \mathbb{R}\to \mathbb{R}$, $\operatorname{supp} f$ denotes the closure in $\mathbb{R}$ of $\{y\in\mathbb{R}:f(y)\neq 0\}$. We prove the support containment needed here. For every degree $m$ with $0\leq m\leq r$ and every admissible index $j$, we claim that
\begin{align*}
\operatorname{supp} N_{j,m}\subset [t_j,t_{j+m+1}].
\end{align*}
When $m=0$, the definition gives $N_{j,0}=\mathbb{1}_{[t_j,t_{j+1})}$, so the set where $N_{j,0}$ is nonzero is contained in $[t_j,t_{j+1})$, and its closure in $\mathbb{R}$ is contained in $[t_j,t_{j+1}]$.
Now assume the containment holds at degree $m-1$, where $1\leq m\leq r$. The recursive formula expresses $N_{j,m}$ as the sum of one coefficient times $N_{j,m-1}$ and one coefficient times $N_{j+1,m-1}$, with every zero-denominator term interpreted as the zero function. Hence $N_{j,m}(y)$ can be nonzero only if $N_{j,m-1}(y)\neq 0$ or $N_{j+1,m-1}(y)\neq 0$. By the induction hypothesis,
\begin{align*}
\operatorname{supp} N_{j,m-1}\subset [t_j,t_{j+m}]
\end{align*}
and
\begin{align*}
\operatorname{supp} N_{j+1,m-1}\subset [t_{j+1},t_{j+m+1}].
\end{align*}
Because the knot vector is nondecreasing, both intervals are contained in $[t_j,t_{j+m+1}]$. Taking closures therefore gives
\begin{align*}
\operatorname{supp} N_{j,m}\subset [t_j,t_{j+m+1}].
\end{align*}
Applying this with $m=k-1$ gives
\begin{align*}
\operatorname{supp} N_{j,k-1}\subset [t_j,t_{j+k}].
\end{align*}
For $j=0$, this gives $\operatorname{supp} N_{0,k-1}\subset [t_0,t_k]$. Since $x\in [t_k,t_{M-k})\setminus \mathcal{K}$, we have $x>t_k$ or else $x=t_k\in\mathcal{K}$, which is excluded. Therefore $x\notin \operatorname{supp}N_{0,k-1}$ and $N_{0,k-1}(x)=0$. For $j=M-k$, the containment gives $\operatorname{supp} N_{M-k,k-1}\subset [t_{M-k},t_M]$, while $x<t_{M-k}$, so $N_{M-k,k-1}(x)=0$.
Thus only the interior indices remain. If $1\leq j\leq M-k-1$ and $t_{j+k}>t_j$, the collected coefficient of $N_{j,k-1}(x)$ is
\begin{align*}
\frac{x-t_j}{t_{j+k}-t_j}+\frac{t_{j+k}-x}{t_{j+k}-t_j}=1.
\end{align*}
If $t_{j+k}=t_j$, then the support containment gives $\operatorname{supp}N_{j,k-1}\subset \{t_j\}$. Because $x\notin \mathcal{K}$ and $t_j\in\mathcal{K}$, we have $x\neq t_j$, hence $N_{j,k-1}(x)=0$. In this collapsed-support case the two zero-denominator terms contribute $0$, which equals $N_{j,k-1}(x)$ at the chosen $x$.
Consequently
\begin{align*}
\sum_{i=0}^{M-k-1}N_{i,k}(x)
=
\sum_{j=1}^{M-k-1}N_{j,k-1}(x).
\end{align*}
The two omitted boundary terms have just been shown to vanish at the chosen $x$, so this equals
\begin{align*}
\sum_{j=0}^{M-k}N_{j,k-1}(x).
\end{align*}
Finally, $x \in [t_k,t_{M-k})\setminus\mathcal{K}\subset [t_{k-1},t_{M-k+1})\setminus\mathcal{K}$, so the induction hypothesis applies and gives
\begin{align*}
\sum_{j=0}^{M-k}N_{j,k-1}(x)=1.
\end{align*}
Therefore $\sum_{i=0}^{M-k-1}N_{i,k}(x)=1$.
[/guided]
[/step]
[step:Discard the boundary terms using the support intervals]
By the support claim with $m=k-1$,
\begin{align*}
\operatorname{supp} N_{j,k-1}\subset [t_j,t_{j+k}]
\end{align*}
for each admissible index $j$.
For $j=0$, this gives $\operatorname{supp} N_{0,k-1}\subset [t_0,t_k]$. Since $x\in [t_k,t_{M-k})\setminus\mathcal{K}$ and $t_k\in\mathcal{K}$, we have $x>t_k$, so $N_{0,k-1}(x)=0$. For $j=M-k$, the containment gives $\operatorname{supp} N_{M-k,k-1}\subset [t_{M-k},t_M]$, while $x<t_{M-k}$, so $N_{M-k,k-1}(x)=0$.
Therefore the boundary contributions in the preceding identity are zero, and
\begin{align*}
\sum_{i=0}^{M-k-1}N_{i,k}(x)
=
\sum_{j=1}^{M-k-1}
\left(
\frac{x-t_j}{t_{j+k}-t_j}
+
\frac{t_{j+k}-x}{t_{j+k}-t_j}
\right)N_{j,k-1}(x),
\end{align*}
with the understanding that zero-denominator summands are interpreted as zero.
[/step]
[step:Use the affine weights to recover the lower-degree partition]
For each interior index $1 \leq j \leq M-k-1$ with $t_{j+k}>t_j$, define the collected affine coefficient $A_j(x)\in\mathbb{R}$ by
\begin{align*}
A_j(x)=\frac{x-t_j}{t_{j+k}-t_j}+\frac{t_{j+k}-x}{t_{j+k}-t_j}.
\end{align*}
Combining the two numerators gives
\begin{align*}
A_j(x)=1.
\end{align*}
If $t_{j+k}=t_j$, then the support claim gives
\begin{align*}
\operatorname{supp} N_{j,k-1}\subset \{t_j\}.
\end{align*}
Since $t_j\in\mathcal{K}$ and $x\notin\mathcal{K}$, we have $x\neq t_j$, so $N_{j,k-1}(x)=0$. In this collapsed-support case the zero-denominator convention makes the two corresponding Cox-de Boor terms zero, and this zero contribution equals $N_{j,k-1}(x)$ at the chosen point. Hence in all cases the collected contribution is exactly $N_{j,k-1}(x)$.
Thus
\begin{align*}
\sum_{i=0}^{M-k-1}N_{i,k}(x)
=
\sum_{j=1}^{M-k-1}N_{j,k-1}(x).
\end{align*}
The two omitted boundary terms vanish at the chosen $x$, so
\begin{align*}
\sum_{j=1}^{M-k-1}N_{j,k-1}(x)
=
\sum_{j=0}^{M-k}N_{j,k-1}(x).
\end{align*}
Since $x \in [t_k,t_{M-k})\setminus\mathcal{K}\subset [t_{k-1},t_{M-k+1})\setminus\mathcal{K}$, the induction hypothesis applies and gives
\begin{align*}
\sum_{j=0}^{M-k}N_{j,k-1}(x)=1.
\end{align*}
Therefore
\begin{align*}
\sum_{i=0}^{M-k-1}N_{i,k}(x)=1.
\end{align*}
[/step]
[step:Conclude the degree-$r$ identity on $[a,b]$]
By induction on $k$, the identity
\begin{align*}
\sum_{i=0}^{M-k-1}N_{i,k}(x)=1
\end{align*}
holds for every $0 \leq k \leq r$ and every $x \in [t_k,t_{M-k})\setminus\mathcal{K}$. Taking $k=r$ and using $a=t_r$ and $b=t_{M-r}$ gives
\begin{align*}
\sum_{i=0}^{M-r-1}N_{i,r}(x)=1.
\end{align*}
Since $b=t_{M-r}\in\mathcal{K}$, the set $[a,b]\setminus\mathcal{K}$ is contained in $[t_r,t_{M-r})\setminus\mathcal{K}$. Thus the displayed identity holds for every $x\in [a,b]\setminus\mathcal{K}$, which is exactly the asserted [partition of unity](/page/Partition%20of%20Unity) on the formally specified non-knot domain.
[/step]