Skip to main content

Explicitly Computing The Action Lie Algebroid for SL2(R)R2

20 Jun 2025

This is going to be a very classic post, where we’ll chat about a computation my friend Shane did earlier today. His research is largely about symplectic lie algebroids, and recently we’ve been trying to understand the rich connections between poisson geometry, lie algebroids, lie groupoids, and eventually maybe fukaya categories of lie groupoids (following some ideas of Pascaleff). Shane knows much more about this stuff than I do, so earlier today he helped me compute a super concrete example. We got stuck at some interesting places along the way, and I think it’ll be fun to write this up, since I haven’t seen these kinds of examples written down in many places.

Let’s get started!


First, let’s recall what an action groupoid is. This is one of the main examples I have in my head for lie groupoids, which is why Shane and I started here.

If G is a group acting on a set X, then we get a groupoid:

G×XX

here we think of X as the set of objects and G×X as the set of arrows, where

  • the source of (g,x) is just x
  • the target of (g,x) is gx, using the action of G on X
  • the identity arrow at x is (1,x)
  • if (g,x):xy and (h,y):yz, then the composite is (hg,x):xz
  • if (g,x):xy then its inverse is (g1,y):yx.

Action groupoids are interesting and important because they allow us to work with “stacky” nonhausdorff quotient spaces like orbifolds in a very fluent way. See, for instance, Moerdijk’s Orbifolds as Groupoids: An Introduction, which shows how you can easily define covering spaces, vector bundles, principal bundles, etc. on orbifolds using the framework of groupoids.

The point is that a groupoid EX is a “proof relevant equivalence relation” in the sense that E keeps track of all the “proofs” or “witnesses” that two points in X are identified, rather than just the statement that two points are identified. Indeed, we think of eE as a witness identifying s(e) and t(e) in X. Then reflexivity comes from the identity arrow, symmetry comes from the inverse, and transitivty comes from composition. The “proof relevance” is just the statement that there might be multiple elements e1 and e2 which both identify x and y (that is, s(e1)=s(e2)=x and t(e1)=t(e2)=y). By keeping track of this extra information that “x and y are related in multiple ways” we’re able to work with a smooth object (in the sense that both E and X are smooth) instead of the nonsmooth, or even nonhausdorff quotient X/E.

Next, we know that a central part of the study of any lie group G is its lie algebra g. This is a “linearization” of G in the literal sense that it’s a vector space instead of a manifold, which makes it much easier to study. But through the lie bracket [,] it remembers enough of the structure of G to make it an indispensable tool for understanding G. See, for instance, Bump’s excellent book Lie Groups or Stillwell’s excellent Naive Lie Theory. With this in mind, just playing linguistic games we might ask if there’s a similarly central notion of “lie algebroid” attached to any “lie groupoid”. The answer turns out to be yes, but unlike the classical case, not every lie algebroid comes from a lie groupoid! We say that not every lie algebroid is integrable.

This, finally, brings us to the computation that Shane and I did together:

As explicitly as possible, let’s compute the lie algebroid coming from the action groupoid of SL2(R)R2.

Let’s start with a few definitions coming from Crainic, Fernandes, and Mărcuț’s Lectures on Poisson Geometry.

A Lie Algebroid on a manifold M is a vector bundle AM whose space of global sections Γ(A) has a lie bracket [,]A, equipped with an anchor map ρ:ATM to the tangent bundle of M that’s compatible with the lie bracket in the sense that for α,βΓ(A) and fC(M) we have

[α,fβ]A=f[α,β]A+(ρ(α)f)β

Then, given a lie groupoid EM with source and target maps s,t:EM and identity map r:ME, its lie algebroid is explicitly given by letting

If this doesn’t make perfect sense, that’s totally fine! It didn’t make sense to me either, which is why I wanted to work through an example slowly with Shane. For us the action groupoid is

SL2(R)×R2R2

where

s(M,v)=Mv t(M,v)=v r(v)=(Id,v) (M2,M1v)(M1,v)=(M2M1,v)


First let’s make sense of A=rKer(dt).

We know that dt:T(SL2(R)×R2)TR2, that is, dt:TSL2(R)×TR2R2, and is the derivative of the map t:(M,v)v. If we perturb a particular point (M0,v0) to first order, say (M0+δM,v0+δv), then projecting gives v0+δv, which gives δv to first order. So the kernel of this map are all the pairs (δM,δv) with δv=0, and we learn

Ker(dt)=TSL2(R)×R2

where we’re identifying the zero section of TR2 with R2 itself.

Now to get A we’re supposed to apply r to this.

By definition, this means the fibre of rKer(dt) above the point v is supposed to be the fibre of Ker(dt) over r(v)=(id,v). But this fibre is TidSL2(R)×{v}, so that the pullback is a trivial bundle with fibre sl2(R):

A=sl2(R)×R2

viewed as a trivial fibre bundle over R2. (Recall that the lie algebra sl2(R) is defined to be the tangent space of SL2(R) at the identity).


Next we want to compute the bracket [,]A. Thankfully this is easy, since it’s the restriction of the bracket on TSL2(R)×TR2. Of course, an element of A comes from TidSL2(R)=sl2(R) and the zero section of TR2, so we get the usual lie bracket on sl2(R) in the first component and the restriction of the bracket on TR2 to {0} in the second slot. This zero section piece isn’t doing anything interesting, and so after identifying this bundle with the trivial bundle sl2(R)×R2 we see the bracket is just the usual bracket on sl2(R) taken fibrewise.


Lastly, we want to compute the anchor map. This caused me and Shane a bit of trouble, since we need to compute ds at the identity, and we realized neither of us knew a general approach for computing a chart for SL2(R) near id!

In hindsight for a k dimensional submanifold of Rn the idea is obvious: Just project onto some well-chosen k-subset of the usual coordinate directions! I especially wish it were easier to find some examples of this by googling, so I’m breaking it off into a sister blog post which will hopefully show up earlier in search results than this one will.

The punchline for us was that SL2(R) is defined to be

{(abcd)R4 | adbc=1}

So a chart near a point (a0,b0,c0,d0) can be computed by looking at the jacobian of f:R4R with f(a,b,c,d)=adbc evaluated at the matrix of interest (a0,b0,c0,d0). Since 1 is a regular value for f, the jacobian will have at least one nonzero entry, and by locally inverting that coordinate we’ll get our desired chart!

Since we want a chart near the identity, we compute the jacobian of adbc at the identity to be

Jf|(1001)=d,c,b,a|(1001)=1,0,0,1

We see that fa0, so that locally near (1001) the manifold looks like

{(abc1+bca)}diffeo{(a,b,c)a0}R3

and this is our desired local chart!


Now… Why were we doing this? We wanted to compute the anchor map from A=rKer(dt) to the tangent bundle TR2. This is supposed to be ds (restricted to this subbundle).

So how can we compute this? In the main body, I’ll make some identifications that make the presentation cleaner, and still show what’s going on. If you want a very very explicit version of this computation, take a look at this footnote1.

Well s:SL2(R)×R2R2 is the map sending (M,v)Mv.

Explicitly, if we fix an (x,y), this is the map

(abcd)(ax+by,cx+dy)

From the previous discussion, we can write this as a map in local charts {(a,b,c)R3a0}R2 given by

s:(a,b,c)(ax+by,cx+1+bcay)

and now it’s very easy to compute ds. It’s just the jacobian

(xy0(1+bc)a2ycayx+bay)

but we only care about the value at the identity, since A comes from pulling back this bundle along r:v(id,v). So evaluating at (a,b,c)=(1,0,0) we find our anchor map is

(xy0y0x)

Moreover, by differentiating (abc1+bca) in the a, b, and c directions and evaluating at (1,0,0) we see that the basis (a,b,c) for the tangent space to (1,0,0) in our chart gets carried to the following basis for the tangent space at the identity matrix in SL2(R):

a(1001)b(0100)c(0010)

which we recognize as H, E, and F respectively.


But this is great! Now we know that the lie algebroid of the action groupoid of SL2(R)R2 is given by the trivial bundle sl2(R)×R2R2 with the usual bracket on sl2 taken fibrewise, and the anchor map ρ:sl2×R2TR2 sending (in the fibre over (x,y))

(which is the standard representation of sl2(R) on R2, viewed in a kind of bundle-y way.)


Thanks for hanging out, all! It was fun to go back to my roots and write a post that’s “just” a computation. This felt tricky while Shane and I were doing it together, but writing it up now it’s starting to feel a lot simpler. There’s still some details I don’t totally understand, which I think will be cleared up by just doing more computations like this, haha.

Also, sorry for not spending a lot of time motivating lie algebroids or actually doing something with the result of this computation… I actually don’t totally know what we can do with lie algebroids either! This was just a fun computation I did with a friend, trusting that he has good reasons to care. I’ve been meaning to pester him into guest-writing a blog post (or very confidently holding my hand while I write the blog post) about lie algebroids and why you should care. As I understand it, they give you tools for studying PDEs on manifolds which have certain mild singularities. This is super interesting, and obviously useful, and so I’d love to spend the time to better understand what’s going on.

Stay safe, and if you’re anywhere like Riverside try to stay cool!


  1. If you want to be super duper explicit, our function s sends SL2(R)×R2R2, which in a chart around the identity looks like the function

    {(a,b,c)R3a0}×R2R2

    given by

    (a,b,c,x,y)(ax+by,cx+1+bcay)

    now we differentiate to get ds:TSL2(R)×TR2TR2 sending (a,b,c,δa,δb,δc,x,y,δx,δy) to (ax+by,cx+1+bcay,?,?)

    Where the two ?s are the output of matrix multiplication against the jacobian of s:

    (xy0ab(1+bc)a2ycayx+bayc1+bca)(δaδbδcδxδy)

    Then we’re supposed to restrict this to Ker(dt), which are the points (a,b,c,δa,δb,δc,x,y,0,0). Since δx=δy=0, we don’t even bother writing those entries of the matrix, and that’s how we get ds as written in the main body.

    Now, as in the main body, we pull this bundle back along r:v(id,v), which in our chart is (x,y)(1,0,0,x,y) so that our bundle A (with its structure map to R2) is

    A={(1,0,0,δa,δb,δc,x,y,0,0)}{(x,y)}=R2

    which, in the main text, we identify with sl2×R2={(δa,δb,δc,x,y)}{(x,y)}=R2

    so we learn that our anchor map ds is the restriction of the above map ds to this pulled back subbundle, and sends

    (δa,δb,δc,x,y)(x,y,?,?)

    where, again the ?s are the result of the matrix multiplication

    (xy0y0x)(δaδbδc)

    which brings us back to the result of the main body.

    Of course, most working differential geometers wouldn’t write out this much detail to do this computation! I think it might be helpful to some newcomers to the field, and I certainly found it clarifying to write down exactly what happened, even if Shane and I weren’t nearly this careful when we were doing this together at a whiteboard.