Okay, we know what it is for a net to have a limit, and then we used that to define continuity in terms of nets. Continuity just says that the function’s value is exactly what it takes to preserve convergence of nets.
But what if we have a bunch of nets and no function value? Like, if there’s a hole in our domain — as there is at for the function — we certainly shouldn’t penalize this function just on a technicality of how we presented it. Well there may be a hole in the domain, but we still have sequences in the domain that converge to where that hole is. So let’s take a domain , a function , and a point . In particular, we’re interested in what happens when is in the closure of , but not in itself.
Now we look at all sequences which converge to . There’s at least one of them because , but there may be quite a few. Each one of these sequences has an opinion on what the value of should be at . If they all agree, then we can define the limit of the function where is any one of these sequences. In the case of we see that at every point other than our function takes the value . Thus on any sequence converging to (but never taking ) the function gives the constant sequence . Since they all agree, we can define the limit .
If a function has a limit at a hole in its domain, we can use that limit to patch up the hole. That is, if our point is in the closure of but not in itself, and if our function has a limit at , then we can extend our function to by setting . Just like we by default set the domain of a function to be wherever it makes sense, we will just assume that the domain has been extended to whatever boundary points the function takes a limit at.
On the other hand, we can also describe limits in terms of neighborhoods instead of sequences. Here we end up with formulas that look like those we saw when we defined continuity in metric spaces. A function has a limit at the point if for every there is a so that implies . Going back and forth from this definition to the one in terms of sequences behaves just the same as going back and forth between net and neighborhood definitions of continuity.
To a certain extent we’re starting to see a little more clearly the distinct feels of the two different approaches. Using nets tells us about approaching a point in various systematic ways, and having a limit at a point tells us that we can understand the function at that point by understanding any system along which we can approach it. We can even replace the limiting point by the convergent net and say that the net is the point, as we did when first defining the real numbers. Using neighborhoods, on the other hand, feels more like giving error tolerances. A limit is the value the function is trying to get to, and if we’re willing to live with being wrong by , there’s a way to pick a for how wrong our input can be and still come at least that close to the target.