Uniform Continuity

Consider the function f(x)=1/xf(x) = 1/x on the open interval (0,1)(0,1). Also consider the function g(x)=x2g(x) = x^2 on the closed interval [0,10][0,10]. Both are continuous everywhere on their domains. Yet they behave very differently as you demand more precision. For gg, a single "margin of error" in xx works uniformly across the whole domain. This margin controls the error in g(x)g(x) everywhere. For ff, no such uniform margin exists. Near x=0x=0, arbitrarily small changes in xx produce arbitrarily large changes in f(x)f(x). So any fixed tolerance in xx that works far from the origin fails catastrophically close to it. This distinction matters: a single δ\delta working everywhere versus a δ\delta that must shrink near trouble spots. It is invisible in the ordinary ε\varepsilon–δ\delta definition of continuity. That definition only compares behavior at a point. Uniform continuity repairs this by demanding a δ\delta that depends only on ε\varepsilon. It must not depend on the location in the domain. It is a strictly stronger condition than continuity. The gap between them is exactly the phenomenon illustrated by 1/x1/x. Continuity can fail to be uniform when the domain is not compact. This happens either because the domain is unbounded, or because it has "holes." These holes are missing boundary points where the function blows up or oscillates too wildly. The central theorem of this article closes the gap in the best possible way. If a function is continuous on a closed, bounded interval, it is automatically uniformly continuous there. This result is due in essence to Heine. The general topological formulation is credited jointly to Heine and Borel. It is one of the first serious payoffs of compactness in analysis. It underlies the Riemann integrability of continuous functions. It also underlies the uniform convergence of Bernstein polynomial approximations. Countless other constructions rely on it too, wherever one needs "one δ\delta to rule them all." This article gives the precise definition. It carefully contrasts uniform continuity with pointwise continuity. It proves the Heine–Cantor theorem in full, using the Bolzano–Weierstrass property of compact sets. It also shows, via explicit examples, exactly where and why the hypothesis of compactness is indispensable.

Key takeaways
  • Continuity at a point allows δ\delta to depend on both ε\varepsilon and the point x0x_0; uniform continuity requires a single δ(ε)\delta(\varepsilon) that works for every point in the domain simultaneously.
  • Uniform continuity ⇒\Rightarrow continuity always, but the converse fails in general (e.g., f(x)=1/xf(x)=1/x on (0,1)(0,1), f(x)=x2f(x)=x^2 on R\mathbb{R}).
  • Heine–Cantor theorem: a function continuous on a closed bounded interval [a,b][a,b] is automatically uniformly continuous on [a,b][a,b].
  • The proof is a compactness argument: assume uniform continuity fails, extract a convergent subsequence via Bolzano–Weierstrass, and contradict ordinary continuity at the limit point.
  • Uniform continuity is exactly the right hypothesis for interchanging limits with function evaluation uniformly, for extending functions continuously to closures, and for proving Riemann integrability.
  • Key idea: uniform continuity replaces "control near each point" with "control everywhere at once," and compactness is precisely what makes the two coincide.

Where this lives today

Uniform continuity is not a curiosity confined to introductory courses — it is a load-bearing hypothesis throughout mathematics and its applications.

  • Riemann integration. The standard proof that every continuous function on [a,b][a,b] is Riemann integrable uses uniform continuity to make upper and lower Riemann sums converge to the same value: uniform continuity lets you choose a single partition mesh size that controls the oscillation of ff on every subinterval simultaneously.
  • Uniform approximation theory. The Weierstrass approximation theorem (polynomials are dense in continuous functions on [a,b][a,b] under the sup norm) and Bernstein's explicit polynomial construction both rely on uniform continuity of the target function on the compact interval to get uniform (not just pointwise) convergence of the approximants.
  • Numerical analysis. Discretization error bounds for numerical integration (Riemann sums, trapezoidal rule) and root-finding algorithms depend on a uniform modulus of continuity to guarantee that mesh refinement improves accuracy everywhere at a controlled, predictable rate.
  • Metric space theory and completions. A uniformly continuous function on a dense subset of a metric space extends uniquely to a continuous function on the completion; this is how the exponential function, Fourier transforms on L2L^2, and many operators in functional analysis are rigorously constructed by extension from a dense, simpler subspace.
  • Signal processing and control theory. Uniform continuity of a system's response function guarantees that small, uniformly bounded perturbations in an input signal (across all times, not just locally) produce uniformly bounded changes in output — a stability guarantee stronger than pointwise continuity provides.
  • Probability and statistics. Uniform continuity (and its quantitative refinement, uniform equicontinuity) underlies tightness arguments and the Arzelà–Ascoli theorem, which are central to proving convergence of stochastic processes and to establishing the existence of limiting distributions in empirical process theory.
  • Cryptography and complexity. In computable analysis, the notion of a function being "uniformly computable" on a compact domain (computable with a modulus of continuity independent of the specific input) parallels uniform continuity and is essential for complexity bounds on numerical algorithms operating over real-number representations.

Ask the tutor: Why does uniform continuity guarantee that continuous functions on [a,b][a,b] are Riemann integrable?

DefinitionUniform Continuity

Let D⊆RD \subseteq \mathbb{R} and let f:D→Rf: D \to \mathbb{R}. We say ff is uniformly continuous on DD if

∀ε>0, ∃δ>0 such that ∀x,y∈D,∣x−y∣<δ  ⟹  ∣f(x)−f(y)∣<ε.\forall \varepsilon > 0,\ \exists \delta > 0 \text{ such that } \forall x, y \in D,\quad |x - y| < \delta \implies |f(x) - f(y)| < \varepsilon.

Contrast this with (pointwise) continuity on DD, meaning ff is continuous at every x0∈Dx_0 \in D:

∀x0∈D, ∀ε>0, ∃δ>0 such that ∀x∈D,∣x−x0∣<δ  ⟹  ∣f(x)−f(x0)∣<ε.\forall x_0 \in D,\ \forall \varepsilon > 0,\ \exists \delta > 0 \text{ such that } \forall x \in D,\quad |x - x_0| < \delta \implies |f(x) - f(x_0)| < \varepsilon.

The logical difference is the order of quantifiers. In ordinary continuity, δ\delta may depend on ε\varepsilon and on x0x_0: δ=δ(ε,x0)\delta = \delta(\varepsilon, x_0). In uniform continuity, δ\delta depends on ε\varepsilon alone: δ=δ(ε)\delta = \delta(\varepsilon), and it must work for every pair of points x,y∈Dx,y \in D (not just for xx near a fixed x0x_0).

Intuition

Think of continuity at a point x0x_0 as a promise: "give me an error tolerance ε\varepsilon, and I will find a neighborhood of x0x_0 small enough that ff doesn't move by more than ε\varepsilon inside it." Nothing forbids that neighborhood from shrinking to nothing as x0x_0 ranges over the domain. Uniform continuity is the stronger promise that one neighborhood-radius δ\delta works simultaneously for every basepoint x0x_0 in the domain. A useful mental picture: slide a "2δ×2ε2\delta \times 2\varepsilon" rectangle (or box) along the graph of ff, centered at each point (x0,f(x0))(x_0, f(x_0)). Continuity says that for each x0x_0 some box of height 2ε2\varepsilon (with ε\varepsilon given) has some width 2δ2\delta narrow enough that the graph stays inside the box as it passes through. Uniform continuity says one width 2δ2\delta works for the box centered at every point on the graph. For f(x)=1/xf(x) = 1/x on (0,1)(0,1), the graph gets steeper and steeper as x→0+x \to 0^+, so the box must get narrower and narrower — no single width works for all boxes.

Figure
The graph of f(x)=1/xf(x)=1/x on (0,1)(0,1) steepens without bound; no single width δ\delta keeps the graph inside a height-ε\varepsilon box everywhere.
x y f(x) = 1/x narrow box needed near 0 wide box OK far from 0 0 1

The picture changes entirely if the domain is compact — closed and bounded. On [a,b][a,b], a continuous function cannot "run off to infinity in slope" the way 1/x1/x does as it approaches a missing endpoint, because every point of [a,b][a,b], including the endpoints, is actually in the domain and continuity applies there too. This is the seed of the Heine–Cantor theorem: compactness prevents the domain from having any "escape route" where local moduli of continuity could degenerate.

TheoremHeine–Cantor Theorem

Let a<ba < b be real numbers and let f:[a,b]→Rf : [a,b] \to \mathbb{R} be continuous on [a,b][a,b] (i.e., continuous at every point of [a,b][a,b], using one-sided limits at the endpoints). Then ff is uniformly continuous on [a,b][a,b].

Proof

We use proof by contradiction combined with the Bolzano–Weierstrass theorem, exploiting the compactness (closed and boundedness) of [a,b][a,b].

Setup. Suppose, for contradiction, that ff is continuous on [a,b][a,b] but not uniformly continuous on [a,b][a,b]. Negating the definition of uniform continuity, there exists ε0>0\varepsilon_0 > 0 such that for every δ>0\delta > 0, there exist points x,y∈[a,b]x, y \in [a,b] with

∣x−y∣<δbut∣f(x)−f(y)∣≥ε0.|x - y| < \delta \quad \text{but} \quad |f(x) - f(y)| \geq \varepsilon_0.

Step 1: Construct sequences. Apply this failure of the definition to each δ=δn:=1n\delta = \delta_n := \tfrac{1}{n} for n=1,2,3,…n = 1, 2, 3, \dots. For each nn, we obtain points xn,yn∈[a,b]x_n, y_n \in [a,b] satisfying

∣xn−yn∣<1nand∣f(xn)−f(yn)∣≥ε0.(∗)|x_n - y_n| < \frac{1}{n} \qquad \text{and} \qquad |f(x_n) - f(y_n)| \geq \varepsilon_0. \tag{$\ast$}

This gives sequences (xn)n=1∞(x_n)_{n=1}^{\infty} and (yn)n=1∞(y_n)_{n=1}^{\infty} in [a,b][a,b].

Step 2: Extract a convergent subsequence. Since (xn)(x_n) is a sequence in the closed bounded interval [a,b][a,b], the Bolzano–Weierstrass theorem guarantees a convergent subsequence (xnk)k=1∞(x_{n_k})_{k=1}^{\infty} with

xnk→cfor some c∈R.x_{n_k} \to c \quad \text{for some } c \in \mathbb{R}.

Because each xnk∈[a,b]x_{n_k} \in [a,b] and [a,b][a,b] is closed, the limit satisfies c∈[a,b]c \in [a,b]. (Closedness is essential here: a limit of points in the set stays in the set.)

Step 3: The paired sequence converges to the same limit. Consider the corresponding subsequence (ynk)k=1∞(y_{n_k})_{k=1}^{\infty}. From (∗)(\ast), for every kk,

∣xnk−ynk∣<1nk.|x_{n_k} - y_{n_k}| < \frac{1}{n_k}.

Since nk→∞n_k \to \infty as k→∞k \to \infty (subsequence indices are strictly increasing), we have 1nk→0\frac{1}{n_k} \to 0. By the triangle inequality,

∣ynk−c∣≤∣ynk−xnk∣+∣xnk−c∣<1nk+∣xnk−c∣⟶0+0=0|y_{n_k} - c| \leq |y_{n_k} - x_{n_k}| + |x_{n_k} - c| < \frac{1}{n_k} + |x_{n_k} - c| \longrightarrow 0 + 0 = 0

as k→∞k \to \infty. Hence ynk→cy_{n_k} \to c as well.

Step 4: Contradict continuity at cc. Since ff is continuous at c∈[a,b]c \in [a,b], and since xnk→cx_{n_k} \to c, the sequential characterization of continuity gives

f(xnk)→f(c)as k→∞.f(x_{n_k}) \to f(c) \quad \text{as } k \to \infty.

Similarly, since ynk→cy_{n_k} \to c, continuity at cc gives

f(ynk)→f(c)as k→∞.f(y_{n_k}) \to f(c) \quad \text{as } k \to \infty.

Therefore, by the algebra of limits,

f(xnk)−f(ynk)→f(c)−f(c)=0as k→∞,f(x_{n_k}) - f(y_{n_k}) \to f(c) - f(c) = 0 \quad \text{as } k \to \infty,

which means

∣f(xnk)−f(ynk)∣→0.|f(x_{n_k}) - f(y_{n_k})| \to 0.

But from (∗)(\ast), we know ∣f(xnk)−f(ynk)∣≥ε0|f(x_{n_k}) - f(y_{n_k})| \geq \varepsilon_0 for every kk, so the sequence ∣f(xnk)−f(ynk)∣|f(x_{n_k}) - f(y_{n_k})| cannot converge to 00 (a sequence of terms all ≥ε0>0\geq \varepsilon_0 > 0 cannot have limit 00, since taking ε=ε0\varepsilon = \varepsilon_0 in the definition of sequential convergence to 00 is violated for all kk). This is a contradiction.

Conclusion. The assumption that ff is continuous but not uniformly continuous on [a,b][a,b] leads to a contradiction. Hence ff must be uniformly continuous on [a,b][a,b]. ■\blacksquare

∎

Remark on the proof technique. This is the standard "sequential compactness" argument: turn a failure of a uniform (∀δ\forall\delta) statement into a sequence, extract a convergent subsequence using compactness of the domain, and derive a contradiction from ordinary (pointwise) continuity at the limit point. The same schema proves the Extreme Value Theorem and many other compactness-based results in analysis; it never invokes uniform continuity itself, so there is no circularity.

Worked examples

Example 1: A polynomial on a closed bounded interval, verified directly (not just via the theorem). Let f(x)=x3−2xf(x) = x^3 - 2x on [−2,3][-2, 3]. We verify uniform continuity directly with an explicit δ(ε)\delta(\varepsilon), illustrating the mechanism the Heine–Cantor theorem guarantees abstractly. For x,y∈[−2,3]x, y \in [-2,3],

f(x)−f(y)=(x3−y3)−2(x−y)=(x−y)(x2+xy+y2)−2(x−y)=(x−y)(x2+xy+y2−2).f(x) - f(y) = (x^3 - y^3) - 2(x-y) = (x-y)(x^2+xy+y^2) - 2(x - y) = (x-y)\big(x^2+xy+y^2 - 2\big).

Since x,y∈[−2,3]x, y \in [-2,3], we have ∣x∣≤3|x| \le 3 and ∣y∣≤3|y| \le 3, so

∣x2+xy+y2−2∣≤∣x∣2+∣x∣∣y∣+∣y∣2+2≤9+9+9+2=29.|x^2 + xy + y^2 - 2| \leq |x|^2 + |x||y| + |y|^2 + 2 \leq 9 + 9 + 9 + 2 = 29.

Hence

∣f(x)−f(y)∣≤29 ∣x−y∣.|f(x) - f(y)| \leq 29\,|x - y|.

Given ε>0\varepsilon > 0, choose

δ=δ(ε):=ε29.\delta = \delta(\varepsilon) := \frac{\varepsilon}{29}.

Then for all x,y∈[−2,3]x,y \in [-2,3] with ∣x−y∣<δ|x-y| < \delta,

∣f(x)−f(y)∣≤29∣x−y∣<29⋅ε29=ε.|f(x)-f(y)| \le 29|x-y| < 29 \cdot \frac{\varepsilon}{29} = \varepsilon.

This δ\delta depends only on ε\varepsilon (not on xx or yy), confirming uniform continuity directly — exactly as the theorem predicts, since ff is continuous (a polynomial) on the closed bounded interval [−2,3][-2,3]. Notice the bound 2929 came from the boundedness of the domain: on an unbounded domain like all of R\mathbb{R}, the analogous bound ∣x2+xy+y2−2∣|x^2+xy+y^2-2| would be unbounded, and indeed ff is not uniformly continuous on R\mathbb{R} (cubics grow too fast — see the counterexample below for the general phenomenon with x2x^2).

Example 2: Uniform continuity of x\sqrt{x} on [0,100][0, 100], where the naive Lipschitz bound fails. Let g(x)=xg(x) = \sqrt{x} on [0,100][0, 100]. This example is instructive because gg is not Lipschitz near x=0x=0 (its derivative 12x\tfrac{1}{2\sqrt x} is unbounded as x→0+x \to 0^+), so the slick "bound the difference quotient" trick from Example 1 does not directly apply — yet the Heine–Cantor theorem still guarantees uniform continuity, and we can exhibit δ(ε)\delta(\varepsilon) by a case split. gg is continuous on [0,100][0,100] (standard fact about the square root function, continuous on its whole domain [0,∞)[0,\infty), hence continuous on [0,100][0,100] including the endpoint x=0x=0 via a one-sided limit). By the Heine–Cantor theorem, gg is uniformly continuous on [0,100][0,100]. Let us verify with an explicit δ\delta. Fix ε>0\varepsilon > 0. We split into two regimes. Case A (both points near 0). If x,y∈[0,ε2]x, y \in [0, \varepsilon^2], then x,y∈[0,ε]\sqrt{x}, \sqrt{y} \in [0, \varepsilon], so trivially

∣g(x)−g(y)∣=∣x−y∣≤x+y≤ε+ε=2ε.|g(x) - g(y)| = |\sqrt x - \sqrt y| \le \sqrt x + \sqrt y \le \varepsilon + \varepsilon = 2\varepsilon.

(We will absorb the factor of 22 by using ε/2\varepsilon/2 in place of ε\varepsilon throughout; see below.) Case B (at least one point bounded away from 0). Suppose x,y∈[0,100]x, y \in [0,100] with max⁡(x,y)≥ε2\max(x,y) \geq \varepsilon^2 (so we are not both in the tiny interval above). Using the identity

x−y=x−yx+y(x≠y, and interpreted via continuity if x=y),\sqrt x - \sqrt y = \frac{x - y}{\sqrt x + \sqrt y} \quad (x \ne y, \text{ and interpreted via continuity if } x=y),

if additionally y≥ε2/4y \geq \varepsilon^2/4 say, then x+y≥ε/2\sqrt x + \sqrt y \geq \varepsilon/2, giving ∣g(x)−g(y)∣≤2ε∣x−y∣|g(x)-g(y)| \le \tfrac{2}{\varepsilon}|x-y|, so a Lipschitz-type bound does hold once we are bounded away from 00. To assemble a single clean δ\delta, take (working with tolerance ε\varepsilon from the start, redoing constants carefully): Given ε>0\varepsilon>0, let δ=δ(ε):=ε2\delta = \delta(\varepsilon) := \varepsilon^2 . We claim this works for all x,y∈[0,100]x,y \in [0,100] with ∣x−y∣<δ|x-y|<\delta. Assume without loss of generality x≤yx \le y (the roles of x,yx,y are symmetric in ∣g(x)−g(y)∣|g(x)-g(y)|), so 0≤y−x<ε20 \le y - x < \varepsilon^2.

  • If x=0x = 0: then y<ε2y < \varepsilon^2, so ∣g(x)−g(y)∣=y<ε2=ε|g(x)-g(y)| = \sqrt y < \sqrt{\varepsilon^2} = \varepsilon.
  • If x>0x > 0: then since (y−x)(y+x)=y−x(\sqrt y - \sqrt x)(\sqrt y + \sqrt x) = y - x,
y−x=y−xy+x≤y−xx(using y+x≥x>0).\sqrt y - \sqrt x = \frac{y-x}{\sqrt y + \sqrt x} \le \frac{y - x}{\sqrt x} \quad (\text{using } \sqrt y+\sqrt x \ge \sqrt x > 0).

This bound alone isn't uniform as x→0x\to0, so instead compare y−x\sqrt y - \sqrt x to y−x\sqrt{y-x} directly: since t↦tt \mapsto \sqrt t is subadditive on [0,∞)[0,\infty) (i.e. a+b≤a+b\sqrt{a+b} \le \sqrt a + \sqrt b for a,b≥0a,b\ge 0, proven by squaring both sides: a+b≤a+2ab+ba + b \le a + 2\sqrt{ab}+b), we get

y=x+(y−x)≤x+y−x,\sqrt y = \sqrt{x + (y-x)} \le \sqrt x + \sqrt{y - x},

so

y−x≤y−x<ε2=ε.\sqrt y - \sqrt x \le \sqrt{y-x} < \sqrt{\varepsilon^2} = \varepsilon.

In both cases ∣g(x)−g(y)∣<ε|g(x)-g(y)| < \varepsilon whenever ∣x−y∣<δ=ε2|x-y|<\delta=\varepsilon^2, and δ\delta depends only on ε\varepsilon. This confirms uniform continuity of x\sqrt{x} on [0,100][0,100] directly, matching the guarantee of the Heine–Cantor theorem, and shows the theorem's power: it spares us this case analysis whenever we only need existence of some uniform δ\delta, not an explicit formula.

CounterexampleCompactness cannot be dropped: unbounded domain

The Heine–Cantor theorem requires the domain to be a closed and bounded interval. Drop boundedness and the conclusion fails.

Claim. f(x)=x2f(x) = x^2 is continuous on R\mathbb{R} (which is closed but unbounded) but not uniformly continuous on R\mathbb{R}. Continuity is standard: for any x0x_0, f(x)−f(x0)=(x−x0)(x+x0)f(x) - f(x_0) = (x-x_0)(x+x_0), and near x0x_0 this is small whenever x−x0x - x_0 is small, since x+x0x + x_0 stays bounded on any bounded neighborhood of x0x_0. (This is exactly Example 1's mechanism, but with the bound on ∣x+x0∣|x+x_0| depending on x0x_0 — the crux of the failure below.) Failure of uniform continuity: Take ε0=1\varepsilon_0 = 1. We show that no δ>0\delta > 0 works for every pair of points in R\mathbb{R}. Fix any δ>0\delta > 0. Choose

x=1δ,y=1δ+δ2.x = \frac{1}{\delta}, \qquad y = \frac{1}{\delta} + \frac{\delta}{2}.

Then ∣x−y∣=δ/2<δ|x - y| = \delta/2 < \delta, so these points are within δ\delta of each other. But

f(y)−f(x)=(1δ+δ2)2−(1δ)2=2⋅1δ⋅δ2+δ24=1+δ24≥1=ε0.f(y) - f(x) = \left(\frac{1}{\delta}+\frac{\delta}{2}\right)^2 - \left(\frac{1}{\delta}\right)^2 = 2\cdot\frac{1}{\delta}\cdot\frac{\delta}{2} + \frac{\delta^2}{4} = 1 + \frac{\delta^2}{4} \geq 1 = \varepsilon_0.

So for this ε0=1\varepsilon_0 = 1, every candidate δ>0\delta>0 fails to force ∣f(x)−f(y)∣<ε0|f(x)-f(y)|<\varepsilon_0 for all pairs within δ\delta: we exhibited a specific violating pair for each δ\delta. This is precisely the negation of uniform continuity.

Diagnosis. The domain R\mathbb{R} is closed but not bounded, so it is not compact; sequences like xn=nx_n = n have no convergent subsequence, so Step 2 of the Heine–Cantor proof (Bolzano–Weierstrass extraction) is unavailable. The function's slope f′(x)=2xf'(x) = 2x grows without bound as x→∞x\to\infty, so the "box width" needed to keep ff within ε\varepsilon shrinks to 00 as we slide out to infinity — there is no smallest positive width that works everywhere. A second classic instance drops boundedness of the interval differently by instead dropping closedness: f(x)=1/xf(x) = 1/x is continuous on (0,1)(0,1) (bounded but not closed — missing the point 00) yet not uniformly continuous there, by an entirely analogous argument (take x=δx = \delta, y=δ/2y=\delta/2 for small δ\delta; then ∣x−y∣=δ/2<δ|x-y| = \delta/2 <\delta but ∣f(x)−f(y)∣=∣1/δ−2/δ∣=1/δ→∞|f(x)-f(y)| = |1/\delta - 2/\delta| = 1/\delta \to \infty). This shows both closedness and boundedness are needed; compactness is the precise hypothesis, not either piece alone.

Scope, edge cases & common traps

SituationUniformly continuous?Reason
ff continuous on [a,b][a,b], closed & boundedYes, alwaysHeine–Cantor theorem
ff continuous on (a,b)(a,b), open boundedNot necessarilye.g. 1/x1/x on (0,1)(0,1) fails; but f(x)=x2f(x)=x^2 on (0,1)(0,1) does happen to be uniformly continuous (bounded slope)
ff continuous on [a,∞)[a,\infty) or R\mathbb RNot necessarilye.g. x2x^2 fails; but sin⁡x\sin x or Lipschitz functions succeed
ff Lipschitz on any interval (bounded or not)Yes, always∣f(x)−f(y)∣≤L∣x−y∣|f(x)-f(y)|\le L|x-y| gives δ=ε/L\delta=\varepsilon/L directly, no compactness needed
ff uniformly continuous on bounded DDextends continuously to D‾\overline DCauchy sequences in DD map to Cauchy sequences, forcing a limit to exist at boundary points

The mathematician behind it

Origins · 1 minEduard Heine and how this was discovered
EH
Eduard Heine
1821–1881 · Analysis, University of Halle, Germany

Heine was a German mathematician whose work in the 1870s clarified the difference between continuity and uniform continuity, and who gave one of the first rigorous statements and proofs of what is now called the Heine–Cantor theorem. He worked in a period when the foundations of real analysis — precise ε\varepsilon–δ\delta definitions, rigorous treatment of limits, and careful distinctions between pointwise and uniform notions — were being hammered out by the generation following Cauchy and Weierstrass. Heine's 1872 paper "Die Elemente der Functionenlehre" is a key text establishing these distinctions with full rigor, building on ideas he attributed in part to conversations with Weierstrass and to Georg Cantor's contemporaneous work on the topology of the real line.

History
- 1821: Eduard Heine born in Berlin.
- 1861–1872: Heine works at Halle, developing rigorous foundations for real function theory, sharpening Weierstrass's ε\varepsilon–δ\delta methods.
- 1872: Heine publishes "Die Elemente der Functionenlehre," containing the theorem that continuity on a closed bounded interval implies uniform continuity, crediting discussions with Cantor and Weierstrass on the underlying compactness-type property of [a,b][a,b].
- 1872 (same period): Georg Cantor develops the nested interval property and early ideas that will crystallize into the general Heine–Borel theorem, extending the closed-bounded compactness criterion beyond intervals.
- 1881: Heine dies in Halle; the theorem bearing his name (jointly with Cantor, and later generalized by Borel and Lebesgue to arbitrary compact sets) becomes a standard pillar of real analysis curricula worldwide.
Is every uniformly continuous function also continuous?

Yes, always, and this direction requires no special hypotheses on the domain. If ff is uniformly continuous on DD, then given ε>0\varepsilon>0 there is a δ>0\delta>0 working for all pairs x,y∈Dx,y\in D with ∣x−y∣<δ|x-y|<\delta; in particular, fixing any x0∈Dx_0\in D and letting y=x0y=x_0 vary as xx, the same δ\delta certifies ordinary continuity at x0x_0. So uniform continuity is a strictly stronger condition: it implies pointwise continuity at every point, but (as the counterexamples show) the converse implication requires extra hypotheses like compactness of the domain or a global Lipschitz bound.

Does uniform continuity require the domain to be an interval?

No — the definition makes sense for f:D→Rf: D \to \mathbb{R} with DD any subset of R\mathbb{R} (or more generally any metric space). The Heine–Cantor theorem itself generalizes beyond intervals: if ff is continuous on any compact subset KK of Rn\mathbb{R}^n (or of a general metric space), then ff is uniformly continuous on KK. Compactness of KK (every sequence in KK has a subsequence converging to a point of KK) is exactly what the proof needs, and closed bounded intervals are simply the compact subsets of R\mathbb{R} by the Heine–Borel theorem, which is why the interval version is the natural first case to master.

Can a function be uniformly continuous on an unbounded domain?

Yes, absolutely — boundedness of the domain is sufficient but not necessary. Lipschitz functions such as f(x)=3x+7f(x) = 3x + 7 or f(x)=sin⁡xf(x)=\sin x are uniformly continuous on all of R\mathbb{R}, since a global Lipschitz bound ∣f(x)−f(y)∣≤L∣x−y∣|f(x)-f(y)| \le L|x-y| immediately yields δ=ε/L\delta = \varepsilon/L working everywhere, with no compactness needed at all. What fails on unbounded domains is only the automatic implication from continuity: continuity alone (without an extra growth condition like a Lipschitz bound) does not guarantee uniform continuity when the domain is unbounded, as x2x^2 on R\mathbb{R} demonstrates.

How does uniform continuity relate to Lipschitz continuity?

Lipschitz continuity is strictly stronger: if ∣f(x)−f(y)∣≤L∣x−y∣|f(x)-f(y)| \le L|x-y| for a fixed constant LL and all x,yx,y in the domain, then setting δ=ε/L\delta=\varepsilon/L instantly gives uniform continuity, with no need for compactness. The converse fails: x\sqrt{x} on [0,100][0,100] is uniformly continuous (by Heine–Cantor, since [0,100][0,100] is compact) but is not Lipschitz, because its difference quotients x−yx−y=1x+y\frac{\sqrt x - \sqrt y}{x-y} = \frac{1}{\sqrt x+\sqrt y} blow up as x,y→0x,y\to 0. So on a compact interval, continuity, uniform continuity, and (for many "nice" functions) even Hölder-type moduli of continuity all coexist, but Lipschitz continuity is a genuinely stronger, separate condition.

Is the converse of Heine–Cantor true — does uniform continuity on DD imply DD is closed and bounded?

No, this converse is false, and it is important not to assert it. There exist uniformly continuous functions on domains that are neither closed nor bounded: for instance f(x)=xf(x)=x is uniformly continuous (in fact Lipschitz with L=1L=1) on the open, unbounded set D=(0,∞)D=(0,\infty). The Heine–Cantor theorem is a one-directional implication — compactness of the domain is sufficient to upgrade continuity to uniform continuity — but it is not a characterization of which domains support uniformly continuous functions, since trivially every domain supports at least the uniformly continuous constant function.

What is the practical test for whether a specific continuous function is uniformly continuous on a non-compact domain?

There is no single algorithm, but three reliable techniques cover most textbook cases. First, check for a global Lipschitz bound (bounded derivative) — this always suffices, compact or not. Second, if the domain is an open bounded interval like (a,b)(a,b), check whether ff extends to a continuous function on the closed interval [a,b][a,b] (i.e., whether lim⁡x→a+f(x)\lim_{x\to a^+} f(x) and lim⁡x→b−f(x)\lim_{x\to b^-} f(x) exist and are finite); if so, apply Heine–Cantor to the extension, and the restriction inherits uniform continuity. Third, on unbounded domains, examine the behavior as x→±∞x\to\pm\infty: if ff has a finite limit or grows at most linearly with bounded slope at infinity, uniform continuity typically holds, while polynomial growth of degree ≥2\ge 2 typically breaks it, as the x2x^2 counterexample shows.

Before this