Skip to main content

How to Explicitly Compute Charts for a Levelset Submanifold

20 Jun 2025

While doing a computation with my friend Shane the other day, we realized we needed to explicitly compute a local chart near the identity of SL2(R). It took us longer than I’d like to admit to figure out how to do this (especially since it’s so geometrically obvious in hindsight), and so I want to write down the process for future grad students looking to just do a computation! If you want to see what Shane and I were actually interested in, you can check out the main post here.


Ok, let’s hop right in! Say you have a 2-manifold in R3 to start1:

If we think of the purple manifold M as being an open disk, representing a small neighborhood of some possibly larger 2-manifold, then we can see the projection onto the xy-plane is a diffeomorphism onto its image (an open disk in R2) while the projections onto the yz and xz planes are not open in R2! This is because the normal to M is parallel to the z axis inside M, (indeed, at the “top of the hill”) so the tangent plane at that point degenerates and projects to a line whenever we project onto a coordinate plane containing the z-direction.

For a more computational example, let’s try the hyperboloid x2+y2z2=1, and let’s see what happens near a few points.

The tangent plane at a point is controlled by the jacobian of the defining equation, which for us is 2x,2y,2z.

This gives us three (disconnected) charts: {2x0}, {2y0}, and {2z0}, which we can see visually here (and we also drop the unnecessary scalars):

These turn into 6 honest-to-goodness charts where we turn the disconnected condition {x0} into the pair of connected conditions {x>0} and {x<0}. Indeed it’s easy to see that the 6 connected components in the above pictures are all diffeomorphic to an open subset of R2, and we can see this algebraically by projecting onto the plane avoiding the nonzero coordinate.

On {x>0}, for example, we have an open set of the yz-plane, shown here in orange:

Algebraically, we compute this chart by noting on {x>0}, we can solve for x and (using the positive square root, since x>0) write our surface locally as

{(+1+z2y2,y,z)z2y2>1}

which is diffeomorphic in the obvious way to its projection onto the yz-plane

{(y,z)z2y2>1}

so this is one of our charts!

Similarly, we can look at {z>0}, solve for z and locally write our surface as

{(x,y,+x2+y21)x2+y2>1}

which is diffeomorphic to {(x,y)x2+y2>1} – another chart.

On the intersection of these charts, {x,z>0}, it’s now easy to write down our transition maps (if one is so inclined):

Here our charts are the diffeomorphisms

{(+1+z2y2,y,z)z2y2>1, z>0}{(y,z)z2y2>1, z>0} {(x,y,+x2+y21)x2+y2>1, x>0}{(x,y)x2+y2>1, x>0}

so it’s easy to compose them to see our transition maps between these charts are

(y,z)(+1+z2y2,y):{(y,z)z2y2>1, z>0}{(x,y)x2+y2>1, x>0} (x,y)(y,+x2+y21):{(x,y)x2+y2>1, x>0}{(y,z)z2y2>1, z>0}

As a (fun?) exercise, compute the {y>0} chart, and the other two transition maps.


For another example, let’s take a look at SL2(R), which is defined to be {(abcd)adbc=1}R4.

Then the jacobian of our defining map is d,c,b,a, and we get charts corresponding to {d0}, {c0}, {b0}, and {a0}.

In the {d0} chart, for instance, our defining equation looks like a=1+bcd, so that SL2(R) looks locally like

{(1+bcdbcd) | d0}diffeo{(b,c,d)R3d0}

In the main post you can see how my friend Shane and I used this to compute the anchor map for a certain lie algebroid.

Again, it makes a nice exercise to explicitly write out the various charts and transition maps


What about a codimension 2 example?

Let’s go back to our happy little hyperboloid, and intersect it with the surface xyz=1. That is, we want to consider the manifold

{(x,y,z) | x2+y2z2=1xyz=1}

This is the levelset of the map R3R2 sending (x,y,z)(x2+y2z2, xyz) taking value (1,1). So we compute the jacobian

(2x2y2zyzxzxy)

and our charts are all the ways this matrix can have full rank. These conditions are:

If we look at the {2x0, xz0} chart, we can ask sage to solve for x and z as functions of y:

Loading
Help | Powered by SageMath

Messages

So as in the previous hyperboloid example, we need to break this into four charts, depending on whether x and z are positive or negative.

Following the sage computation, in the {x>0,z>0} chart, we can write our curve as

(12y3yy62y4+y24y, y, 212yy3yy62y4+y24y)

which, by projecting out the y coordinate, is diffeomorphic to the open subset of R where all these square roots are defined.


Ok, thanks for reading, all! This was extremely instructive for me, and hopefully it’s helpful to some of you as well! Sometimes it’s nice to just do some computations. Talk soon!


  1. That’s right. I finally bought an ipad. This has already dramatically improved my paper-reading experience (I love you Zotero) and my remote teaching experience, and I’m so glad that the example-drawing experience is shaping up to be everything I wanted it to be as well!