be asked to speak at this. And what I want to talk about today is the tidal gap theorems for minimal sub-manifolds of spheres and as indicated, the main thing I'm talking about is some recent joint work with Tom Ilmenin. So the basic question is, consider all k-dimensional minimal sub-manifolds of the unit and sphere. So it turns out the one of least area is the totally geodesic k-sphere. And the question then is, well, what has the next smallest area? So if you take the infimum among all other k-dimensional minimal sub-manifolds of SN, what's the infimum of area? And just about a year ago, there was a, well, there's actually very few cases, almost maybe one case when we really know the answer. But anyway, there's a big breakthrough about a year ago. So Fernando Marquez and Andre Neves, as a crucial part of their solution to the Wilmore conjecture, gave the answer for k equals 2 and n equals 3. So they show that if you consider all minimal surfaces, all two-dimensional minimal surfaces, closed minimal surfaces in the three-sphere, the one of, as we said before, the smallest area is the totally geodesic s2. What they proved was the next smallest area is attained by the Clifford torus. And by k plus 1-sphere, it can't be of the same dimension. k-dimensional area in the k plus 1-sphere. Let's get k in the n-sphere. In the n-sphere. So n is 3, and that's n-sphere. Surface in the three-sphere. It's a k-dimensional surface in an n-sphere. Oh, so it's k-sphere there. Oh, it's right. Do I have the right thing? It's k-sphere on line 3. What is that? Right. It's on, oh, that's what you meant. Oh, yeah. That's right. It's the n-sphere. Oh, you know, it's a totally geodesic k-sphere. k-sphere in the n-sphere. Yeah. So we're working in the n-sphere. We're looking at k-dimensional submanifolds of the n-sphere. And of those, the totally geodesic k-dimensional sphere has the lowest area. And then if you're talking about two-dimensional in s3, the next smallest turns out to be the Clifford torus. OK, so, but there was another earlier, oh, and by the way, I think it's, I called it a gap, but it's really, I think it's a most natural look at the ratio. And so the ratio of the area of the Clifford torus, if you say what's the smallest ratio? The Clifford torus, you normalize that to be one. And then the next smallest thing is the ratio of the Clifford torus. The ratio of that is pi over 2, which is about 1.57. OK, well, it turns out Gene answered this question, or versioned this question many, many years earlier. In 1967, you could answer the question instead of asking about all two-dimensional minimal surfaces. You could just ask about minimal surface that are topological spheres. And in 1967, Gene answered that. So among other things, he proved that if you have a two-dimensional minimal sphere in Sn that is not totally geodesic, then the ratio of its area to 4 pi, of course, 4 pi is the area of the totally geodesic. That's the smallest possible. But anything else has to have at least three times as much area. And that's a sharp result. OK, so notice I stated the hypothesis in two ways. I said, let M be a two-dimensional sphere that's not totally geodesic or equivalent. You could say it's not contained in a linear three space. And the reason I said that is because Gene went on to answer a much more general thing. Namely, you could say replace not contained by a three space, not contained in a three plane by not complained in a k-plane. So you look at all minimal spheres that are not. So fix some k, like k equals 5 or 7 or whatever. Look at minimal spheres, two spheres in Sn that are not contained in any k-plane. And ask what's the least area among those. And again, Gene gave the sharp answer in that same paper. Really beautiful result. OK, but until recently, I think that's really all that was known about it. And I really want to ask, well, what about in higher dimensions? And by the way, you can make that go away. Yeah, that doesn't help. So one remark is you can reword the question in terms of k plus one dimensional minimal cones. So if you have a minimal sub-manifold of the sphere, you form the cone over it, all the rays from the origin that pass through that surface. And you get a minimal cone of one higher dimension. Or conversely, if you have a minimal cone with vertex at the origin, if you intersect with a sphere, then you get a minimal sub-manifold of the sphere. So you can ask it about minimal cones or minimal spheres, minimal sub-manifolds of the sphere. But anyway, that leads, if you ask it in terms of cones, it leads to the related question, which is really a sort of motivation, one motivation for asking the question. And it's where the starting point for Tom and me. So we originally were asking a slightly different question, or interested in a slightly different question, namely, take an area minimizing hypersurface in Euclidean space and take an interior point on the boundary. And then the density, so you have just some singular. So in general, if you take a boundary in high dimensions, you can always find the least area sub-manifold with that as boundary. But if you're in high dimensions, it's likely to have singularities. And you like to understand things of what those singularities are like. And sort of one of the most basic properties of a singularity is what its density is. So the density is defined as follows.  You look at the area of that intersection and you normalize it by dividing by the area of the cross-sectional disc. So if you're talking about two-dimensional surface, you divide by pi r squared. So you take the area in the little ball, you normalize it by dividing by the area of the cross-sectional disc.  That's by definition the density of the surface at that point. And of course, in general, if you're talking about general objects, you'd have to know the limit exists. You might have to take a lim super, a lim int. But for minimal surfaces, there's a monocyste formula that says this ratio is an increasing function of r. So therefore, the limit definitely exists. And that's defined to be the density of m at the point x. OK. And by the way, well, much of what I've said at the beginning, I've said area minimizing and hypersurface. What I've said so far, it doesn't have to be area minimizing. It would just be a critical point for the area functional. And it doesn't have to be a hypersurface. It could be general co-dimension. So for the reason I said area minimizing and hypersurface because that's the category in which we know we can prove something interesting. So this density, well, notice if you have a smooth embedded sub-manifold, then the density is 1 at every point. Because in a very small ball, the manifold looks almost the same as the disc. So it's almost like a disc you're dividing by there, the cross-sectional disc. You get something close to 1. So for any smooth manifold, the density is 1 everywhere. If it was smooth and immersed, for instance, then the density would be 2 wherever you had a self-intersection. And density plays an absolutely fundamental role in the regularity theory for minimal varieties in many ways. But one of the most important is the regularity result going back to Georgian, then generalized by Allard. But it says that in an area minimizing or even a minimal variety, the density is always greater than or equal to 1. At every point, the density is greater than or equal to 1. And you have equality if and only if it's a regular point of the surface. So I already mentioned that it's sort of trivial. If you have a regular point of the surface, the density is 1. But the converse is a deep theorem that conversely, if the density is 1, then it is a regular point. You have this minimal variety. You have a point where the density is 1, then there's a little neighborhood where it's a smooth minimal manifold. So that's the celebrated to Georgian Allard regularity theorem. OK. And in fact, there's some gap. There's a, so if the density is equal to 1, it's regular. So any singular point has to have density strictly greater than 1, but there's even a gap. There's some delta. So some positive deltas, the density has to be, at a singular point, has to be greater than 1. There's some delta bigger than 1. So the density of singular points are bounded away from 1. It's not just that each one is bigger than 1, but. The gap depends on the K and N. Yeah, a prairie, right. Yeah. So the question, Tom, and I were interested in is, what's the smallest possible density of singularity? So just consider all area minimizing hyper surfaces of any dimension. Look at the singularities. Say what's the least possible density of such a singularity? Some is bigger than 1, but what is it? And as I say, if you work over all dimensions and so forth, it's not even clear there is a minimum. So it's attained. So the precise question would be, what's the infimum of densities of area minimizing hyper surfaces at singular points? What's the least possible density of any area minimizing hyper surface at any singular point? And again, you could ask this about other categories of minimal surfaces. You don't have to ask about hyper surfaces. If you ask about more general things, you might get a different answer. Or if you just looked at minimal surfaces, there's things that are critical points for the area functional. Instead of minimizers, you could get a different answer. If you ask for stable things, depending on what class of minimal varieties you're looking at, you might get a different answers question. But the one we wanted to study is area minimizing hyper surfaces. So that's sort of the key question we were hoping we were trying to make progress on. So first, there's a simplification. And that is, you can simplify to the special case of cones from arbitrary area minimizing varieties, just a case, a special case of cones. And the way is the follows. Well, you take, let x be a singular point of any area minimizing hyper surface. Well, it turns out there's, if you dilate about that point x, if you take a limit of dilations, that will converge to a cone, so-called the tangent cone to the surface at x. So you take a sequence of dilations about x. If you pass to a subsequence, that's guaranteed to converge to an area minimizing cone, called the tangent cone to element x. And that cone, if your original point x was a singularity, then the cone will also be singular at that point. If you start with a minimizing hyper surface, a singular point, take the tangent cone. The tangent cone will also be singular at its vertex. And the two densities will be the same. And it's convenient to, so the density of a cone at its vertex, just say that's the density of the cone. When I say density of a cone, I mean density of the cone at the vertex. So instead of working with all area minimizing, asking what's the least possible sum of singularities among all area minimizing hyper surfaces, you could just ask, what about area minimizing cones? And you get the same answer by this reasoning. So question two is, what's the infimum of density of a cone among the class of all singular area minimizing hypercones? So it simplifies it. You just have to look at cones. You have to look at arbitrary minimizing hyper surfaces. But then there's a second simplification. Reduction, you can reduce the case of simple cones. So I'll say a cone is simple if it's smooth, except that it's vertex. So or equivalently, that means if you intersect the cone with the sphere, you have a smooth sum manifold. But possibly immersed. But immersed, perhaps? Well, it turns out, in area minimizing, it'll automatically be embedded. But in general, if you're talking about minimal things in general, it might be immersed, yeah. So if you look at things like soap films, if you take something like this, you see this kind of cone as a tangent cone in soap film. So that's an example that's singular all along this edge. This is not simple. Or even more complicated, you also see things that look like this and cones that look like this in a soap film, kind of a cone where if you intersect with a sphere, you get a kind of tetrahedron made out of totally geodesic arcs. So that, again, would be not a simple one. OK, so a simple cone is a cone that's smooth except at the vertex. And there's an important principle in the regularity theory, so-called dimension reducing. So it's supposed to take any singular area minimizing hypercone, take a singular area minimizing hypercone. Suppose it's not simple. Take one that's not, you'd like it to be simple. Suppose it's not simple. Then dimension reducing tells you you can find a simple cone whose dimension is strictly less and whose density is no bigger. OK? OK, so take a cone. Maybe it's not simple. But if it's not simple, you can find another singular cone of lower dimension that, well, in fact, a simple one of lower dimension that has no more density. But how is C-parm related to C? How is it related? Well, for this question, it doesn't matter, but I mean, I can kind of show you in a picture, let's see. So what we could do is, right, so let's take this example. So you can show if it's not simple, that means it's actually got a ray of singularities, right? The cone, if it's not simple, it doesn't have just the singularity of the vertex, but there's a whole ray of singularities. So in this picture, here's the example of a ray of singularities. Now take the tangent cone to the tangent cone at a point along the ray. If you do that, like in this case, if you do that, you'll get this guy. When you do that, you always get one that's translation and invariant in one direction. And so if you slice, you get something of lower dimension. You just keep on going until you get something simple. And the monofocity formula guarantees you, you'll get, as you do that, of course, the dimension goes down, but also the density can only go down when you do that. That's where this comes from. So question three, which is equivalent to the other two, is you can just say, well, it's enough to consider simple area minimizing cones. So question three is, what's the infimum of density among all simple singular area minimizing hypercones C? So as I've explained, questions one, two, and three are all equivalent. So reduced to this case of just cones, instead of general surface cones, and it's enough to look at cones that are smooth except at the vertex. OK, so Tom and I haven't been able to settle that, but we can give a sharp result under one hypothesis. So the main result is, suppose you take a simple singular area minimizing hypercone. So the extra hypothesis, you have to assume, is that it's topologically non-trivial, which I'll explain in a minute what that is. But the theorem says, if you take such a hypercone, if it's topologically non-trivial, then the density is strictly greater than square root of 2. And furthermore, that is optimal. In other words, that really is the infimum among all such cones. So all simple area minimizing topologically non-trivial, the infimum of density among all such cones is exactly square root of 2. OK, and the definition here of topologically non-trivial is such cones always divide the ambient euclidean space into two components. And so for us, topologically non-trivial means at least one of those components is non-contractable. And I just mentioned that there are now many, many known examples of singular area minimizing hypercones. Of course, one way you could ask this question is if you could classify all the cones, then you'd just see which one in your classification has the least density. But such a classification seems, you know, it's probably hopeless. It's probably totally impossible to do that. But still, people have constructed many, many examples of singular area minimizing hypercones. And all the known examples are topologically non-trivial. OK. So why is the square root of 2 optimal? Well, that is shown by the so-called Simon's cones. So if you're just considering an r dimension to have, I guess, you know, an rn plus 1 cross rn plus 1, you look at all the things where the norm of the first n coordinates is the same as the norm of the ds. The first coordinates is the same as the norm of the last coordinates. Schematically, it's like this. If n were equal to 0, it'd be exactly this picture. This would be the Simon's cones. This would be, I guess, what I call it, cnn, yeah. So c11 would just be these two cross lines in the plane. But anyway, this cone is, it's a minimal cone for all n, but it's area minimizing for n greater than or equal to 3. Oh, we can see c11, maybe. Sorry, this would be c00. Anyway, well, cnn. Anyway, so these cones are generalizations of the Clifford-Torres. For n greater than or equal to 3, all these Simon's cones are area minimizing. They are topologically nontrivial. And their densities goes to square root of 2 as n goes to infinity. So what Tom and I prove is the density for any such cone has to be greater than square root of 2. And then the Simon's cones show you can't do any better than that, because there are cones whose areas are as close to square root of 2 as you like. Now we also proved some sharper bounds in terms of topology. So remember the definition of being topologically nontrivial is that one of the components is non-contractable. Well, if a component is non-contractable, it means it has some non-vanishing homotopy group, some nontrivial homotopy group. And so you could then try to ask for bounds in terms of which homotopy group is nontrivial. Instead of just saying nontrivial, you could say, well, suppose it's not simply connected, or suppose pi 2 of it is non-zero, or so forth. And it turns out our methods let you answer that question as well. So take a simple area minimizing hypercone. And suppose one of the components of complement has nontrivial k-thomotopy. So of course, by being topologically nontrivial, it means this high path will be true for some k. But now suppose you fix the k. In terms of the k, you get the bound well. It has nontrivial k-thomotopy. Then its density has to be greater than an explicit number, which I've written down here. And dk, a kind of odd looking number at first. But anyway, and again, the constant is optimal. So for instance, if you take the infim among all cones where at least one of the components of complement is not simply connected, and then the infim would be this number d1. OK. And by the way, this number, dk is sort of odd number with pi and e in the denominator and so forth. Well, some of it's natural, like the sigma k is the area of the unit k sphere. So that seems kind of natural in this setting. But where does e come in? It's not so obvious that it should come into this at all. But this dk has a very nice meaning, which you'll see in a minute. OK, so I want to basically show you the proof of this theorem, the square root of 2 theorem. And so it uses just a few facts that I want to tell you about. So one of the key facts is, I've already talked about the density, but an important property of the density is that it's upper semi-continuous. The density of a surface, now we're always talking about minimal surface, not arbitrary surface, but for minimal surface, for things that are critical for the area functional. The density is an upper semi-continuous function of both m and x, the surface and the point. So if you have a sequence of minimal varieties, mn converging to m and xn converging to x, then you have this thing, the density of the limit is greater than or equal to the limit. I guess you'd say a little soup of the, but anyway, yeah. So when you pass to a limit, the density can jump up, but it can never jump down. And just pick your favorite one, weak convergence, like verifolds, you know, but flat. Because it doesn't use any way to go strong convergence by standard regularity here. Well, it doesn't. It doesn't really use, this is sort of pre-regularity. This follows just from monasticity and nothing else. So any sort of notion of weak convergence would work here. Weak convergence of verifolds or flat convergence of integral currents, whatever. So for instance, of course, this is minimal, not area minimizing, but one, if you look at an immersed surface that you can see that, I mean, you can see an example of it, at all the points where it's embedded, the density is 1. So if you take a sequence of points moving to where it's immersed, the density jumps up to 2. So that just illustrates how it can be upper semi-continuous as a function of the point x. But to give an example of it being upper semi-continuous as a functional surface, let's consider two, say, lines. So one-dimensional minimal surfaces in R3, namely straight lines. So if you take two straight lines in R3, that's a minimal variety. And if you move them together, density is 1 everywhere, but if you move them together, suddenly, boom, when the density jumps up in the intersection point to 2.  But as I say, you can prove it's very easy, follows from the Monte-Histi formula, that the density can never jump down. So it's upper semi-continuous. Not continuous, but it's upper semi-continuous. So that's one key ingredient in our proof. Another key fact is a beautiful fact about minimal hypercones proved by Hart and Simon back in 1985. So to take any simple area minimizing hypercone, then that cone is part of a foliation. And it turns out that cone is one leaf of a foliation of the Euclidean space by area minimizing hyper surfaces. Of course, the cone is singular, but all the other leaves are smooth. So I say foliation, but there's exactly one leaf that has exactly one singular point. So schematically, say here's your cone, then remember, it doesn't look like this in the picture, but this should be dividing the ambient space into two components. You should think of this and this as being the same component and this as being the same component. So it says the complement, it's part of a foliation, so the complement, here's the leaf on one side of the cone. And part of the theorem, if I stay here, the leaves are all smooth radial graphs. So if you take a ray from the origin, it intersects this leaf exactly once. So these surfaces are all radial graphs. And furthermore, the ones on one side of the cone are all related to each other by dilation. So once you have one leaf, you get all the others just by dilating that one.  Why are those leaves area-minimized? Well, they were constructed to be, oh well, there are several ways of saying that, they constructed it by, I mean, they constructed leaves by minimizing area, but it's also a true fact that anytime you have a foliation by minimal hyper-surfces, that automatically implies they have a very strong area-minimizing property. So sort of by construction, but even if you didn't know their construction, once you have this foliation, you could conclude, oh, they have to be area-minimizing in a very strong sense. OK, oh well, here I drew a picture of it. It's the same picture I just drew, but the cone, except it's sideways. But anyway, there's the cone, and it's part of this foliation. OK, then the third thing is we use mean curvature flow. So mean curvature flow, you start with some manifold with boundary. People usually do it with manifolds without boundary, but you can do it with boundary. And for us, we need it to do it with boundary. So let's start with a minimal surface boundary. And well, if we do it without boundary, you just take a surface, and then you let it evolve so that at each point, its velocity is equal to the mean curvature. So if you take a curve at each point, like I've drawn here, each point where the curve curves one way, it starts moving the other way. So it moves for the curve, it just moves with velocity equal to its curvature, so it starts moving along. Now, as I say, people, when they study this problem, they usually do it for closed curves or closed surfaces. But you can just as well do surfaces with boundary. And in that case, if you have a boundary, well, you could just fix the boundary. You fix the boundary and let the surface move. Or you can also prescribe the motion of the boundary, just like when you saw the heat equation, you subscribe on the bar, you prescribe the temperatures, the endpoints, and the heat equation tells you what happens in between. Same thing here. You can move the endpoints however you like, and then the equation will make the curve move accordingly. So you can prescribe the motion of the boundary, and then the equation, velocity equals mean curvature, gives you a flow of the surface as away from the boundary. OK, now those turns out, again, even if you start with a smooth surface, as it flows, it's likely to develop singularities. So there's a regularity theory for mean curvature flow, just as there's for minimal surface. There's also a monotonicity formula due to Gerhardt Hueskin, and there's associated notion of density. So at a spacetime point, so this flow, you should really think of it as happening in spacetime. There's a point. If a singularity happens, it happens at a certain point x at a point t. So you have a singularity in spacetime, and there's an associated density of that singularity. The formula is more complicated, so I won't write it down. The monotonicity is more complicated, but it has the same general properties as the density we talked about for minimal surfaces. So in particular, the density for mean curvature flow, it's more complicated. I say the formula looks a lot more complicated, but it has the same properties. In particular, it depends upper semi-continuously on both arguments, on the spacetime point, where the singularity happens also on the flow. It's upper semi-continuous. And another thing that's important, so it's a little confusing here. You have these two different notions of very different looking definitions of density, but fortunately they're compatible in the following way. Let's take a minimal variety, minimal cone or anything else. Take any minimal variety. Well, if you let it flow by mean curvature, it just sits there, because it's mean curvature is zero everywhere. So if you take any minimal variety and let it flow by mean curvature, it doesn't move. So any minimal variety you can think of as a solution of mean curvature flow. It's a solution that just a minimal variety is the same as a static solution of mean curvature flow. So a priori, that's problematic because now we have two different definitions of density. The minimal variety, we could give the definition I wrote down, or you could think of it as a static flow, and there's the more complicated definition I didn't write down. But fortunately, in that case, where both definitions apply, they give the same number. Again, that would be important to us. So now let me give you the outline of the proof of the main theorem I stated about square root of 2. So we start with a simple topologically non-trivial area minimizing hypercone. And now I want to intersect it with the unit ball. Of course, the cone goes on forever. It has no boundary. But now I want to intersect the cone with the unit ball. So I only look at the part of the cone in the unit ball. So now I have a minimal variety in the unit ball, and its boundary is this manifold in the sphere. So now I have a minimal con, but with boundary. And I think of that as a static mean curvature flow. So this is the way our proof goes. What we do is we approximate that static flow by mean curvature flows that are really moving by dynamic mean curvature flows. So this static flow, let me just call it lm. That's where the cone just sits there and doesn't move. But now we approximate it by a sequence of mean curvature flows where the surfaces are really moving. So we find a sequence of dynamic mean curvature flows that converge to this static one. OK. Next, we show that each of these guys has a singularity. So each of these guys has a singularity, space time singularity x in, at which the density is greater than square root of 2. And now, furthermore, we show that, well, so the singular is happening somewhere or another. But by passing to a subsequence, we can assume that these converge to some space time point x. But now by the upper semi-continuity of density, here we have a sequence of flows with singularities with density greater than square root of 2. That means by upper semi-continuity, the density of the limit flow at the limit point has to be greater than or equal to the lm soup of the density of the nth flow at the nth point. And this is, well, OK, I'm not going to quite get the greater than. I'll only get greater than or equal to. But each of these is greater than square root of 2, so OK. So and now, but then by the compatibility, this density is, in fact, the same as the density of the cone. So what we proved is there's some point on this cone where the density is greater than or equal to the square root of 2. But of course, all these points are regular, so they have density 1. So in fact, it's this point. So we end up showing that point of the minimal variety has density square root of 2. The point x must be the vertex because the density is one away from the vertex. OK, so in a nutshell, the basic strategy that's proof is you take the problem and you reduce it to a harder problem because the original problem is, you know, try to understand singularities of just static mean curvature flows. And that already seems quite hard. Now instead of reducing the problem, considering dynamic, general mean curvature flows seem much harder than minimal surfaces. But anyway, here, fortunately, it actually helped us instead of making things worse. So I'll show you that. So let me just elaborate a little bit. So the two questions, one, where do those approximating flows come from? And then in those approximating flows, how do you get this square root of 2 bound? So I think I have a slide with the picture anyway. So what we do is, let me help draw. So what we do is we start with this, as I said, we look at our cone, the portion of our cone in the unit ball. And now remember, it's part of that foliation by minimal area minimizing hyper surfaces. So what we do is we take the leaf on one side that comes very close to the origin, maybe distance. So we'll start, I'll say, with this. This is a leaf on one side that comes maybe distance 1 over n to the origin. And now what I want to do is I want to describe this approximating mean curvature flow to you. So what we do is up to time 0, like from time minus infinity to time 0, this is our flow. It's just a minimal surface. It just sits there. It doesn't do anything. It's mean curvature is 0, so it has no reason to move. It would just sit there forever if we let it. But remember, we're allowed to move the boundary. So now at time 0, we start moving the boundary. And we move the boundary until, so we actually move the boundary through where those leaves intersect the sphere. So we start moving the boundary. And as we move the boundary, that forces the surface to start moving, too, by mean curvature flow. And we move our boundary until we end up on the boundary of the leaf that's on the other side. Let me just draw dotted lines here. So I'm not moving the surfaces directly. I'm only moving the boundaries. And then mean curvature is deciding what mean curvature flow decides what happens to the surfaces. But I start here, and I move the boundary until I get to here, and I stop when I get my boundaries on this leaf that say it's distance 1 over n on the other side. OK. OK, now by the way, so I'm moving the boundaries just through where the leaves intersect the sphere. But then I let the surface move by mean curvature flow. The surface definitely will not, that flow will not be along those leaves, because those leaves have mean curvature 0. They wouldn't move at all. So as soon as I start. Why is the Ln plus on the picture? Sorry? Oh, sorry. Let me see. Ln plus is where we. Ln minus is, let's see. Yeah, we start on Ln minus. So the way I was drawing it, this is my starting point, Ln minus. And then I move, and it'll flow. Where is Ln plus? OK, so yeah, OK, so sorry. Ln minus is the leaf on one side that's distance 1 over n from the origin. Ln plus is the leaf on the other side that's distance 1 over n from the origin. So what I want, what I claim we can do is find a mean curvature flow that starts with this one, and as t goes to infinity, goes to that one. And the way we do that, remember, what we have control over is what the boundary does. So I'll just take this, I'll take the boundary of my starting leaf, and I'll move it till it's at the boundary of what I want my limit leaf to be. But again, I don't get to control what happens inside. Mean curvature flow does that. But it turns out, if you do that, if you do what I just said, you start moving here, and then you stop when you get here, then as t goes to infinity, you can prove the flow does converge to the leaf Ln plus. So here, the colors probably don't match up at all, but anyway, the initial surface is the leaf on one side, and the final surface is t goes to infinity. It flows to the corresponding leaf on the other side. OK, so it turns out it's not hard to show, by the way, that it does flow to this, because all those leaves kind of act as barriers. That's the only thing that it could possibly flow to, basically, and so it flows to that. OK, but now, this is where the topologically non-triviality, you remember our hypothesis was that the cone was topologically non-trivial. That implies easily that this leaf is not isotopic to this one. So that means you have this deformation, and some, they're not isotopic, so when you flow from one to the other, there had to have been a singularity somewhere in between. So there has to be a singularity. OK, that's just saying the same thing. That's repetition of the earlier thing. OK, so y squared of 2. Well, so as I said, here, at first, it seems like we've made things worse. Now we need to know, we just wanted to prove a bound of square root of 2 for minimal varieties. Now we need to prove, we want to say the same bound for general singularities of mean curvature flows. But these are very, this is a very special kind of mean curvature flow. It's called a mean convex flow. So notice, when we started moving the boundary, we moved it in one direction, towards one side of the surface. When we kept on moving it always in one direction, sort of positive multiple unit normal. And that implies by a maximum principle, actually, if these surfaces, as they flow, they're always, the maximum principle tells you that the mean curvature for these moving surfaces, once they start moving, will always be positive. The surface always move in one direction. And that's a very, very strong, nice condition. So in general, we know much less about singularities of mean curvature flow than we know about minimal singularities of minimal surfaces. But the one case when you have a pretty good understanding of singularities of mean curvature flow is that mean convex case. For mean convex flows, we roughly have a classification of singularities. Singularities are all self-similar shrinking spheres or cylinders. So what that means, if you take a surface flowing by mean curvature, if it's always moving in one direction, if the surface are mean convex in a singularity forms, if you look at it, look at the surface under a microscope just before the singularity, what you either see is essentially a sphere or a cylinder. So the sphere case, for instance, there's a celebrated theorem of Fuskin, one of the first things theorems big breakthroughs. If you take any, say, convex body, convex body in Arjen and let it flow by mean curvature, he proved it shrinks to a point. And as it shrinks, it becomes rounder and rounder. So it's asymptotically spherical. So again, as I say, if you look at it under a microscope right before it disappears, what you see is essentially a sphere. And another kind of singularity would be if you have, well, suppose you have a very, very thin torus of revolution. That's also mean convex. The mean curvature is always pointing inward. So as it flows, it always moves in one direction. And of course, by symmetry, it shrinks until it becomes a circle. And again, if you look at it under a microscope right before it shrinks away, you see basically a cylinder. Maybe it can be more common. Wouldn't have to be if it's a asymmetrical torus. It's sort of thin, or it's a torus, mean convex, but it's thinner on point. This part will shrink away before that does. So you get a kind of neck pinch. But again, we know that when the singularity forms, you sort of have a cusp. And if you look under a microscope just before the singularity, what you see is essentially a cylinder. So that's what I mean when I say they've been classified. For mean convex flow, the singularities all look like either shrinking spheres or shrinking cylinders. And you know what those Houston densities are at those things, namely the density at one of these. If you have a shrinking cylinder, so that's an sk cross r something another, then its density is given by this formula. And in particular, these numbers are all greater than square root of 2. So again, we had our flow. It flowed around. We knew just topologically that a singularity had to happen because it's a mean convex flow. We know roughly speaking what that singularity looks like, we have a classification. And that singularity had density square root of 2. Sigma k is the area of the unit k sphere. Well, that's a purely local thing. So it's the same. If you're away from the boundary, which we are, it's the same. So anyway, so we got that the density is greater than dk, but dk is greater than square root of 2. So that's the theorem. So one interesting thing. So of course, this theorem, I said it's sharp. In a sense, it is sharp. But in some sense, I mean, it's sharp only because we're taking infimum over all dimensions. If we looked in a particular dimension, if you looked at minimal hypercones in R10 or something, our result would not be sharp. So in some sense, it's asymptotically sharp. So if you take the infimum over all dimensions, all minimal source and all dimensions, then it's square root of 2. But it's kind of surprising that bounds are very good, even in low dimensions. So for example, let's take the one that says, it gives you a bound, if one component of the complement is not simply connected, then the density is greater than this number, d1. I guess I erased a bit. If one component of the complement is not simply connected, then the density of the cone has to be bigger than d1, this number is a 1. Well, the smallest known example of an area minimizing hypercone that has that property is the cone over s1 cross s6. So I guess that's a eight-dimensional cone in R9. Anyway, that's the smallest dimensional example we know that satisfies the hypothesis. Its density is 1.523, and our bound is 1.520. So the bound is rather good, even though we only prove its bound is optimal when you go off to infinity. But it seems rather good, even in low dimensions. And everything I said is for area minimizing hyper-sources. But actually, by modifications, we can say some things about cones that are not area minimizing. And for instance, the method's implied that the density of a simple singular minimal hypercone in R4 is greater than or equal to 1.52. And of course, by Marquez, I said codo, but it's really Marquez. Marquez and Neves, the best constant is 1.57. The constants are not bad, even in very low dimensions. OK, so let me just mention some interesting up-and-questions. So conjectures or whatever. So one is that it seems reasonable to guess that these Simon's cones achieve the minimum in any particular dimension. We only know that in the case of n equals 1. That's a recent result, again. It's part of the solution of the Wilmore problem. Well, if you're in an odd dimension, that cone doesn't exist, but Sn cross Sn minus 1 the cone over, that seems like a good candidate. Again, now if you look at cones, if you again look in a fixed dimension and look at the cones where one of the components, say, has non-trivial k-dimensional homotopy, again, these conjectures are all basically that the minimum should be attained by a sub-manifold that's the product of two spheres. Just because those are kind of the simplest ones. But anyway, in our theorem says that asymptotically, those really are the best. But we don't know their best in any particular dimension, except in the case of two dimension in S3. Another problem is higher co-dimension. Our techniques, I can't imagine any technique is very strongly for hyperserves in many ways. I have no idea how to begin to attack this kind of thing in higher co-dimension. Of course, Jean's result was for higher co-dimension. But if you talk about higher dimension and higher co-dimension, I have no idea. And then one thing that says in our theorem is, explain why the proof gives good bounds. So this is something that I find completely baffling. We had this proof. And we were very happy to get any bound whatsoever. OK, you do the proof and you get some bound. But the proof said nothing about Clifford Torai or anything. It almost didn't seem to have much to do with any particular minimal surface. So you get some bound. And then it seems like just sort of by a miracle it happens that that bound is sharp. But I have released asymptotically sharp. But it doesn't seem like they could just be a coincidence. But as they have no, from the proof, it just seems like a miracle that happens to happen. The proof gives you lower bounds. And then there happen to be these examples that give it lower bounds.  But here it's not like that. Anyway, OK, I'll stop there. Thanks. I'm a little bit confused about the k-dimensional homotopy and the bounds. You're saying that if one of the components has non-trivial k-dimensional homotopy, then the bound is the function. The lower bound is the function of k, which goes up. Yeah. Which goes up with k. Sorry, it goes down with k. But does it go down with k? Yeah, so for instance, d1, and you know, there's numbers, the formula is kind of complicated. So if you just look at the formula, it's not very obvious. But d1 was, I think, about 1.52 roughly. And sort of d infinity, the limit of these d's was square root of 2. So yeah, if you restrict your classic cones, yeah, you should have a bigger infeemum rate. Questions? Do you think there are trivial, airy minimizing cones? Topologic trivial? You know, I would kind of guess, just because why not. But I mean, I have no idea. I have no reason to think one way or the other. Your guess is good to mine. What do you think? Yes, I agree. There are, you know, were you shown, and some other people, made examples of minimal hypercones, where in fact, the link is minimal, topologically trivial. In fact, the link is topologically a sphere. But those are not known to be airy minimized. So I mean, there are some counters. There are already things that exist that might be examples of topologically trivial hypercones, but who knows. OK, well, I didn't really tell you where a k came in. I told you the square root of 2. OK, so let me just go back a minute and say, well, what if you started with a topological cone that was topologically trivial? Well, you could do the same argument. You could still make this flow. But if it's topologically trivial, these two leaves are isotopic. So for all you know, the flow, there still exists this flow that takes you from one leaf to the other. But maybe it's smooth for all time. So that's where we have to use the non-triviality. And for the square root of 2 thing, that's all we need to know. We just need to know there's some singularity. And since it's mean convex, that density is bigger than square root of 2. But if you know something about the topology, not just that the topology changed, but you know something about the way the topology changed, then you can say more about the singularity. So I mean, yeah, so it's kind of like the Morse function. It's something about the manifold that tells you something about what kind of critical points you have. So it's the same idea here. Not only do you have a singularity, but certain. You know these singularities are all like shrinking spheres and cylinders. But for instance, if you took a shrinking sphere, that wouldn't change the fundamental group. So knowing something about the topology puts a restriction on which of these tells you you have to see certain kinds of singularities and then you get a better bound for that reason. Yeah? You get the things for lower dimensions by just knowing which dk could possibly become involved in your construction. Well. Is that all it is? I mean, is that for dimension 3 or 4 or whatever? Well, OK. First of all, unfortunately, we don't even have area-minimizing guys until you're up to seven dimensional and r8. So this whole program sort of doesn't make sense until you're in high dimensions. Because just the smallest dimension in which you get a singular hypercone for area-minimizing when it's seven dimensional and r8. Yeah? How do you extend the flow through the singularity? For those kind of things, I mean, how do you have a singularity if you have some problems? Yeah, that's a great question. So you repeat the question. OK, the question is, how do you extend the flow past the singularity? So mean curvature flow has been studied a lot in recent years by different people. And there's sort of two groups of people that answer that question in different ways. One group says we don't. So you can solve it by PDE. You can just look at it as sort of looking at PDE. And so people who are mainly using PDE generally study the flow up to the singular time. The first time a singularity happens, then they stop. But fortunately for us, there's a good week. There's several different week notions of mean curvature flow that lets you talk about something being a flow even after the singularities happen. Now, there are several different definitions. And unfortunately, they're not equivalent definitions. But fortunately, when you're dealing with mean convex surface, those different definitions all agree in that special case. Anyway, there are ways to talk about weak solutions. And then you can flow right past the singularity. And of course, let's see. Yeah, I think for us, it's really you have to be able to do that. Actually, if you just want the square root of 2 result, it turns out you really wouldn't have to go all the way. You just have to know a singularity happens. And that's good enough. You don't need to keep going. You say that, well, I can't flow forever without a singularity because that's a topological contradiction. So singularity happened. For the argument I showed you, it would be enough to just work up to the time of the first singularity. But if you want to get that sharper thing about the bound depending on k, depending on the topology, then you have to consider these weak flows. Because the problem is, let's say we flow around. So if this region is not simply connected, pi 1 is not trivial, then what you need to know, this is a true fact, that at some point, you may have many singularities. But you need to know at some point, this is a true fact, that if pi 1 is not trivial, then at some point, you had to have an s1 cross r, whatever type singularity. And that means you had to have a singularity with density d1 in that flow. There's no reason that has to be the only singularity, the first singularity. So as you're flowing along, maybe the first singularities are s2 cross something or s3 cross something. So you have to keep on, you can't stop there. You have to keep on flowing until you get to the d1 singularity. So for the first result, you don't need to flow past the singularity, but for the second one, you do. Further questions? Let's thank the speaker again.


In a short time, this boat will be filled with hundreds of people who will be trying to make our way to Gaza to deliver aid and to deliver solidarity and say, you are not alone. We, the people of the world are with you. We hope the Israelis don't stop us along the way. We hope we complete our mission to actually get to Gaza. And we know that we will not stop until the people of Palestine are free.


This is the SF Productions podcast network It's actually a fairly big show last year About 15,000 I'm guessing that's used that many because it took us the better part of 15 minutes to wait in the line Once we had our tickets to actually get in to the hall Pretty big all Steve Lee is here It's a decent show It's a little better but there you go So let's take a look at it Do you get a chance to check out anything in Cincinnati while you're here or how is the hotel in sleep ready for that? I mean because of the flight it kind of messed me up when I slept most of yesterday But I did get a chance to walk around this area my hotel is bigger and so it's a beautiful beautiful city


So, good morning, y'all. Good morning, Paul. It was not quite as impressive as I thought. Let's try again. Good morning, y'all. Good morning. There, that's what I'm looking for. All right, so my name is Paul. And I'm thrilled to be here to talk to you about what I think is a particularly exciting topic. And that's regular expressions. Now, if you just muttered, you need help underneath your breath, or under your breath. Totally get that. There are a lot of people that have struggled with regular expressions in it, because it does have a bit of a learning curve. In fact, how many of you have never used regular expressions? Anybody, a couple of you? How many have you used them, but do find them very frustrating? All right, it is my goal. It's my hope today that I can be that catalyst. I can be that push to get you over that initial hump in the learning curve. In fact, I personally have a goal to make sure that everybody, when you leave here, you've learned two new things about regular expressions that you don't know right at this moment. If you, if I fail in that goal, then please come and see me and I'll come up with some special tricks for you. So real quick, and I did not turn this on, so let me turn that back on. There we go. There we go. So real quick, what I'm going to cover. We're going to talk about what regular expressions are. Talk briefly about what they are not. Talk about what's in it for you or what we can do with regular expressions. Then we'll dive into all those different hieroglyphic symbols that we've seen before in a regular expression and talk about each one of those. I'm going to demonstrate on screen. I was hoping you could follow along, but I'll demonstrate on screen what each of them do and how they change what we're matching as we use those different symbols. And then hopefully with enough time, we're going to play a game. Collaboratively, we're going to build some regular expressions to solve a puzzle. So that's the part where you're going to have to yell out. So I'm going to make sure you talk back to me. So regular expressions. Oh, I was going to talk about the follow along. If, I guess nobody really can follow along because you don't have Wi-Fi, but I do have a repository out based on this presentation with a bunch of sample dictionary words that you can use to follow along. And I'm going to be using a tool called RegEx 101. So if you'd like to use that. And you should have access to these slide presentations too as well so you don't have to worry about writing all this down. So, regular expressions. Regular expressions actually originated back in the early 1950s by mathematician Stephen Cole Clean. He was trying to come up with a way to describe languages in a formal language theory. Essentially coming up with an algebraic way to describe languages. Now that's probably not what you and I think of in terms of when we hear the term regular expression, right? What we probably think of is something more like this. Right? And if you're listening in, we've got an animation of Bert from Sesame Street who is passing out after seeing a fairly long regular expression. Now what we usually think of is a series of characters that are used to represent some type of pattern that we're trying to find in a larger body of strings or text. Now, what regular expressions are not? One, regular expressions are not a programming language. So if you are not a programmer, I hope you now have some hope that you can actually use these things because they're not a programming language. They do have some basic branching, some conditionals, but they're not a programming language. They're also not un-learnable. I've had more than one person in these sessions say, you know, regular expressions are, there's nothing regular about regular expressions. They're very hard. You just, I'm hoping, really truly hoping that I can be that light bulb, that aha moment that gets you over that hump and illuminate exactly how regular expressions can be powerful and they can be a powerful tool in your toolkit. The other thing is they're not the solution to every problem. I don't know about you, but I have a really bad habit when I learn a new powerful tool. Suddenly, everything looks like I can solve it with that new tool, right? In fact, if you've seen this XKCD comic, for those of you listening in, we've got two stick figures, one saying, if you're having pearl problems, I feel bad for you, son. I got 99 problems, so I used regular expressions and now I've got 100 problems. And it's true. When used inappropriately, or used in an unoptimized manner, you could actually make things worse using regular expressions. So we'll talk about that as well. So what do we use regular expressions for? Anybody have a guess initially? What's that? Perfect. And you said what else? I use redirect. Redirect? All right, so a couple of things we can use them for. We can use them for finding text, finding things inside. Think of control effort command F. It's like that but on steroids. In fact, if you're trying to find some strings and some information inside a larger butter text and you're not finding what you're wanting, you're getting too many false positives, a regular expression might be able to help you out. Another one is validating text. Like you just said, you're sure an email is an email. So if you're receiving input from some outside sources, regular expressions can help validate that what you're receiving is what you want. We can also do string manipulation. We can pluck out pieces of information from that larger body, do things with them and put them back in.  So I'm gonna give you some concrete examples of where you can use regular expressions in areas you might not have thought of before. So let's say you've got an article on wolves in a word doc or Google doc and you need to find every instance of the word wolf or wolves as it pertains to anything except, where's my mouse pointer? Except red wolves and I can't use them. So we wanna find gray wolves, brown wolves, rare wolves, so we can use a regular expression and now notice gray wolves is highlighted, rare wolves is highlighted, but red wolves is not. All right, so Google Docs support them. Let's say you've got an Excel spreadsheet and you're importing some information and it's phone numbers. And those phone numbers have come in in all different kinds of formats, right? But you need them to be formatted in all the exact same way. So again, we can use a regular expression inside Google Sheets or Excel spreadsheets, grab, pluck out those different individual numbers and then reformat them so they're all the exact same. So hopefully your reaction's like that. The next one I usually show is a demonstration on how you can use regular expressions inside Google Tag Manager to clean up the data or extract data that you don't need. Unfortunately, it's about three or four minutes and I wanna make sure we have time for the game at the end so pretend I showed it to you and this is your reaction. All right, so how do we actually use it? So I said earlier, regular expressions are a series of characters that we use to represent patterns. Well, we have all kinds of characters. We have literal characters. We have special characters. We have something called character classes. We even have shorthands for those character classes. We have lots and lots of characters. So what I wanna do is walk through all of them individually and show them to you and how it changes what matches. So let's start with literal characters. Literal characters are exactly what they sound like. They are literal characters. In this example, with F-O-N-O, I'm telling the regular expression engine, I want you to find the literal character F followed by the literal character O and another O. So let me show that to you in my demo over here. Oops, with my mouse, there it goes. All right, so if I type in F-O-N-O, everybody can hopefully see this up here. My mouse just does not show. So we matched the F-O-N-O at the end of the string. We've matched it there in foo. We've matched F-O-O in foot, F-O-O in foo bar, F-O-O in bar foo. So every time F-O-N-O show up together, we've matched that. Good? All right, notice also at the beginning of that regular expression. And the end, just almost before the end, we have forward slashes. Those are referred to as delimiters. The delimiters define the boundaries or the edges of the pattern we want the regular expression to search for. You can use several characters to define those edges. It just so happens that the forward slash is the most common. Can anybody think of why we would need to change the delimiter? Yeah, so that very first one, if we wanted to search for that forward slash, we would need some way to be able to do that, right? So in many regular expression tools, this being one, you're often able to choose those different delimiters. So I could say, hey, I want the at symbol. So now if I type in foo, oops, I shouldn't have done that last one. You can see here it is matched forward slash foo. Make sense? Okay. Now I've used the term regular expression engine a couple of times. I want to pause and make sure everyone understands what I mean, but when I say that, regular expression engine is a piece of software that can read a regular expression, parse it, and then apply it to that body of text. Sometimes it's referred to as flavors. So notice over here, we have, again, I wish I had my mouse pointer there, we can choose from the different flavors. There are different flavors, and I'm gonna give you a series of warnings. So if you're listening in, I've got an animation about red flashing light to indicate a problem or something to watch out for. And that is that not every regular expression engine is the same. It is very similar to browsers in the 90s. Was anybody around back then? Couple of you? Well, what happened all the time in the 90s with browsers? Of course, compatibility. Yeah, compatibility was like best viewed in Netscape or best viewed in IE, right? Okay, regular expression engines are the same. They can all implement their own set of features. And one of the problems is there aren't really any standards for regular expressions. There's only one, and that's POSIX. And it's really old and very limited. So as you're building regular expressions, you need to be aware that what you're building may or may not work in a different regular expression engine.  That is not an actual standard, but it has been adopted by the industry kind of as a quasi-standard. It's actually an open source library that was built to build compatible features with Pearl with what they had implemented way back when. But because it's an open source library, he's laughing, you know what happened, didn't you? Yeah, as it's expanded and gone on, Pearl later adopted features from Pearl Compatible Regular Expression Engines and implemented in its regular expression engine to make itself more compatible with Pearl Compatible Regular Expression Engines. Yeah, it's a little confusing. That's part of the reason why this gets a little hard. So the point is to always make sure you're testing in a tool, because it gives you a wealth of information. Not only can you choose the flavor, notice up here it's explaining exactly what it's trying to find based on that regular expression. It also gives me where it found the match and gives me a quick reference to different information about how to build regular expressions. The really good ones will even give you, you can see it in this one, a debugger will walk through and show you why it is or isn't matching what you think it should. So always use a regular expression tool. And that is your first bonus. So if you're listening in, I've got Oprah Winfrey pointing out, saying you get a bonus and you get a bonus and everybody gets a bonus. And there are a ton available. You know, Regex 101 just happens to be the one I'm using today. There's also Regex there, there's regular. If you like installed options, applications. If you're on Windows, you cannot go wrong with Regex Buddy. It's fantastic. If you're on Mac OS, we have expressions. But the point is to use those, let them help you build these things. All right, so here's our special characters. Here are those hieroglyphics. We have 12 special characters that we can use. The very first one is an escape character. So earlier when I had my delimiter set to here, notice it told me, hey, there's a pattern error. And if I hover over that, what does it say? Oops, that's the F. Let me scoot over just a little bit. Too far, too far. Goodness, can't quite get that today. On escape. So that backslash is the escape character. It tells the regular expression engine, okay, this next character that you're gonna come across, don't treat it like it's normal meaning, treat it like it's alternate meaning. So if this was a forward slash, it would say don't treat it as a delimiter, treat it as an actual forward slash character. That's all that backslash does. All right, the next one up is the carrot. It is part of a subgroup called anchors. Anchors don't match characters. They match positions. In this case, it is saying, hey, when you look for bar, only find matches where bar is starts at the beginning of the string of the line. It anchors this pattern to the front. So watch what happens when we use this. Let me come in here and get rid of this. So I've got foo, you know it's matching into foo, foo, foo, bar foo, if I come in here and use a carrot, watch what happens. Now what matched? Only the beginning. Only the beginning. So without it, with it. See how that happens? All right, so it's saying only match this foo pattern when it is at the beginning. All right, if we have a beginning, well, we need an end. So the accompanying anchor is the dollar sign. It says match at the end of a stringer line. So we'll come back over and do the same thing. We've got foo, it's matching at the beginning and the end if I add the dollar. Now what matches? Only those there at the end. Have you learned at least two things so far? Yeah, all right, done, everybody can go. No, just joking. So the next bonus for you is that whenever you can, always anchor, all right? Doesn't matter if your pattern's actually matching anyway, you should always go ahead and anchor for optimization because if you have anchored, then the engine doesn't have to waste time continuing to search for that pattern if it's not really what you want. For example, if we said anchor foo to the beginning, then if the engine comes across a string and it starts with a b, does it have to continue? No, it knows, this has to be at the beginning, I can just skip this piece and go to the next piece. All right, so whenever possible, anchor. The next special character is the beginning or the open square bracket. It is what tells the regular expression engine we want to define a character class. A character class is going to match a single literal character from the class. Inside the class, we can designate exactly the characters we want to search for, so we can say I want you to search for an a, or a d, or a g, all right? Now, if you wanted to search for every alpha character, it's going to get a little hard to read if you had to do a, b, c, d, e, et cetera. So it does allow us to create ranges. In fact, I think I had that example back here, yeah. In this case, we're saying I want you to find a single character that is in the range from a to z. Makes sense so far, all right? The ending square bracket is not a special character by itself, it's only a special character when used in conjunction with the beginning square bracket in order for us to create that character class. Inside the character class, other special characters are no longer special, they're regular characters with the exception of the ending one, because that makes sense, that's how we define the end. The backslash itself, because we need to be able to use it to maybe escape that one. The caret, which we'll talk about in a second, and the dash, which is because that's what defines our range. So back in my example here, if I were to do maybe I want to find everything that's b or r, and then o, o. So now that I've got boofar, rubaf, these are all fake words, I know what I do with these means, raboof, or I could come in and I could say, all right, I want to do a range of maybe everything between b and g, or I'd say h, but that's all right, still get the same thing, and now I'm back to matching the foo, boo, but not rubaf. Good, making sense, all right. So the next special character that we have is the caret symbol, and it's the negation character. As for those of you that are listening in, we've got an image of Michael Scott, our animation of Michael Scott, holding up his hand saying, wait a second. And this is a prize, a perfect example of why regular expressions are sometimes challenging to understand, because what did we just say the caret symbol did? Anchor, and now I'm telling you, it's not an anchor, it's negation. These symbols can have their meanings change based on where inside a pattern they're used and in conjunction with other symbols that they're next to. So in this case, if we use that caret inside of a character class, we're saying find any single literal character that is not any of these characters. Outside of the character class, it's an anchor. So let me show you this, so I'll come in here and I'll wipe this out again. So let's say I did F-O-O, but I really wanna say find anything that is something O-O that isn't F. Can use that caret, now watch how it happens. So now we're matching Bufar, we're matching question mark O-O, we're matching anything that isn't F. So outside it's an anchor to the beginning and you can use them together. I could do anchor and then another one inside. So inside, negation, outside, anchoring. Good, all right, woo, all right. So it can get really, really tough to build these character classes, right? Regular expression engines by default are case sensitive. So if I wanted to find any word that started with a letter, whether it was upper or lower or maybe a number, I'd have to do capital A through Z, lowercase A through Z, zero through nine. It gets really complex. So instead, most regular expression engines support short hands. Short hands typically, and it'll depend on the engine, but typically start with that backslash and then a normally literal character such as backslash lowercase D is actually the character class zero through nine. Backslash W is actually shorthand for capital A through Z, lowercase A through Z, zero through nine in the underscore. Plus the S and then there's about 25 more. Don't worry about remembering because remember over in our tool, if I scroll down here just a little bit, there we go, you can start to see that it gives you some of those shortcuts. Just know if you're evaluating a regular expression and you see a backslash in what normally you would think of as a literal character, that's probably one of these shorthand character classes. All right, see everybody's still good. All right, the next one is I call the weird one, the dot, the period. I do that because, you know, the carrot had the dollar sign it was partnered up with. The square bracket had the ending square bracket. They all had like little partners, right? The dot doesn't, it is all by itself and it stands for any single literal character except for new lines. It can stand in for anything. So if I come back out here to our little examples again and maybe do dot, oh, that's a zero, not an O. There you go, dot, O, O. It's matching foo, it's matching question, O, O, foo again, boo, roo, anything that's not a new line. All right, so just as you're reading those regular expressions, that dot says I can be anything that's not a new line character. Am I still good? Just making sure. It's hard to tell sometimes if you're lost or just tired. Okay, I'm gonna keep going then. The next one is an alternation character, the pipe symbol. It tells the regular expression, hey, I want you to find one of several things. In my example, I'm saying, okay, as you're going through, I want you to find an instance of BAR. If you cannot find BAR, I then want you to look for F-O-O. It creates a branch for the regular expression engine to follow. However, there is a warning, and that is regular expression engines like to return as quickly as possible. They like to find a match and then hand that match back. That means it is always gonna give preference to the left-hand side in an alternation. So in the example, there were many cats near the bowl with one cat by the door, because C-A-T is on the left-hand side, it has found a match in cats and is gonna return that match, even though C-A-T-S may be the more appropriate match. So just be aware when you're using those alternations, that's how it's gonna treat what's inside that alternation. That left-hand side is always gonna take precedence. All right, the next set are called quantifiers with several quantifiers that we can use. They tell the regular expression engine, the previous thing you asked me to look for, I want you to find a certain number of times. The question mark says I want you to find it either zero times or one time. So in the case of F-O-O-B-A-R, it will find foobar, because I can find it once, or it would find foobar. In fact, I think I have both of those out here, so if we do foo, question, B-A-R, not bat, I can't type, yeah, it's found foobar, but it also found foobar, because it's saying that other O is optional. However, there is a warning with these. Quantifiers turn on greediness. Greediness is when the regular expression engine wants to find as many things as possible. It's like the flip of the alternation. So if I were to do CATS question, it's always gonna try to find CATS first before it drops off the optional, and then finds just CAT. So it's the reverse, and it's important, especially when we use this next quantifier, the asterisk or the star. The asterisk says find either zero instances, optional, or as many as possible. So have you ever used a dot star? A couple of you, yeah, what does the dot stand for? Anything, right, except new lines. And then what does the asterisk stand for? As many times as possible, so you end up possibly inadvertently matching everything out to the end of the universe, because it'll just keep on eating things until it reaches a new line. So if we come back over here and do foo asterisk, notice it found foo bar and foo bar, but it also found foo bar. All right, the next one we have is a plus sign. It's like a combination of the first two. It says, I have to find at least one instance, but I can also continue consuming as many of those as possible. So in the example I just showed you, if I change that to a plus, it's only gonna, well not only, but it's gonna find foo car and these, because I've said it at least once, but it'll also find foo bar. Oh, I just, yeah, there we go. Am I still okay? All right, sometimes you need even more finesse, or you need more control over those quantities, those number of repetitions. And so that's where the curly brace comes into play. Curly brace combined with the incurly brace allows us to designate a specific number of repetitions. So the pattern is minimum, maximum, or minimum has to be zero or positive integer. Then the maximum has to be equal to or greater than the min. However, if you drop off the max, that stands for infinity. So earlier we had zero or one with a question mark, that's the same as saying zero comma one. The asterisk is the same as saying zero comma nothing, because that nothing stands for infinity. The plus sign then would be one comma nothing. And then if you admit the comma and the max, that means I wanna find something exactly X number of times. Still good? All right, and then just like the square bracket, the ending curly brace, it's not really special unless it's used in combination with that beginning one. All right, that is 10 of the 12 characters. We've got two left. You feel good to go into the last two? Good, but most people are shaking their heads. All right, that next set is the opening and beginning parentheses. These allow us to create subgroups. So what a subgroup does is when the regular expression engine gets to that group, it says, all right, I'm gonna pause and now I'm gonna jump into this group and begin looking for things here. And I love the example of that theater of theater. Make sure I can see that there. So let's say I wanted to find either spelling. All right, so T-H-E-A-T, it's found that. And then I wanna find theater or theater, E-R, which would match, or R-E. So I can do something like, E-question, R-E-question. Nah, that gets real complicated. Instead, I can do this sub-pattern and say, hey, in here I want you to find E-R or I want you to find R-E. And now I found both spellings. So it's a sub-pattern. This becomes really powerful when we combine those with the quantifiers because remember, the quantifier quantifies the previous thing we looked for. So if I add a quantifier to a group, it's gonna quantify the group. So if you think back to the phone numbers, I could do, hey, I wanna find a character class of zero through nine and I wanna find either three digits or four digits where they appear together. Then I could put that in a group and say, hey, I wanna find three instances where that happens. And I can expand out and make these more complicated patterns. Okay, so probably actually raise your eyebrows. All right, good, that means you're getting it. So then the very last set of characters is the open and closing parentheses. So for those of you that are listening in, we've got a young girl, about four or five. It's actually Rudy Huckstable from the Cosby Show, smacking herself in the head and saying, not again. In this case, it's not quite different. Any grouping is always gonna be a capturing group. What I mean by a capturing group is when the regular expression jumps into that group, if it finds a match, it stores what it finds in memory so that we can use it later on. In the case of those phone numbers, what I did is I said find three or four, find three or four, find three or four, and hold on to those. And now I wanna reuse those later on as group one, group two, and group three. So by default, you access those groups in the ordinal position they were created. So group one, group two, group three. Usually, in many of them, it's with a dollar sign. Some of them use a backslash and a number. And we've also even got named groups to make it even easier. That's a little bit more advanced. But we'll come in here real quick and I'll do a group, maybe bar. And if I change this from matching to substitution, now you can see I've accessed what I saved inside that group as dollar one and now it is replacing it with dash dash in what it saves. So now it's foo dash dash bar. This is what allows us to do that string manipulation so we can capture pieces of data and then put them back together. And you don't have to put them back together in the order you found them. So I could have the third group and then move it to the beginning. And then have the first group and then the second group and move them in any way I need to. All right, everybody's still okay. So we've gone, we've talked about literal characters, we've talked about special characters, we've talked about character classes, shorthand character classes is now time for a pop quiz. What does the plus sign do anymore? So it says I match what I just asked you to find at least once to infinity. Good job. What about the pipe? Or it creates an alternate branching. What about the square bracket, the opening square bracket? A character class. What about the carrot symbol? Anchor or negation, perfect. All right, I have one more bonus that I wanna share with you. This is an advanced topic. As I go through this, if this does not make sense, that's okay, this is an advanced topic. But I want you to be exposed to it so that when you are building regular expressions later, if it's just not finding what you want, you think back and you can say, maybe I need one of those look around things, all right? Plus we need it for the game. So a look around is referred to as a zero-length assertion. It's like the anchors. It's not gonna match and find characters. It's gonna match and say does something exist or not. That's that positive or negative. And we've got two types. We can look ahead or we can look behind. So in a pattern, I've gone, maybe I've got F-O and then we stop and we've got this look something. Look around. And if I have a look ahead, it says, all right, I now want you to pause and I want you to look ahead into the string and see if something is there positive or if something's not there negative. If it's a positive and it's there, then return true and keep finding things. Or I could say no, I want you to stop and I want you to look behind where you just went and see if something is there or not there. The thing that finally made this click for me was I was trying to find, I was trying to match the letter Q in every word where you did not follow the Q. So help me build this expression. How would I start with saying find a Q? Q. Then we learned earlier, we could do something to find not something. So how would we do that? Negate inside of a class, right? So bracket, don't find the U. And that kind of works. In other words, quit didn't match. I found a match with Qwerty and Quintars. But what about Iraq? Why didn't it match Iraq? It's the end and there is what's after it? Nothing and a character class has to match at least one literal character, right? So it didn't match. In addition, I don't want to match the W and I don't want to match the I. I just want to match the Q. So this is where those lookarounds come in. So what I can do is we create lookarounds with the group. We then use a question mark to tell the regular expression engine, this isn't a regular group, we want to do something special with it. In this case to do a negative look ahead, I use the exclamation. And then I can say, I want to make sure that the next character that follows, I want you to look ahead, but only continue matching if there's not a U. And now what have I matched? Only the Q's where there's not a U and that includes Iraq. So again, if you're like, I have no idea where you're going, that's okay, I just, like you said, I just want you to be exposed to it that this is a possibility because we're going to need it for the game too. All right, so we are going to play a game, we're going to play Wirtle. Is everybody played Wirtle? Yeah, we, that's, now before you say that's cheating, hold on, the goal isn't to solve the Wirtle, the goal is to see if we can build a regular expression that represents what the Wirtle is telling us. Does that make sense? Okay, so somebody said, ooh, I like that. So I've got a dictionary in here, I do not remember, but it's several tens of thousands of words. Okay, and I'm going to bring up Wirtle here and I'm going to bring up Cognito here. So hopefully my internet is still working. Yay, it is. All right, and before I start, I want to make sure I put this into high contrast mode, so you can see it. And if you've not played before, what we're trying to do is we're trying to guess a five-letter word. As we guess words, it's going to show us the letters that we've guessed and it's going to color them differently. I am colorblind. Is that first one green or orange? Orange. Oh, it's orange. I thought it was green. So if it shows up as orange, that means that is the correct letter in the correct location. If it shows up as blue. Yeah, okay. If it shows up as blue, that means it is, that letter is in the word, but it's in the incorrect position. If it shows up at gray, that means that letter does not show up in this word at all. All right, so this is where we are going to collaboratively work together. If I wanted to find a word with five letters, how would I start that? In a regular expression. Say that again? To designate what? Perfect. And so then if I wanted them to be anything that's A to Z, how would I build that part? So do bracket A through Z in bracket and then curly brace five. Perfect. So that says, hey, find any string of five letters. Now, is it gonna find five letters inside a 10 letter word? Yeah. So how would we tell the regular expression engine? I only want you to find these five letters when it constitutes or takes up the entirety of the line. Oh, perfect. Anchors. Anchors where? The front and back. Perfect. Yeah. So we want to do, oh, I'm so happy. Yes. You guys got it. So anchor at the front. Anchor at the front. You want one so low? There's an, oh, is there? Yeah. I didn't know there was a dirty word in there. My apologies. Oh, goodness. So we've gone from, I'm so sorry about that. I did not know there was one in there. I grabbed it from the dictionary. It was in the dictionary. So we've gone from, I don't know how many tens of thousands of words. We're now matching 14,000. I do want to capture these so that we can see them more easily down below in the list. All right. So we're all ready to go. We've got 14,000. And inside the wordle, I usually like to start with the word audio because that gives me A-U-I-N-O and knocks those out. However, I'm open to suggestions. Is there a different one you'd like to start with? I use trace. Trace, T-R-A-C-E. A doo. A doo, which is? A-D-I-E-U. Ooh, that's a good one too. Is that cool if we use that one? Okay, so it's A-D. I-E-U. I-E-U. Ready? Oh, I was on the wrong thing. Goodness, I got myself all excited. Oh, and if you played this today, don't yell out the answer until we get a little bit farther. All right, so now what is this telling us? We have an I-N-U that's where? Somewhere. And then do I just talk about how we can tell the regular expression. Hey, I want you to look, I don't want you to grab anything. I just want you to look to see if something is there. Ah, yes, that look around. So I'm gonna do a positive look around. What were the two characters again? Whoops. I-N-U. So I'm gonna say I want where an I shows up anywhere in here. And then I want another one where a U shows up anywhere in here. And we've gone from 207, 14,000 something down to 207 possibilities. But we're not done because what else does the word will tell us? Yeah, we do not want A, D, or E. So I'm gonna go back in here. I'm gonna change what we built earlier to say, whoops, let me make sure I grab this right. Oh, that's moving, I don't want that here. Let's wipe this out. Whoop. So then we're gonna say there's my capture group and the end. So we're gonna say, hey, we do not want A, what was it, A and what? A, D. D? I've already forgotten, goodness. A, D, and E. So we don't want A, D, or E. And we don't want that in which positions? One, what's that? Any position. Any position, but currently we definitely don't want it in the first two, right? Okay, so I'm gonna say quantity two. And then in the third position, we know we don't want A, D, or I. So I'm gonna come back here. I'm gonna build another one. So I'm gonna say not A, D, or I. And then in the fourth position, it was the same as the first one. So not A, D, or E. And in the last position, not A, D, E, or U. So not A, D, E, or U. And now, how many possible matches do we have? So we've gone from 14,000 something to 300 down to 104 in how many guesses? One guess. In one guess, we have shrunk that thing. I don't know, I can't do the math on my head. A whole bunch. So does anybody, and I'm sorry for this small space. I can't really make this bigger. Does anybody see a word in here? What's that? Do you want to begin with S? We'll scroll, I think these are kind of alphabetical, so we'll scroll. I do notice, like music, I think it's music.  All right, so let's scroll. What did you say, S? I got, oh, there's not very many S words. In my C, and you hear pupil. What are we missing? We got A, E, I. We need an O, don't we? Or do we already O? I don't know if I even see it in here with it. Julio, I don't know what that word is. Curio? Which one? Fungi. Fungi, F-U-N-G-I, is that right? F-U-N-G-I, ready? Ooh, so now we know, oh goodness, now what do we know? What now? What's that? No FRG. No FRG and we also need an N, okay? So let's add that. And somebody make sure I always go over time. So if I'm going over time, somebody yell at me. Dot star, what was that, an N? Did I just say? Yeah, N, sorry. N dot star, close that out. Now we're down to 31, but we also know that the, we gotta add F and G in here to the ones we can't find. So let's do F and G, and then F, scoot over, F-G, F-G.  The specific, the best way is gonna be on the context of what you're doing and what you're trying to accomplish. So we could build this in a bunch of different ways. This is probably not the most optimal. So now we know the first one, okay, well the second one can't be a U. Did we already do that? So, oh, nope, need to build in a second position then. So we know the second one can't be, what was it? A-D-I, no, A-D, what was it, U? And then, can't be, what else? Can't be A-D-E-F-G, A-D-F-O-G, F-O-G, and it all, oops, I put an H in there, and it can't be a U. Ah, it's living too many times. So first, second, and then the third one also can't be that N, so let's add that in there. And now we have 15 matches. See what I see, what I, something's not right. So why would you have beamy and glary? Beamy and glary, so let's look here. Oh, never mind, never mind, never mind. I got it. Rootin', tootin', cumin, cuttin', burnin', what's that? Units. Units? Units, okay. Units. Spell it, yeah? Oh, that's what I thought you said, okay, sorry. Ooh, so we definitely know that U and N is at the beginning, so we can wipe out the first two. U, N, and now what do we know? The third one still can't be an I. The fourth one can't be a T. So third, fourth one can't be a T. Now we're down, no match. What, fourth one can't be a T. First two are, do I leave one in? U, N, one, two, and three. I have messed up something, haven't I? One and two, three, what do I mess up? Take the N out of the third one. One, two, oh yes, sorry. There we go, now still no match. What do we do? Okay, so we have to have a U, N, I, and T. So we've got U, N, we don't have a T up in here. Got the last one, thank you. No match still. No, no, it can't be the U at the end. This is the hard part about doing a live demo. Okay, so we have to have an I, I'm sorry, I'm flipping too fast. We have to have an I, T, and N, and a U until, probably, but or twice. Oh, you know what we haven't added? We haven't said, hey, we can have a T anywhere. So we can have dot star, T dot star. Does that help? Nope, still no match. So we can have an I, we can have a U, we can have an N, we can have a T. We can't have A, D, E, F, G, or S anywhere. So A, D, A, D, E, F, G, S, A, D, A, D, E, F, G, or S in the third one, or an I in the third one, right? Where am I messing this up? Maybe it might not be in my word list. Oh, that's a possibility. Well, you know in the T are the last two, because. Yes? Well, I'm so sorry, this isn't working out. Normally this works out perfectly, and I have somehow messed this up. I tell you what, I'm gonna do it from the beginning again, so we get dot, end, and we want to capture, and we wanna do, we said A equals dot star. What were the three dot star? We had, we have to have I, U, N, and T. We have to have a unit, so U, we have to have dot equal dot star, dot star, and we had to have not eight. Eight. We have to have an eight in there. We had to have an N, correct? We have to have an N. Help me out here and remember there was an I. So we have to have an I. And we have to have a T, so we'll do one more equals. It is case-sensitive, but wordles shouldn't use any capitals. The capitals, it does have capitals, which is, those would be false positives. So that's okay. It shouldn't prevent us from finding them.  So now everything should start with a U and N. Why is it not capturing? No match. Saying I don't have any words at start. Oh, because I don't have the rest of them in there. Okay. So then, not, A-D-E-F-G-S. Not, A-D-E, A-D, thank you. I can't keep all these straight in my head. A-D-G-S, S-F-G-S. All right, what am I doing wrong here? I have totally messed this up somehow. Oh, I'm missing a dot right there. Ah-ha, our star. There's one problem. Still no matches. This is the first time this has never worked. This is an excellent illustration. Now I just want to solve it to find out what the freaking word is. Okay, let's guess, because I'm going to give up on the red jacks. Until. Unfit. Unfit? Yeah, it can't be unfit. It could be unlit, right? Let's try that. Yeah. Ah, it's unlit, not in here. Well, yeah, I'll just do that. I don't think it can show me unlit. Unlit, are you in there? Oh, is it not in there? Oh no, it says there's two, so it is in there. Okay, somehow I messed that up. I am sorry, it is in there. I don't know what I did wrong. Well, good, good. But you did see at least how we went from the thousands and thousands and was down where you're narrowing it down. Normally I can get this down where there's like two possibilities, right? In three guesses. So I'm hoping you see the power of regular expressions. I'm hoping you've got at least two new pieces of information. I don't think there is any extra times, but if you like to, there's word of clones. There are regular expression crosswords to kind of help you play through building regular expressions. I do want to acknowledge these resources. These are all fantastic places to learn about regular expressions and test regular expressions. I mean, I could not even begin to understand them without that, so I definitely give them credit. Do we have five minutes left? Yeah. Oh, okay. So what questions do you have for me? And I do apologize for messing that last piece up. Where are the, is anybody here from Board Camp Alabama? We are in Birmingham, sorry, yeah, Alabama, sorry. They're supposed to be available somewhere. If not, I will, I'll post them on my Twitter. I'm gilzo at Twitter. I'm gilzo everywhere, I'll just tell you that. So if you do a search for gilzo, there's only like 20 of us in the U.S., and I'm everywhere. So I've got gilzo pretty much everywhere. Any other questions? Where can you find a good resource with example patterns that you can use for regular stuff like an email or an address? So in all those tools, they'll give you those patterns. So we're just gonna come over here. They do group constructs, substitutions. Is it not over here? This one has a code generator. No, this one doesn't. And some of them, they'll actually have common patterns you need to search for. Definitely these, like a regex one, a reg, reg, I can't even say rex egg. That's a really good one. He has a ton of examples on how to find things. And that is a good example. Did I say don't grab Stack Overflow, regexes and dump them into your code? Did I mention that? Yeah, don't do that. At least without dumping it into one of these testers and reading the explanation. But also don't recreate the wheel, right? Like don't try to write your own complicated regx if somebody else has already built it, right? Just make sure you understand what it's doing. Any other questions for me? What's this set that you've made of this site? This site? It's regx101, regxer, regexr.com is also another really good one. They all do the same thing. Any other questions? Yes? Regx or regx? So it's regular expressions. I'm holding it for Jesus. Oh, sir. Oh, I've lost my, I'm sorry. But if you want to say regx, that's not gonna offend me. I just say regx because it's regular expressions. Though if you ask me about GIF and GIF, I am very hard on GIF side. It is GIF. We'll die on that hill. Any other questions? Any other questions? Yeah? What should anchors do in the beginning and the ending? Is there anything that you can cook out for just in the middle, not in the beginning, not in the end? There are off the top of my head, I could not tell you what there are. But there are other ways to designate positions inside. And usually you can often use those looker rounds to also narrow down where things are occurring.  Any other questions? You get the bonus for stumping me. Yeah? I will definitely do that then. Any other questions?  This is, oh, that's not what I want. There we go. That was questions. So that is my business card. If you'd like to scan it to get that information. But again, I'm Gilzo everywhere, right? Just search for Gilzo, you're gonna find me. If not me, it's gonna be a relative. We'll get you back to me, it's not a problem. I am gonna be here until Monday. So, you know, if you come up with a question that you didn't think of right now, grab me on the hallway. I mean, I literally do love regular expressions. I get very, very excited whenever my boss comes to me and says, hey, we need to build this thing. Like, yes! So definitely ask me questions. What part of the country are you in? I'm currently in Columbia, Missouri, which is pretty much through a dart in the middle of the States. It's, you're gonna land pretty close to me. But the company at Workforce Platform SH we're an international company. So I'm all over the world. We kind of go everywhere. Very cool, all right. If there's no other questions, thank you very much. I definitely appreciate it. And today everybody learned at least two new things. Yay, I accomplished my goal, perfect. Thank you very much.