Calculus
Squeeze Theorem
Two converging bounds force the function between them to the same limit
If g(x) ≤ f(x) ≤ h(x) near a, and g(x) and h(x) both converge to the same value L, then f(x) is forced to converge to L too. The standard tool when L'Hôpital and substitution fail — used to prove lim sin(x)/x = 1 and to tame oscillating limits.
- Statementg ≤ f ≤ h, g→L, h→L ⇒ f→L
- Also calledSandwich theorem, pinching theorem, two-policemen theorem
- Applies to limits ata, ±∞, one-sided, sequences
- RequiredInequality on a punctured neighbourhood, NOT differentiability
- Canonical uselim sin(x)/x = 1 via cos x ≤ sin(x)/x ≤ 1
- Power caseBounded × infinitesimal = infinitesimal
Watch the 60-second explainer
A condensed visual walkthrough — narrated, captioned, under a minute.
The theorem, stated precisely
Suppose g, f, and h are defined on a punctured neighbourhood of a, and
g(x) ≤ f(x) ≤ h(x) for all x near a (x ≠ a),
lim_{x→a} g(x) = lim_{x→a} h(x) = L.
Then limx→a f(x) = L. The result extends without change to x → ±∞, one-sided limits, and to sequences (replace the punctured neighbourhood by "for all sufficiently large n").
The proof is two lines of ε-δ. Given ε > 0, pick δ small enough that |g(x) − L| < ε and |h(x) − L| < ε whenever 0 < |x − a| < δ. Then L − ε < g(x) ≤ f(x) ≤ h(x) < L + ε, so |f(x) − L| < ε. Done. No differentiability, no continuity, no smoothness — only the inequality and the two outer limits.
How to apply it
Given a tricky limit limx→a f(x), the squeeze recipe is:
- Find bounds g(x) ≤ f(x) ≤ h(x) on a neighbourhood of a.
- Compute limx→a g(x) and limx→a h(x) — usually by direct substitution.
- If both limits equal the same L, then lim f = L.
- If the limits differ, the squeeze fails — find tighter bounds, or use a different method.
The craft is step 1. Tight enough bounds let you conclude, loose bounds leave you stuck. The most common pattern is "bounded × infinitesimal": if |f(x)| ≤ M is bounded and ε(x) → 0, then f(x) · ε(x) is sandwiched between −Mε(x) and Mε(x), both of which go to 0.
Worked example — proving limx→0 sin(x)/x = 1
This is the canonical squeeze-theorem application and the foundation of derivatives for trig functions. The naive bound −1 ≤ sin(x)/x ≤ 1 doesn't squeeze — both bounds are constants disagreeing at the limit. We need a geometric bound from the unit circle.
For 0 < x < π/2, draw a unit circle, a sector of angle x, the inscribed triangle (vertices at the origin, (1, 0), and (cos x, sin x)), and the outside triangle with vertices at the origin, (1, 0), and (1, tan x). Comparing areas:
area(inner triangle) = (1/2) sin(x)
area(sector) = (1/2) x
area(outer triangle) = (1/2) tan(x)
⇒ sin(x) ≤ x ≤ tan(x) for 0 < x < π/2.
Divide through by sin(x) (positive for the range), then take reciprocals (flips inequalities):
1 ≤ x/sin(x) ≤ 1/cos(x)
cos(x) ≤ sin(x)/x ≤ 1
As x → 0⁺, cos(x) → 1 (direct substitution; cos is continuous). The outer bounds converge to 1. By the squeeze theorem, sin(x)/x → 1. The left-handed limit follows by symmetry (sin(−x)/(−x) = sin(x)/x is even). The geometric squeeze is honest — every step comes from areas on the unit circle.
Worked example — x²sin(1/x) → 0 as x → 0
The factor sin(1/x) oscillates infinitely fast as x approaches 0 — between −1 and 1, infinitely often, on every neighbourhood of 0. L'Hôpital won't help: the derivative ratio explodes. Direct substitution gives 0 · undefined. But the squeeze is trivial:
For x ≠ 0: |sin(1/x)| ≤ 1
−x² ≤ x²·sin(1/x) ≤ x²
lim_{x→0} (−x²) = 0, lim_{x→0} x² = 0.
By squeeze, x² · sin(1/x) → 0. The infinite oscillation gets absorbed by the x² factor that's crushing everything to zero. This is the cleanest illustration of the "bounded × infinitesimal" pattern.
The same idea extends to x · sin(1/x) — bounded between −|x| and |x|, hence → 0. But it does not extend to sin(1/x) alone — that has no limit at 0, because the oscillation doesn't dampen.
Variants and stronger theorems
- One-sided squeeze. If the inequality holds only for x > a (or x < a), the conclusion still holds for the corresponding one-sided limit. Useful when functions are defined piecewise around a.
- Sequence version. aₙ ≤ bₙ ≤ cₙ for n ≥ N, aₙ → L, cₙ → L ⇒ bₙ → L. The proof rewrites δ as N; identical idea.
- Infinite limits. If g(x) ≤ f(x) and g(x) → ∞, then f(x) → ∞ — a one-sided version with only a lower bound. Symmetrically for −∞ with an upper bound.
- Squeeze for continuity. If g, f, h are continuous at a, g(a) = h(a) = L, and g ≤ f ≤ h locally, then f is continuous at a with f(a) = L. Often used to define f at a by limiting argument.
- Multivariable squeeze. Same statement in ℝⁿ with the neighbourhood being a punctured ball. Bounds usually involve ||x − a|| or polar coordinates.
When the squeeze is the right tool
| Situation | Use squeeze? | Why |
|---|---|---|
| Bounded oscillation × infinitesimal | Yes — first choice | The bound −M·ε ≤ f ≤ M·ε is immediate |
| 0/0 with simple derivatives | No — L'Hôpital | Differentiating is faster and mechanical |
| Smooth function with no closed-form bound | Often no | Taylor expansion gives leading-order behaviour directly |
| Sequence with known error bound | Yes | If |aₙ − L| ≤ εₙ → 0, squeeze gives aₙ → L |
| Multivariable limit in polar form | Yes — natural fit | ||x − a||ᵏ bounds work cleanly in polar |
| Limit doesn't exist (oscillates) | No | No squeeze possible; argue directly via sequences |
Common mistakes
- Bounds that don't converge to the same L. If lim g ≠ lim h, the squeeze tells you nothing. Loose bounds are useless; tighten them.
- Forgetting "near a." The inequality only needs to hold on a punctured neighbourhood — values at a itself don't matter, and you can usually ignore them.
- Flipping inequalities without flipping signs. Multiplying by a negative number reverses the direction. Same for taking reciprocals of negatives.
- Confusing squeeze with L'Hôpital. L'Hôpital differentiates the original ratio; squeeze finds outer bounds. They solve different problem shapes.
- Squeezing the wrong thing. For lim x·sin(x), squeeze fails because x · sin(x) is bounded between −|x| and |x| — that gives → 0, which is wrong if you confuse x → 0 with x → ∞. Always check the limit point matches the bounds.
- Using squeeze when bounds don't exist. sin(1/x) has no limit at 0 — no monotone bound shrinks to a single L. Squeeze is silent; the limit simply doesn't exist.
Connections to other techniques
L'Hôpital's rule. Squeeze handles oscillating bounded factors that L'Hôpital cannot — sin(1/x), cos(1/x), Dirichlet-like indicator functions. Conversely, L'Hôpital wins on smooth 0/0 forms where the derivatives are simple polynomials or exponentials.
Taylor expansion. A Taylor remainder bound |Rₙ(x)| ≤ M|x − a|ⁿ⁺¹/(n+1)! is exactly a squeeze. Truncating after n terms gives an error that is squeezed to zero, justifying Taylor approximations.
Numerical analysis. Convergence proofs for iterative algorithms typically squeeze the iteration error between geometric or polynomial decay rates and zero. The convergence rate is the squeeze rate.
Real analysis foundations. Squeeze is one of the first theorems you prove after the ε-δ definition of limit, because it lets you transfer convergence from outer functions to inner ones without computing the inner limit directly.
Frequently asked questions
Why is the squeeze theorem called the sandwich theorem?
The image is geometric — two outer functions g and h squeeze (or sandwich) a third function f between them. As g and h converge to the same value L, the trapped f has nowhere else to go. British textbooks favour "sandwich," Russian textbooks the "two-policemen theorem" (the bounds escort the suspect to the limit), and US textbooks "squeeze." Same theorem, same proof, three names.
When does the squeeze theorem fail to help?
When you cannot find bounds g and h that converge to the same L. For lim sin(x)/x as x → 0 the naive bounds −1 ≤ sin(x)/x ≤ 1 don't squeeze — the bounds are constants that disagree at the limit point. You need a tighter geometric bound — cos(x) ≤ sin(x)/x ≤ 1 for small x — that pinches the ratio to 1. The whole craft is constructing tight enough bounds, not invoking the theorem.
Why does x²sin(1/x) → 0 as x → 0?
The factor sin(1/x) oscillates infinitely fast near zero, so direct substitution and L'Hôpital fail. But |sin(1/x)| ≤ 1 always, so −x² ≤ x²sin(1/x) ≤ x². The outer bounds −x² and x² both go to 0 as x → 0. By the squeeze theorem, x²sin(1/x) → 0. The trick is that the bounded oscillating factor doesn't matter when the outer factor x² is dragging everything to zero.
How is the squeeze theorem used to prove lim sin(x)/x = 1?
Use the geometric picture on the unit circle. For 0 < x < π/2 the area of the triangle inside the sector is (1/2)sin(x), the sector area is (1/2)x, and the area of the larger triangle outside is (1/2)tan(x). Chained: sin(x) ≤ x ≤ tan(x). Divide by sin(x): 1 ≤ x/sin(x) ≤ 1/cos(x). Flip: cos(x) ≤ sin(x)/x ≤ 1. As x → 0, cos(x) → 1, so the squeeze gives sin(x)/x → 1. This is the canonical squeeze-theorem proof and the foundation of differential calculus for trig functions.
What's the difference between squeeze theorem and L'Hôpital's rule?
L'Hôpital requires both functions to be differentiable near the limit point and assumes a 0/0 or ∞/∞ form. Squeeze requires only inequalities and limits of two outer functions. Squeeze handles oscillating limits that have no L'Hôpital interpretation — sin(1/x) has no limit, so f′/g′ doesn't exist, but x · sin(1/x) is bounded between −|x| and |x| and is squeezed to zero. Use L'Hôpital when derivatives are simple; use squeeze when oscillation is bounded.
Does the squeeze theorem work for sequences?
Yes — identical statement for sequences. If aₙ ≤ bₙ ≤ cₙ for all sufficiently large n, and aₙ → L and cₙ → L, then bₙ → L. Same ε-δ argument with N instead of δ. Used extensively in numerical analysis to bound errors of iterative algorithms — if your error is sandwiched between two known-converging quantities, you have convergence for free.
Does it work for limits at infinity?
Yes. The theorem holds for x → a, x → ±∞, and one-sided limits. The classic infinity example: lim (sin x)/x as x → ∞. Since |sin x| ≤ 1, we have −1/x ≤ sin(x)/x ≤ 1/x. Both outer bounds go to 0 as x → ∞, so sin(x)/x → 0 by squeeze. Note this answers a different limit from the famous x → 0 case.