Continuity Measured by Oscillation
Riemann integrability is expressed through Darboux sums: the upper sum and lower sum can be made arbitrarily close by choosing a suitable partition. Continuity is a pointwise condition, so the connection between these two descriptions is not immediate. Oscillation provides the link. It records how much a function varies in arbitrarily small neighborhoods of a point; sets where that variation is appreciable can then be compared with the lengths of partition intervals.
Fix a compact interval \([a,b]\) with \(a<b\), and let \(f:[a,b]\to\mathbb{R}\) be bounded. For \(x\in[a,b]\) and \(r>0\), define the local oscillation at scale \(r\) by taking the supremum of \(|f(y)-f(z)|\) over \(y,z\in[a,b]\cap(x-r,x+r)\). The oscillation of \(f\) at \(x\) is the infimum of these quantities over \(r>0\):
The neighborhoods are relative to \([a,b]\), including when \(x\) is an endpoint. Boundedness ensures that each supremum is finite. For \(\varepsilon>0\), define the oscillation set \(D_\varepsilon=\{x\in[a,b]:\omega_f(x)\ge\varepsilon\}\). These sets describe where the function retains at least a specified amount of variation at every scale.
A point is a discontinuity precisely when its oscillation is positive. Indeed, if \(f\) is continuous at \(x\), then for every \(\eta>0\), in a sufficiently small neighborhood both \(|f(y)-f(x)|<\eta/2\) and \(|f(z)-f(x)|<\eta/2\), so \(|f(y)-f(z)|<\eta\). Thus \(\omega_f(x)=0\). Conversely, if \(\omega_f(x)=0\), then for each \(\eta>0\) there is a neighborhood on which \(|f(y)-f(z)|<\eta\). Taking \(z=x\) shows continuity at \(x\). Consequently, \(D=\bigcup_{n=1}^{\infty}D_{1/n}\).
Each \(D_\varepsilon\) is closed in \([a,b]\). To verify this, suppose \(x\notin D_\varepsilon\), so \(\omega_f(x)<\varepsilon\). By the definition of the infimum there is a relative neighborhood \(V\) of \(x\) on which the supremum of all pairwise differences of \(f\) is less than \(\varepsilon\). Every point \(y\) sufficiently close to \(x\) has a smaller neighborhood contained in \(V\); hence \(\omega_f(y)<\varepsilon\). The complement of \(D_\varepsilon\) is therefore relatively open. In particular, \(D_\varepsilon\) is compact and Lebesgue measurable as a subset of \([a,b]\).
Lebesgue’s Criterion
Proof. First suppose \(f\) is Riemann integrable. We show that \(D_\varepsilon\) has measure zero for every \(\varepsilon>0\). Let \(\delta>0\). The Darboux criterion for Riemann integrability gives a partition \(P\) for which the upper sum minus the lower sum is less than \(\varepsilon\delta\). Write the partition intervals as \(I_j=[x_{j-1},x_j]\), their lengths as \(\ell_j=x_j-x_{j-1}\), and their oscillations as \(o_j=\sup_{I_j}f-\inf_{I_j}f\). The Darboux difference is \(\sum_j o_j\ell_j\).
If \(x\in D_\varepsilon\) is not a partition point, it lies in the interior of some \(I_j\). Every sufficiently small neighborhood of \(x\) is contained in \(I_j\), so \(\omega_f(x)\le o_j\). Therefore \(o_j\ge\varepsilon\), and the total length of all partition intervals with \(o_j\ge\varepsilon\) is at most \(\varepsilon^{-1}\sum_j o_j\ell_j<\delta\). The set \(D_\varepsilon\) is covered by these intervals together with the finitely many partition points. Finite sets have Lebesgue measure zero, so the Lebesgue outer measure of \(D_\varepsilon\) is at most \(\delta\). Since \(\delta>0\) was arbitrary, \(m(D_\varepsilon)=0\). The identity \(D=\bigcup_{n=1}^{\infty}D_{1/n}\) and countable subadditivity now give \(m(D)=0\).
Conversely, suppose \(m(D)=0\). Fix a desired Darboux-sum error \(\eta>0\), and choose \(M\ge0\) such that \(|f(x)|\le M\) for all \(x\in[a,b]\). Choose \(\alpha>0\) with \(\alpha(b-a)<\eta/2\). Since \(D_\alpha\subseteq D\), the compact set \(D_\alpha\) has measure zero. By the definition of a Lebesgue-null set, there is an open set \(U\subset\mathbb{R}\) containing \(D_\alpha\) such that \(m(U)<\delta\), where \(\delta>0\) is chosen so that \(2M\delta<\eta/2\) when \(M>0\). If \(M=0\), this last term is already zero, and any \(\delta>0\) can be used.
For every \(x\in[a,b]\setminus D_\alpha\), we have \(\omega_f(x)<\alpha\). Thus there is a relative open neighborhood \(V_x\) of \(x\) on which the supremum of \(|f(y)-f(z)|\), over pairs \(y,z\in V_x\), is less than \(\alpha\). The set \(U\), together with these neighborhoods, covers \([a,b]\); compactness gives a finite subcover. A finite open cover of a compact interval has a Lebesgue number: some \(\lambda>0\) such that every subset of diameter less than \(\lambda\) is contained in one member of the cover. This follows, for example, by contradiction: if no such \(\lambda\) existed, there would be subsets with diameters tending to zero not contained in any cover member; choosing a point from each and taking a convergent subsequence would contradict that a cover member is a neighborhood of the limit.
Take a partition \(P\) with mesh less than \(\lambda\), so every partition interval is contained in a member of the finite cover. Call an interval bad if it is contained in \(U\); call every other interval good. The interiors of the bad intervals are disjoint and lie in \(U\), so the sum of their lengths is at most \(m(U)<\delta\). Every good interval must be contained in one of the neighborhoods \(V_x\), and its oscillation is less than \(\alpha\). Every interval, including a bad one, has oscillation at most \(2M\). It follows that the Darboux difference satisfies
When \(M=0\), the bad-interval contribution is zero and the same strict bound follows from \(\alpha(b-a)<\eta/2\). We have produced, for every \(\eta>0\), a partition with Darboux difference less than \(\eta\). The Darboux criterion therefore gives Riemann integrability. This proves both directions. \(\square\)
Worked Examples
Worked Example: A Continuous Function
Let \(f(x)=x\) on \([0,1]\). For \(y,z\in[0,1]\), \(|f(y)-f(z)|=|y-z|\). In a neighborhood of radius \(r\) around any \(x\), this difference is at most \(2r\), so \(\omega_f(x)=0\) for every \(x\), including the endpoints. Thus every \(D_\varepsilon\) is empty and \(D=\varnothing\); the criterion gives Riemann integrability.
For a direct Darboux check, divide \([0,1]\) into \(n\) intervals of length \(1/n\). On each interval the oscillation of \(f\) is \(1/n\), so the Darboux difference is \(n(1/n)(1/n)=1/n\), which tends to zero. The upper sum is \(\sum_{k=1}^{n}(k/n)(1/n)=(n+1)/(2n)\), and the lower sum is \(\sum_{k=0}^{n-1}(k/n)(1/n)=(n-1)/(2n)\). Their common limit is \(1/2\), checking the integral.
Worked Example: Changing a Function at One Point
On \([0,1]\), let \(f(x)=x\) for \(x\ne 1/2\), and let \(f(1/2)=3\). At every \(x\ne1/2\), a small enough neighborhood avoids \(1/2\), and \(f\) agrees there with the continuous function \(x\mapsto x\), so the oscillation is zero. At \(x=1/2\), every neighborhood contains the value \(3\) and values of \(y\) arbitrarily close to \(1/2\). The infimum of the neighborhood oscillations is therefore \(3-1/2=5/2\). Hence \(D_\varepsilon=\{1/2\}\) for \(0<\varepsilon\le5/2\), and \(D_\varepsilon=\varnothing\) for \(\varepsilon>5/2\). In either case \(m(D)=0\), so the function is Riemann integrable.
The bounded Riemann-integrable function is Lebesgue measurable, and its Lebesgue integral equals its Riemann integral by the equality theorem for bounded functions. Since changing a function on a singleton does not change its Lebesgue integral, the value is \(\int_0^1 x\,dm=1/2\). The partition calculation for \(x\) above also checks this value: the modification affects only intervals containing \(1/2\), whose total length can be made arbitrarily small by placing partition points on either side of \(1/2\).
Worked Example: A Step Function with One Jump
Define \(f=\chi_{[0,1/3]}\) on \([0,1]\). At points other than \(1/3\), the function is constant on a sufficiently small relative neighborhood, so its oscillation is zero. At \(1/3\), every neighborhood contains points where \(f=1\) and points where \(f=0\), so \(\omega_f(1/3)=1\). Thus \(D_\varepsilon=\{1/3\}\) for \(0<\varepsilon\le1\), and \(D_\varepsilon=\varnothing\) for \(\varepsilon>1\). The discontinuity set is a singleton and has measure zero; the criterion proves Riemann integrability.
For an explicit Darboux check, choose \(0<h<2/3\) and use the partition \(0,1/3,1/3+h,1\). The oscillation is zero on \([0,1/3]\), one on \([1/3,1/3+h]\), and zero on \([1/3+h,1]\). The Darboux difference is therefore \(1\cdot h=h\), which can be made arbitrarily small. The integral is the length of the interval where the indicator equals one, namely \(1/3\). Equivalently, the upper and lower sums for this partition are \(1/3+h\) and \(1/3\), whose difference is \(h\); their limits agree at \(1/3\).
What the Criterion Does—and Does Not—Say
A common mistake is to argue that a bounded function is Riemann integrable merely because its discontinuity set is countable. Countability by itself is not the hypothesis in the theorem: the required property is Lebesgue measure zero. For example, a countable set is null by countable subadditivity, but an uncountable set can also be null. The proof uses the measure of the exceptional set to make the total length of bad partition intervals small; the number of exceptional points is not the controlling quantity.
Another pitfall is reversing the roles of the oscillation threshold and the set of discontinuities. The sets \(D_\varepsilon\) contain points whose oscillation is at least \(\varepsilon\); they need not contain every discontinuity for a fixed \(\varepsilon\). The full discontinuity set is the countable union \(D=\bigcup_{n\ge1}D_{1/n}\). In the forward proof, the threshold \(\varepsilon\) converts a small Darboux difference into a small total length of intervals with oscillation at least \(\varepsilon\). In the reverse proof, a fixed small threshold controls the oscillation on good intervals, while a small open cover controls the lengths of the remaining intervals.
The criterion is also a statement about bounded functions on a compact interval. Its Darboux-sum argument does not directly address unbounded functions or improper integrals. Within its stated setting, it explains exactly how a function may fail to be continuous at some points and still be Riemann integrable: the points of discontinuity must occupy no Lebesgue measure.
Check Your Understanding
For each question, identify the oscillation threshold and the measure or Darboux-sum fact needed to justify your conclusion.
- Why does \(\omega_f(x)=0\) imply continuity at \(x\)? Give the neighborhood argument using an arbitrary tolerance \(\eta>0\).
- In the forward proof, why are partition points added to the intervals with oscillation at least \(\varepsilon\) when covering \(D_\varepsilon\)?
- Suppose \(f\) is bounded and \(m(D)=0\). Explain why \(D_\alpha\) is compact and why it can be covered by an open set of arbitrarily small measure.
- For \(f=\chi_{[0,1/3]}\) on \([0,1]\), find \(D_\varepsilon\) separately for \(0<\varepsilon\le1\) and \(\varepsilon>1\).
- In the reverse proof, identify the separate bounds for the good-interval and bad-interval contributions to the Darboux difference.