Introduction
A function can be bounded on a closed interval without being continuous at every point. A finite number of discontinuities may seem to complicate the construction of Riemann sums: subintervals containing those points can have large variation, regardless of how finely the rest of the interval is divided.
The key is to separate two tasks. Place each discontinuity inside a short interval, so that the total contribution from those intervals is small. Then use continuity on the remaining closed intervals to make the variation there small as well. The Darboux criterion turns these two estimates into a proof of integrability.
Upper and Lower Darboux Sums
Let \(f:[a,b]\to\mathbb{R}\) be bounded, with \(a<b\). A partition \(P\) is a finite list \(a=x_0<x_1<\cdots<x_n=b\). On each subinterval \([x_{i-1},x_i]\), let \(M_i\) and \(m_i\) be the supremum and infimum of \(f\), respectively. The upper and lower Darboux sums are
Since \(f\) is bounded, these suprema and infima are finite. The difference between the sums is
For each subinterval, \(M_i-m_i\) measures the oscillation of the function there, while \(x_i-x_{i-1}\) measures the subinterval's width. Thus the gap is a sum of oscillation multiplied by width.
We will construct such a partition for a bounded function whose discontinuities form a finite set.
Why Small Intervals Control Large Oscillation
Choose a number \(M>0\) such that \(|f(x)|\le M\) for every \(x\in[a,b]\). On any subinterval \(I\), the supremum of \(f\) is at most \(M\), and its infimum is at least \(-M\). Therefore its oscillation is at most \(2M\):
This bound need not be small. But its contribution to the Darboux gap is the oscillation multiplied by the interval's length. If the total length of intervals around the discontinuities is sufficiently small, their combined contribution is small even when the function varies widely on each one.
Outside those intervals, the function is continuous. The remaining pieces are closed intervals on which \(f\) is continuous. A continuous function on a closed bounded interval is uniformly continuous: for any desired bound on the change in \(f\), there is a single width that works for every pair of points in that interval. Subdividing those pieces into intervals no wider than that width makes their oscillations small.
Proof of the Integrability Theorem
Proof. Let the discontinuities be \(c_1,\ldots,c_N\), where \(N\) is finite. If \(N=0\), \(f\) is continuous on the closed interval, so it is integrable. Suppose \(N\ge 1\), and choose \(M>0\) such that \(|f(x)|\le M\) on \([a,b]\).
Fix \(\varepsilon>0\). Around each \(c_j\), choose a short interval, intersected with \([a,b]\) if \(c_j\) is near an endpoint. The intervals can be chosen pairwise disjoint, since there are only finitely many distinct points. Choose them small enough that their total length is less than \(\varepsilon/(4M)\). Include their endpoints in the partition.
Every partition subinterval lying in these selected intervals has oscillation at most \(2M\). The total contribution of all such subintervals to \(U(f,P)-L(f,P)\) is therefore at most
The complement of the selected intervals consists of finitely many closed intervals, none of which contains a discontinuity. On each such interval, \(f\) is continuous and hence uniformly continuous. Set \(\eta=\varepsilon/(2(b-a))\). On each complementary interval, uniform continuity allows a subdivision fine enough that the oscillation on every resulting subinterval is at most \(\eta\). Include all the subdivision points in the partition.
The total length of these complementary subintervals is at most \(b-a\). Their total contribution to the Darboux gap is consequently at most
Combining the two estimates gives
Since this construction works for every \(\varepsilon>0\), the Darboux integrability criterion shows that \(f\) is Riemann integrable. \(\square\)
Worked Examples
Worked Example: One Oscillatory Discontinuity
Define \(f:[0,1]\to\mathbb{R}\) by \(f(0)=0\) and \(f(x)=\sin(1/x)\) for \(x>0\). Show how to make the Darboux gap smaller than \(0.1\).
First, \(|f(x)|\le 1\), so we may take \(M=1\). The function is continuous for \(x>0\). It is discontinuous at \(0\): for positive integers \(n\), the points \(x_n=1/(\pi/2+2\pi n)\) approach \(0\) and satisfy \(f(x_n)=1\); the points \(y_n=1/(3\pi/2+2\pi n)\) also approach \(0\) and satisfy \(f(y_n)=-1\). Thus the function has exactly one discontinuity.
Put the interval \([0,0.02]\) around that discontinuity. Its oscillation is at most \(2\), so its contribution to the gap is at most
On \([0.02,1]\), the function is continuous on a closed interval and therefore uniformly continuous. Subdivide this interval so that every subinterval has oscillation at most \(0.05\). The total length of these subintervals is \(1-0.02=0.98\), so their contribution is at most
Including \(0.02\) as a partition point, the total gap is at most \(0.04+0.049=0.089\), which is less than \(0.1\). This satisfies the Darboux criterion for the chosen tolerance. Differing values along the two sequences confirm the discontinuity; the small interval controls its contribution rather than requiring the oscillation to disappear.
Worked Example: Two Oscillatory Discontinuities
On \([0,1]\), let \(c_1=1/3\), \(c_2=2/3\), and define \(g(x)=\sin(1/(x-c_1))+\sin(1/(x-c_2))\) whenever \(x\ne c_1,c_2\). Set \(g(c_1)=g(c_2)=0\). Show that the theorem provides a partition with Darboux gap less than \(0.2\).
Each sine term has absolute value at most \(1\), so \(|g(x)|\le 2\), and we take \(M=2\). Away from \(c_1\) and \(c_2\), both terms are continuous. At \(c_1\), the second term tends to the finite value \(\sin(1/(c_1-c_2))\), while the first term takes values \(1\) and \(-1\) along sequences approaching \(c_1\) from the right. Hence \(g\) is discontinuous at \(c_1\). The same reasoning, with the roles of the two terms reversed, proves discontinuity at \(c_2\).
Choose disjoint intervals of radius \(0.01\) around the two points. Both intervals lie inside \([0,1]\); their total length is \(2(0.02)=0.04\). The oscillation is at most \(2M=4\), so the total contribution from these intervals is at most
The complement consists of three closed intervals on which \(g\) is continuous. Subdivide them so that the oscillation on each subinterval is at most \(0.03\). Their combined length is \(1-0.04=0.96\), so their contribution is at most
The resulting gap is at most \(0.16+0.0288=0.1888\), which is less than \(0.2\). The finite number of discontinuities lets us isolate both points while leaving continuous closed intervals to subdivide.
Worked Example: Choosing a Tolerance for Several Points
Suppose \(h:[-1,3]\to\mathbb{R}\) is bounded by \(|h(x)|\le 5\), and its only discontinuities are three distinct points in the interior. For a target gap of \(0.1\), choose total length less than \(0.005\) for the intervals around these points. Their oscillation is at most \(2M=10\), so their total contribution is less than
The complementary intervals have combined length at most \(3-(-1)=4\). By uniform continuity on each one, subdivide until each subinterval has oscillation at most \(0.01\). The contribution from those pieces is at most
Thus the whole Darboux gap is less than \(0.05+0.04=0.09\), which is below the target \(0.1\). The calculation checks both contributions separately: \(0.05\) from the short intervals and at most \(0.04\) from the continuous pieces.
A Common Pitfall: A Point Is Not a Short Interval
A discontinuity is a single point, but a partition is made of subintervals. It is not enough to say that the point itself has length zero: the partition subinterval that contains it may have substantial width and large oscillation.
For example, for the function \(f\) in the first worked example, the partition with only endpoints \(P=\{0,1\}\) has one subinterval. Its supremum is \(1\) and its infimum is \(-1\), so
This gap is not small, even though the only discontinuity is at one point. The correction is to put a partition point at a small positive distance from \(0\), creating a short interval such as \([0,0.02]\). Its possible oscillation remains large, but its contribution is bounded by oscillation times width. The rest of the interval can then be subdivided using uniform continuity.
Why the Finite-Discontinuity Condition Matters
The proof relies on having only finitely many points to isolate. This ensures that we can choose short, pairwise disjoint intervals whose total length is as small as needed, and that removing them leaves only finitely many closed intervals for the uniform-continuity argument. If discontinuities are not finite, this construction does not automatically apply. In particular, boundedness alone does not guarantee integrability.
The argument also shows why both hypotheses are important. Boundedness provides a common upper bound on oscillation near the discontinuities. Continuity on the remaining closed intervals provides control there. The finite exceptional set lets us keep the total length of the uncontrolled regions small.
Check Your Understanding
Try answering these questions using the estimates and construction above.
- Why does a bound \(|f(x)|\le M\) imply that the oscillation on any subinterval is at most \(2M\)?
- What property of a continuous function on a closed interval controls oscillation after subdivision?
- In the proof, why must the total length of the intervals around discontinuities be chosen small?
- For \(f(x)=\sin(1/x)\) on \(x>0\), with \(f(0)=0\), why does the partition \(\{0,1\}\) have Darboux gap \(2\)?
- Which part of the proof depends on the discontinuity set being finite?