The Epsilon-Delta Definition of a Limit

Suppose a function ff gets closer and closer to some number LL. This happens as its input xx gets closer and closer to a point cc. How do we make "gets closer and closer" into an actual mathematical statement? It must be one that can be checked, proved, and reasoned with in a proof by contradiction. This is not a pedantic concern. The entire edifice of Continuity of Functions, Derivatives as Limits, and Infinite Series and Convergence rests on this. It depends on being able to say precisely what it means for one quantity to approach another. Informal phrases like "approaches" or "tends to" cannot bear that weight. They hide exactly the logical content we need to prove theorems. The resolution is the epsilon-delta definition. It is due in essentially its modern form to Augustin-Louis Cauchy. Karl Weierstrass later sharpened it into full rigor. It converts a dynamic, intuitive idea — motion toward a target — into a static, verifiable inequality. This inequality involves two arbitrarily small positive numbers, traditionally named ε\varepsilon (epsilon) and δ\delta (delta). The definition says: no matter how small a tolerance ε\varepsilon you demand on the output side, there is a tolerance δ\delta on the input side that guarantees you meet it. This "challenge and response" structure — you name ε\varepsilon, the definition supplies δ\delta — is the single most important logical pattern in all of undergraduate analysis. The big picture is that limits are the foundation on which calculus is built rigorously. Continuity, derivatives, integrals, and the convergence of sequences and series are all limits in disguise. Every one of their proofs ultimately reduces to an epsilon-delta (or epsilon-N) argument. Understanding this definition deeply is the single biggest step from "calculus as computation" to "analysis as proof." This means not just being able to recite it. It means being able to construct δ\delta from ε\varepsilon in concrete examples. This article gives the precise definition and unpacks it intuitively with pictures. It proves the central existence-of-limit computations rigorously from the definition alone. It shows exactly what fails when a hypothesis is dropped. It closes the loop toward the Sequential Characterization of Limits and the Uniqueness of Limits and Basic Examples. It also sets up One-Sided Limits.

Key takeaways
  • The statement "lim⁡x→cf(x)=L\lim_{x\to c} f(x) = L" is defined by a formal two-quantifier condition: for every ε>0\varepsilon>0 there exists δ>0\delta>0 controlling closeness.
  • ε\varepsilon measures how close f(x)f(x) must be to LL (output tolerance); δ\delta measures how close xx must be to cc (input tolerance).
  • The point cc itself is deliberately excluded via the condition 0<∣x−c∣<δ0<|x-c|<\delta — the function need not even be defined at cc.
  • δ\delta is allowed (and typically needs) to depend on ε\varepsilon; the order of quantifiers is not interchangeable.
  • Proving a limit from the definition means an explicit, checkable construction of δ\delta as a function of ε\varepsilon.
  • The definition requires cc to be a limit point of the domain, or the statement is vacuous or ill-posed.
  • Key idea: a limit exists and equals LL exactly when every output-tolerance ε\varepsilon can be matched by some input-tolerance δ\delta.

Where this lives today

The epsilon-delta definition is not a historical curiosity; it is the operating logic beneath continuity, differentiability, and integration, and beneath the definitions of limits of sequences and series via the analogous ε\varepsilon-NN formulation. In real analysis it underlies the rigorous proofs of the Intermediate Value Theorem, the Extreme Value Theorem, and the Mean Value Theorem. In topology, the same idea generalizes to open sets and neighborhoods, giving the definition of continuity between arbitrary topological spaces without reference to distance at all. In numerical analysis and scientific computing, error-tolerance reasoning ("if the input error is below this threshold, the output error is below that threshold") is a direct engineering incarnation of the ε\varepsilon-δ\delta pattern, showing up in stability and convergence analyses of algorithms. In cryptography and theoretical computer science, closely related "for every adversary strategy there is a defense" quantifier structures appear in security definitions and in the theory of approximation algorithms. In physics and engineering, control theory's notion of stability — small perturbations to a system's input or initial conditions produce boundedly small changes in output — is essentially an ε\varepsilon-δ\delta statement about a dynamical system.

Ask the tutor: Can you walk me through choosing δ\delta for a limit involving a square root, like lim⁡x→4x=2\lim_{x\to 4}\sqrt{x} = 2?

DefinitionLimit of a function at a point

Let f:D→Rf : D \to \mathbb{R} where D⊆RD \subseteq \mathbb{R}, and let cc be a limit point of DD. We say

lim⁡x→cf(x)=L\lim_{x \to c} f(x) = L

if for every ε>0\varepsilon > 0 there exists δ>0\delta > 0 such that, for all x∈Dx \in D,

0<∣x−c∣<δ  ⟹  ∣f(x)−L∣<ε.0 < |x - c| < \delta \implies |f(x) - L| < \varepsilon.

Equivalently, in fully quantified symbolic form:

∀ε>0 ∃δ>0 ∀x∈D (0<∣x−c∣<δ  ⟹  ∣f(x)−L∣<ε).\forall \varepsilon > 0 \ \exists \delta > 0 \ \forall x \in D \ \big(0 < |x-c| < \delta \implies |f(x) - L| < \varepsilon\big).

If no such LL exists, we say lim⁡x→cf(x)\lim_{x\to c} f(x) does not exist. The requirement that cc be a limit point of DD guarantees the set {x∈D:0<∣x−c∣<δ}\{x \in D : 0 < |x-c|<\delta\} is nonempty for every δ>0\delta>0, so the implication is not vacuously true for a trivial reason.

Intuition

Read the definition as a game between an adversary and you. The adversary names a tolerance ε>0\varepsilon > 0 — perhaps a very small one, like ε=0.0001\varepsilon = 0.0001 — and challenges you to keep f(x)f(x) within ε\varepsilon of LL. You respond by naming a tolerance δ>0\delta > 0 on the xx-side, and you win the round if every x≠cx \neq c within δ\delta of cc (and in the domain) produces an output within ε\varepsilon of LL. The statement lim⁡x→cf(x)=L\lim_{x\to c} f(x) = L is true precisely when you have a winning strategy no matter what ε\varepsilon the adversary picks — that is, you can always find a good δ\delta, however small ε\varepsilon gets. Two features of the definition deserve emphasis. First, ∣x−c∣|x - c| and ∣f(x)−L∣|f(x)-L| are literally distances on the number line — this is exactly the Absolute value as distance idea, so "close" has a numerical, checkable meaning. Second, the condition 0<∣x−c∣0 < |x-c| excludes x=cx = c itself: the limit describes the behavior of ff near cc, and is entirely independent of (and does not require) the value f(c)f(c), or even that ff be defined at cc at all. This is what allows limits to detect and repair removable discontinuities, and it is exactly the gap that the definition of Continuity of Functions later closes by additionally demanding f(c)=Lf(c) = L. The picture below shows the standard "epsilon-band, delta-band" diagram for f(x)=2x−1f(x) = 2x - 1 near c=3c = 3, where L=5L = 5. A horizontal strip of height 2ε2\varepsilon around LL on the yy-axis corresponds, through the graph, to a vertical strip of width 2δ2\delta around cc on the xx-axis; the definition demands that the graph, restricted to that vertical strip (punctured at cc), stay inside the horizontal strip.

Figure
The ε-band around L=5 forces an x-window of width 2δ around c=3 for f(x)=2x−1
x y L+ε=6 L−ε=4 c−δ=2.5 c+δ=3.5 (c, L) = (3, 5) f(x) = 2x − 1

Notice how narrowing the yellow ε\varepsilon-band forces the blue δ\delta-band to narrow too (here δ=ε/2\delta = \varepsilon/2 exactly, since the line has slope 22). This dependency of δ\delta on ε\varepsilon is the entire content of "δ\delta as a function of ε\varepsilon" that every epsilon-delta proof must construct explicitly.

TheoremLimit of an affine function

Let f(x)=mx+bf(x) = mx + b with m,b∈Rm, b \in \mathbb{R} fixed and m≠0m \neq 0, and let c∈Rc \in \mathbb{R}. Then

lim⁡x→cf(x)=mc+b.\lim_{x \to c} f(x) = mc + b.
Proof

Let L=mc+bL = mc + b. Fix ε>0\varepsilon > 0; we must produce δ>0\delta > 0 such that 0<∣x−c∣<δ0 < |x-c| < \delta implies ∣f(x)−L∣<ε|f(x) - L| < \varepsilon, for all x∈Rx \in \mathbb{R} (the domain here is all of R\mathbb{R}, and every real number is a limit point of R\mathbb{R}, so the hypothesis on cc is automatically satisfied).

Scratch work (algebraic reverse-engineering, not part of the proof). We compute

∣f(x)−L∣=∣(mx+b)−(mc+b)∣=∣m(x−c)∣=∣m∣ ∣x−c∣.|f(x) - L| = |(mx+b) - (mc+b)| = |m(x-c)| = |m|\,|x-c|.

We want this to be <ε< \varepsilon. Since ∣m∣≠0|m| \neq 0, this holds exactly when ∣x−c∣<ε/∣m∣|x - c| < \varepsilon/|m|. This tells us which δ\delta to choose.

Formal proof. Given ε>0\varepsilon > 0, define

δ=ε∣m∣.\delta = \frac{\varepsilon}{|m|}.

Since ε>0\varepsilon > 0 and ∣m∣>0|m| > 0 (as m≠0m \neq 0), we have δ>0\delta > 0, as required by the definition. Now suppose x∈Rx \in \mathbb{R} satisfies 0<∣x−c∣<δ0 < |x - c| < \delta. Then

∣f(x)−L∣=∣m∣ ∣x−c∣<∣m∣⋅δ=∣m∣⋅ε∣m∣=ε,|f(x) - L| = |m|\,|x - c| < |m|\cdot \delta = |m| \cdot \frac{\varepsilon}{|m|} = \varepsilon,

using the multiplicative property of absolute value ∣ab∣=∣a∣∣b∣|ab| = |a||b| and the fact that multiplying the strict inequality ∣x−c∣<δ|x-c|<\delta by the positive number ∣m∣|m| preserves strictness. This shows: for every ε>0\varepsilon > 0, the choice δ=ε/∣m∣\delta = \varepsilon/|m| satisfies 0<∣x−c∣<δ  ⟹  ∣f(x)−L∣<ε0 < |x-c| < \delta \implies |f(x)-L| < \varepsilon for all x∈Rx \in \mathbb{R}. By the definition of the limit, lim⁡x→cf(x)=mc+b\lim_{x\to c} f(x) = mc + b. ■\blacksquare

∎
CorollaryConstant and identity functions

For any c∈Rc \in \mathbb{R}: lim⁡x→ck=k\lim_{x\to c} k = k for a constant function f(x)=kf(x)=k (case m=0m=0, handled directly since ∣f(x)−L∣=0<ε|f(x)-L|=0<\varepsilon for any δ\delta), and lim⁡x→cx=c\lim_{x\to c} x = c (case m=1,b=0m=1, b=0 of the theorem above).

Worked examples

Example 1 (a genuinely nonlinear, asymmetric case). Show directly from the definition that

lim⁡x→3(x2−2x)=3.\lim_{x \to 3} (x^2 - 2x) = 3.

Here c=3c = 3, L=3L = 3, and f(x)=x2−2xf(x) = x^2 - 2x; note LL does not equal cc and the function is not affine, so we cannot reuse the previous theorem verbatim. Scratch work. We estimate

∣f(x)−L∣=∣x2−2x−3∣=∣(x−3)(x+1)∣=∣x−3∣⋅∣x+1∣.|f(x) - L| = |x^2 - 2x - 3| = |(x-3)(x+1)|= |x - 3|\cdot |x+1|.

We want to bound ∣x+1∣|x+1| by a constant, valid once xx is restricted near 33. Restrict attention to xx with ∣x−3∣<1|x - 3| < 1, i.e. 2<x<42 < x < 4. Then 3<x+1<53 < x + 1 < 5, so ∣x+1∣<5|x+1| < 5. Under this restriction,

∣f(x)−L∣=∣x−3∣ ∣x+1∣<5∣x−3∣.|f(x)-L| = |x-3|\,|x+1| < 5|x-3|.

We want 5∣x−3∣<ε5|x-3| < \varepsilon, i.e. ∣x−3∣<ε/5|x-3| < \varepsilon/5. Combining the two requirements ∣x−3∣<1|x-3|<1 and ∣x−3∣<ε/5|x-3|<\varepsilon/5, we should take δ\delta to be the minimum of these two bounds. Formal proof. Let ε>0\varepsilon > 0 be given. Define

δ=min⁡(1,ε5).\delta = \min\left(1, \frac{\varepsilon}{5}\right).

This is a positive number since both 1>01 > 0 and ε/5>0\varepsilon/5 > 0. Suppose 0<∣x−3∣<δ0 < |x - 3| < \delta. Since δ≤1\delta \le 1, we have ∣x−3∣<1|x-3| < 1, so 2<x<42 < x < 4, hence 3<x+1<53 < x+1 < 5 and in particular ∣x+1∣<5|x+1| < 5. Also since δ≤ε/5\delta \le \varepsilon/5, we have ∣x−3∣<ε/5|x-3| < \varepsilon/5. Therefore

∣f(x)−3∣=∣x−3∣ ∣x+1∣<ε5⋅5=ε.|f(x) - 3| = |x-3|\,|x+1| < \frac{\varepsilon}{5}\cdot 5 = \varepsilon.

This holds for every xx satisfying 0<∣x−3∣<δ0<|x-3|<\delta, so by definition lim⁡x→3(x2−2x)=3\lim_{x\to 3}(x^2-2x) = 3. ■\blacksquare Notice the shape of the argument: the "trivial" restriction δ≤1\delta \le 1 is used purely to tame the varying factor ∣x+1∣|x+1| into a fixed numerical bound, a technique ("bound one factor, then control the other") that recurs constantly in analysis.

Example 2 (a limit not at a "nice" point of the domain, with domain restrictions). Let

f(x)=1x−1,D=R∖{1}.f(x) = \frac{1}{x-1}, \qquad D = \mathbb{R} \setminus \{1\}.

Show that lim⁡x→2f(x)=1\displaystyle\lim_{x \to 2} f(x) = 1. Here c=2∈Dc = 2 \in D is a limit point of DD (indeed every point of R\mathbb{R} is a limit point of DD, since DD omits only the single point 11). Note c≠1c \ne 1, so ff is defined at cc, though the definition does not require this. Scratch work.

∣f(x)−1∣=∣1x−1−1∣=∣1−(x−1)x−1∣=∣2−xx−1∣=∣x−2∣∣x−1∣.|f(x) - 1| = \left|\frac{1}{x-1} - 1\right| = \left|\frac{1 - (x-1)}{x-1}\right| = \left|\frac{2-x}{x-1}\right| = \frac{|x-2|}{|x-1|}.

We need a lower bound on ∣x−1∣|x-1| valid near x=2x=2. Restrict to ∣x−2∣<12|x - 2| < \tfrac12, i.e. 32<x<52\tfrac32 < x < \tfrac52; then 12<x−1<32\tfrac12 < x - 1 < \tfrac32, so ∣x−1∣>12|x - 1| > \tfrac12, giving 1∣x−1∣<2\dfrac{1}{|x-1|} < 2. Under this restriction,

∣f(x)−1∣=∣x−2∣∣x−1∣<2∣x−2∣.|f(x)-1| = \frac{|x-2|}{|x-1|} < 2|x-2|.

We want 2∣x−2∣<ε2|x-2| < \varepsilon, i.e. ∣x−2∣<ε/2|x-2| < \varepsilon/2. Formal proof. Let ε>0\varepsilon > 0. Set

δ=min⁡(12,ε2)>0.\delta = \min\left(\tfrac12, \frac{\varepsilon}{2}\right) > 0.

Suppose x∈Dx \in D and 0<∣x−2∣<δ0 < |x-2| < \delta. Since δ≤12\delta \le \tfrac12, we get 32<x<52\tfrac32 < x < \tfrac52, hence 12<x−1<32\tfrac12 < x-1 < \tfrac32; in particular x−1≠0x-1 \ne 0 (consistent with x∈Dx \in D) and ∣x−1∣>12|x-1| > \tfrac12, so 1∣x−1∣<2\frac{1}{|x-1|} < 2. Since also δ≤ε/2\delta \le \varepsilon/2, we have ∣x−2∣<ε/2|x-2| < \varepsilon/2. Combining,

∣f(x)−1∣=∣x−2∣∣x−1∣<∣x−2∣⋅2<ε2⋅2=ε.|f(x) - 1| = \frac{|x-2|}{|x-1|} < |x-2| \cdot 2 < \frac{\varepsilon}{2}\cdot 2 = \varepsilon.

Since ε>0\varepsilon>0 was arbitrary and δ\delta was produced explicitly from it, lim⁡x→2f(x)=1\lim_{x\to 2} f(x) = 1. ■\blacksquare

CounterexampleDropping "cc is a limit point of the domain"

The hypothesis that cc be a limit point of DD is not decorative — without it the definition becomes either vacuous or meaningless. Consider

D=[0,1]∪{5},f(x)={xx∈[0,1]100x=5,c=5.D = [0,1] \cup \{5\}, \qquad f(x) = \begin{cases} x & x \in [0,1] \\ 100 & x = 5 \end{cases}, \qquad c = 5.

The point c=5c = 5 is an isolated point of DD: there is a δ0=1\delta_0 = 1 (in fact any δ0≤4\delta_0 \le 4) such that the only point of DD within δ0\delta_0 of 55 is 55 itself, so the set {x∈D:0<∣x−5∣<δ0}\{x \in D : 0 < |x - 5| < \delta_0\} is empty. Now examine the defining implication with, say, δ=δ0\delta = \delta_0: "for all x∈Dx \in D, 0<∣x−5∣<δ0  ⟹  ∣f(x)−L∣<ε0 < |x-5|<\delta_0 \implies |f(x) - L| < \varepsilon" is vacuously true for any proposed limit value LL, because there is no x∈Dx \in D satisfying the hypothesis 0<∣x−5∣<δ00<|x-5|<\delta_0 to test. So the formal condition "∀ε>0 ∃δ>0 …\forall \varepsilon>0\ \exists \delta>0\ \ldots" would hold no matter what real number we called LL: we could "prove" lim⁡x→5f(x)=0\lim_{x\to 5} f(x) = 0, or =100= 100, or =−π=-\pi, all equally (vacuously) validly. This is absurd — a limit, if it is to mean anything, must be unique. The fix is exactly the excluded hypothesis: demanding that cc be a limit point of DD guarantees that every punctured neighborhood of cc meets DD, so the implication is never vacuous and the resulting LL (when it exists) is forced to be unique — this uniqueness is proved rigorously in Uniqueness of Limits and Basic Examples. Isolated points of the domain simply do not support a meaningful notion of limiting behavior.

Scope, edge cases & common traps

SituationWhat the definition saysCommon error
c∉Dc \notin D but cc is a limit point of DDLimit can still exist; f(c)f(c) is irrelevant (undefined even)Assuming f(c)f(c) must exist or must equal LL
c∈Dc \in D but f(c)≠Lf(c) \ne LLimit can still equal LL; this is a removable discontinuityConfusing the limit with the function value
δ\delta found for one ε\varepsilonAny smaller δ\delta also works for that ε\varepsilonThinking δ\delta is unique — it is not, only its existence matters
δ\delta depends on ε\varepsilonOrder of quantifiers is ∀ε ∃δ\forall \varepsilon\ \exists \deltaSwapping to "∃δ ∀ε\exists \delta\ \forall \varepsilon" — a much stronger, usually false, claim
cc isolated in DDStatement is vacuous for every LLTreating a vacuous limit as a genuine, unique limit
Domain restrictions (e.g. x≠1x \ne 1)Must intersect with x∈Dx \in D throughoutForgetting to check x∈Dx \in D when bounding auxiliary factors

The mathematician behind it

Origins · 1 minKarl Weierstrass and how this was discovered
KW
Karl Weierstrass
1815–1897 · 19th-century Prussian/German analysis

Karl Weierstrass was a German mathematician, largely self-taught in advanced mathematics while working as a secondary-school teacher, who later became one of the founders of modern mathematical analysis at the University of Berlin. Building on the more intuitive "infinitesimal" language of Cauchy, Weierstrass insisted on defining limits, continuity, and convergence purely in terms of finite, static inequalities between real numbers — precisely the ε\varepsilon-δ\delta and ε\varepsilon-NN formulations used throughout modern analysis. This program, sometimes called the "arithmetization of analysis," removed the last vestiges of appeal to geometric intuition or infinitesimal quantities from the foundations of calculus, and it is the direct ancestor of the definition given in this article.

History
- 1821 — Augustin-Louis Cauchy's Cours d'analyse defines limits using language of variables becoming "as close as one wishes" to a fixed value, a major step toward rigor but still informally quantified.
- 1817 — Bernard Bolzano gives an early rigorous treatment of continuity using inequality-based reasoning, largely unpublished and unnoticed at the time.
- 1861 — Weierstrass, in Berlin lectures, formulates the modern ε\varepsilon-δ\delta definition of continuity and limits in essentially their present symbolic form.
- 1872 — Weierstrass constructs a function continuous everywhere but differentiable nowhere, a landmark application showing the necessity of fully rigorous, non-intuitive definitions.
- 1900s — The ε\varepsilon-δ\delta definition becomes the universal standard in analysis textbooks worldwide, cementing the "arithmetization" program.
Does lim⁡x→cf(x)=L\lim_{x\to c} f(x) = L require that f(c)=Lf(c) = L, or even that f(c)f(c) be defined?

No. The definition explicitly uses 0<∣x−c∣<δ0 < |x-c| < \delta, which excludes x=cx = c entirely. The limit describes only the behavior of ff at points near cc, never at cc itself. This is intentional: it allows the limit to exist and be meaningful even when ff is undefined at cc (as with sin⁡xx\frac{\sin x}{x} at x=0x=0), or when f(c)f(c) happens to disagree with the limiting value (a removable discontinuity). The additional requirement f(c)=Lf(c) = L is exactly what gets added later, in the separate definition of continuity at a point.

Why must δ\delta be allowed to depend on ε\varepsilon?

Because in essentially every non-constant example, tighter output tolerances genuinely require tighter input tolerances. In the affine example f(x)=mx+bf(x)=mx+b, the exact relationship δ=ε/∣m∣\delta = \varepsilon/|m| shows δ\delta shrinking in direct proportion to ε\varepsilon; for a steeper slope mm, the same ε\varepsilon forces a smaller δ\delta, since the function amplifies input changes more strongly. Demanding a single δ\delta that works uniformly for all ε>0\varepsilon>0 at once is a fundamentally different (usually false) statement, closer to a Lipschitz-type or uniform continuity condition than to a pointwise limit.

Can more than one value of δ\delta work for the same ε\varepsilon?

Yes, and this is expected, not a flaw. The definition only requires the existence of some working δ\delta, not uniqueness. If δ\delta works, then any smaller positive δ′≤δ\delta' \le \delta also works, since the set of xx satisfying 0<∣x−c∣<δ′0<|x-c|<\delta' is a subset of those satisfying 0<∣x−c∣<δ0<|x-c|<\delta, and the implication's conclusion was already guaranteed on the larger set. In practice, proofs often report the largest "natural" δ\delta that falls out of the algebra, but any smaller choice is an equally valid witness.

Is the epsilon-delta definition the only rigorous way to define a limit?

No. An equivalent and often more convenient formulation, proved equivalent in the Sequential Characterization of Limits, says lim⁡x→cf(x)=L\lim_{x\to c}f(x)=L if and only if for every sequence (xn)(x_n) in D∖{c}D\setminus\{c\} converging to cc, the sequence (f(xn))(f(x_n)) converges to LL. This "sequential criterion" is logically equivalent to the epsilon-delta definition but is often easier to use negatively — to show a limit does not exist, by exhibiting two sequences approaching cc along which ff tends to different values.

What happens if no value of LL satisfies the definition at all?

Then we simply say the limit does not exist at cc. This happens, for instance, when ff oscillates without settling (like sin⁡(1/x)\sin(1/x) near x=0x=0), or when approaching from different directions gives genuinely different values, a phenomenon made precise later via One-Sided Limits. Nonexistence must itself be proved: one typically exhibits, for every candidate LL, some ε>0\varepsilon>0 for which no δ>0\delta>0 can work, often via the sequential criterion with two sequences yielding different limiting outputs.

Why is the domain restriction x∈Dx \in D built into the quantifier "for all xx"?

Because ff may not be defined on all of R\mathbb{R}, and the definition must only make claims about points where f(x)f(x) actually makes sense. Writing "∀x∈D\forall x \in D" rather than "∀x∈R\forall x \in \mathbb{R}" is what allows limits of functions like 1/(x−1)1/(x-1) or x\sqrt{x} to be stated correctly at points where the surrounding punctured intervals might otherwise leave the domain. It is also why the hypothesis "cc is a limit point of DD" (rather than of R\mathbb{R}) is exactly the right condition to avoid vacuous truth, as shown in the counterexample above.

Does the epsilon-delta definition generalize beyond R→R\mathbb{R} \to \mathbb{R} functions?

Yes, directly. Replacing ∣x−c∣|x-c| and ∣f(x)−L∣|f(x)-L| by distances d(x,c)d(x,c) and d′(f(x),L)d'(f(x),L) in general metric spaces gives the metric-space definition of a limit, used throughout multivariable and functional analysis. Replacing distances entirely by membership in open neighborhoods yields the topological definition of continuity, which works even where no notion of distance is available. The real-line version given here is the concrete prototype for all of these generalizations.

Before this

Where this leads