<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Chris Grossack&apos;s Blog</title>
    <description></description>
    <link>https://grossack.site</link>
    <atom:link href="https://grossack.site/feed.xml" rel="self" type="application/rss+xml" />
    
      
      <item>
        <title>Is a Random Perfect Group Nontrivial?</title>
        <description>&lt;p&gt;So it’s finals season, and earlier today 
some of the younger grad students were asking me for help
studying for their topology finals. One of their practice 
problems was to build a cell complex with one 0-cell,
two 1-cells, and two 2-cells which has nontrivial $\pi_1$
but trivial $H_1$.
In principle, this isn’t very hard to do – I encourage you 
to think about it for a while to see what kind of group 
you’re looking for… Then see if you can look in the 
literature for a source of such a group.&lt;/p&gt;

&lt;p&gt;Last chance to think about it yourself…&lt;/p&gt;

&lt;p&gt;Ok, the fact that we have two 1-cells means our fundamental 
group will have two generators, say $a$ and $b$. Then the two 
2-cells will give us two relations, say $R$ and $S$. Since 
we know that $H_1$ is the abelianization of $\pi_1$, this means
we’re looking for a &lt;a href=&quot;https://en.wikipedia.org/wiki/Perfect_group&quot;&gt;perfect group&lt;/a&gt; with a presentation 
by two generators and two relations.&lt;/p&gt;

&lt;p&gt;If you try to build one by hand for a while 
(and I encourage you to try!), it’s actually somewhat difficult
to do! I ended up looking up “small presentations of perfect 
groups” (or something like this) and quickly found 
Campbell, Kawamata, Miyamoto, Robertson, and Williams’s
&lt;a href=&quot;https://doi.org/10.1017/S0308210500014013&quot;&gt;&lt;em&gt;Deficiency Zero Presentations for Certain Perfect Groups&lt;/em&gt;&lt;/a&gt;
which is full of examples&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. I also posted about this on 
&lt;a href=&quot;https://sunny.garden/@hallasurvivor/116248388252955510&quot;&gt;mastodon&lt;/a&gt;, and Omar Antolín had a characteristically helpful
response! He mentioned that the &lt;a href=&quot;https://en.wikipedia.org/wiki/Binary_icosahedral_group&quot;&gt;binary icosahedral group&lt;/a&gt;
gets the job done&lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;, and these relations are the kind of thing you 
have a chance of finding by hand!&lt;/p&gt;

&lt;p&gt;This brings up an interesting question, though – In some sense 
you would expect that two “random” relations should get the 
job done… Obviously things can’t be &lt;em&gt;completely&lt;/em&gt; random, since 
we need the abelianized relations to be a matrix with determinant
$\pm 1$ – otherwise our $H_1$ will have torsion… But what if 
we condition on this property. Does a “random” pair of relations 
work?&lt;/p&gt;

&lt;p&gt;It’s been a minute since I’ve written a &lt;em&gt;genuinely&lt;/em&gt; short blog post,
and I was curious enough to write up some sage code &lt;em&gt;anyways&lt;/em&gt;&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;, so 
I thought it could be fun to do it together!&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;As a quick exercise: What do I mean when I say that 
“we need the abelianized relations to be a matrix with determinant
$\pm 1$ – otherwise our $H_1$ will have torsion”?&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Ok, so here’s the plan:&lt;/p&gt;

&lt;p&gt;We’ll take as input a number $N$. Then we’ll iterate through 
all pairs of relations $R,S$ which are words in the 
alphabet \(\{a, a^{-1}, b, b^{-1} \}\) of length $N$
then we’ll see what fraction of those with vanishing $H_1$ 
also have &lt;em&gt;nonvanishing&lt;/em&gt; $\pi_1$. If our conjecture is right 
then this fraction should get closer to $1$ as $N$ gets bigger.&lt;/p&gt;

&lt;p&gt;Let’s do it!&lt;/p&gt;

&lt;div class=&quot;no_out&quot;&gt;
&lt;script type=&quot;text/x-sage&quot;&gt;
&quot;&quot;&quot;
Check whether a &quot;random&quot; pair of relations whose 
abelianization vanishes is expected to be trivial 
or not
&quot;&quot;&quot;


# Free group of rank 2, plus an interface for 
# working with it. We think of A and B as 
# a^{-1} and b^{-1} as usual
F.&lt;a,b&gt; = FreeGroup()
W = FiniteWords(&apos;abAB&apos;)

def letterToGroup(c):
    if c == &apos;a&apos;: return a
    if c == &apos;b&apos;: return b
    if c == &apos;A&apos;: return a^(-1)
    if c == &apos;B&apos;: return b^(-1)

def wordToReln(w):
    return prod([letterToGroup(c) for c in w])




# Bail on the computation if it takes longer than 30 seconds
@fork(timeout=30, verbose=1)
def isTrivial(G):
    return G.cardinality() == 1


@parallel(reseed_rng=True, ncpus=8)
def testOneWord(wordLength):
    &quot;&quot;&quot;
    Keep building random words of length @wordLength 
    until we get one that kills H_1. Return 0 if the word
    kills pi_1, and 1 if the word does not kill pi_1.
    Eventually we&apos;ll add these together over all our trials
    to get a total nontrivial count.
    &quot;&quot;&quot;
    while(True):
        R = W.random_element(length=wordLength)
        S = W.random_element(length=wordLength)
        
        # Check if the abelianization is trivial by checking 
        # if the determinant of (R^ab | S^ab) is +/- 1
        det = (R.count(&apos;a&apos;) - R.count(&apos;A&apos;)) * (S.count(&apos;b&apos;) - S.count(&apos;B&apos;)) - \
                (R.count(&apos;b&apos;) - R.count(&apos;B&apos;)) * (S.count(&apos;a&apos;) - S.count(&apos;A&apos;)) 

        if abs(det) != 1: 
            continue
        else:
            G = F / [wordToReln(R), wordToReln(S)]
            
            isTriv = isTrivial(G)
            if isTriv == &apos;NO DATA (timed out)&apos;:
                continue
            elif isTriv:
                if random() &lt; 0.001:
                    print(&quot;&quot;)
                    print(G)
                    print(&quot;&quot;)
                return 0
            elif not isTriv:
                if random() &lt; 0.001:
                    print(&quot;&quot;)
                    print(G)
                    print(&quot;&quot;)
                return 1


def test(wordLength, numTrials=10000):
    &quot;&quot;&quot;
    Try @numTrials many perfect groups with two relations
    of length @wordLength and see what fraction of them 
    are nontrivial
    &quot;&quot;&quot;

    # run numTrials many instances of testOneWord(wordLength) in parallel
    # filter out the nonintegers that very rarely show up because of GAP crashing
    out = [o for (_,o) in testOneWord([wordLength]*numTrials) if o == 0 or o == 1]
    numNontrivial = sum(out)

    print(&quot; &quot;)
    print(numNontrivial, &quot;/&quot;, len(out))
    return (numNontrivial / len(out)).n()


def mkData(N=9, numTrials=10000):
    data = []
    for n in range(N):
        print(&quot; &quot;)
        print(n+1, &quot;/&quot;, N)
        print(&quot; &quot;)
        # experimentally it looks like the even case is impossible?
        # that&apos;s worth looking into at some point, but not tonight, haha
        data += [(2*n+1, test(2*n+1, numTrials))]
    print(&quot;----------------------------------------&quot;)
    print(data)
    return data

mkData()
&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;This basically does exactly what you expect, haha. The main things to 
take note of are the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@fork&lt;/code&gt; decorator when checking if a group is trivial.
Since this is undecidable in general we bail on the computation if it 
lasts longer than thirty seconds… This creates some serious overhead on 
each loop, which is basically the same overhead involved in parallelising…
So we might as well parallelise! This is what the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@parallel&lt;/code&gt; decorator does.
My laptop only has a measly 8 cores, so that’s how many I tell it to use. 
The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;reseed_rng&lt;/code&gt; flag is to make sure each process gets its own RNG, otherwise
our 10,000 “random” runs will all be the same!&lt;/p&gt;

&lt;p&gt;So what does the final scatter plot look like?&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/random-homology/scatter_plot.png&quot; width=&quot;75%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;The trend is definitely upwards, which makes sense. Interestingly the 
code only starts seeing examples once the relations have length $7$.
The smallest example I’m aware of is the &lt;a href=&quot;https://en.wikipedia.org/wiki/Binary_icosahedral_group&quot;&gt;binary icosahedral group&lt;/a&gt; 
that Omar told me about, which happens to have two relations of 
length $7$!&lt;/p&gt;

&lt;p&gt;Even with relations of length $17$, though, only a tiny $0.4\%$ of 
the samples with trivial $H_1$ had an interesting $\pi_1$… I still 
think that this ratio should approach $1$ as the size of the relations 
gets large? But I was really hoping this data would be more suggestive,
haha.
That said, there’s a lot of problems with the data!&lt;/p&gt;

&lt;p&gt;My laptop starts to struggle after $N=8$, which corresponds to 
relations of length $17$. I’ve uploaded the &lt;a href=&quot;/assets/docs/random-homology/out.txt&quot;&gt;raw output&lt;/a&gt; 
if you’re interested in looking at it, but the main thing to note is 
how often we bail on computations. This is almost certainly throwing off our 
statistics, but I don’t really know how. After all, we’re now conditioning on 
both “trivial $H_1$” &lt;em&gt;and&lt;/em&gt; “can be checked to be (non)trivial in at most 30 
seconds on my ten year old laptop”. Here’s a table:&lt;/p&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse;&quot;&gt;
    &lt;thead&gt;
        &lt;tr&gt;
            &lt;th style=&quot;border: 1px solid black; padding: 8px; text-align: center; background-color: #f2f2f2;&quot;&gt;Relation Length&lt;/th&gt;
            &lt;th style=&quot;border: 1px solid black; padding: 8px; text-align: center; background-color: #f2f2f2;&quot;&gt;Nontrivial $\pi_1$&lt;/th&gt;
            &lt;th style=&quot;border: 1px solid black; padding: 8px; text-align: center; background-color: #f2f2f2;&quot;&gt;Total Runs&lt;/th&gt;
            &lt;th style=&quot;border: 1px solid black; padding: 8px; text-align: center; background-color: #f2f2f2;&quot;&gt;Killed Computations&lt;/th&gt;
        &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;1&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;0&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;10000&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;0&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;3&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;0&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;10000&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;0&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;5&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;0&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;10000&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;0&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;7&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;8&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;10000&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;0&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;9&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;10&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;10000&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;2&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;11&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;18&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;10000&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;19&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;13&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;27&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;10000&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;183&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;15&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;34&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;9998&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;664&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;17&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;47&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;9995&lt;/td&gt;
            &lt;td style=&quot;border: 1px solid black; padding: 8px; text-align: center;&quot;&gt;1726&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;So at this point the possible error we’re incurring by killing computations that take 
longer than $30$ seconds is dwarfing the number of groups we’re able to quickly prove 
are (non)trivial. Plus when we kill computations there seems to be a small chance that 
GAP throws some kind of exception that I’m not sure how to handle… This is the reason 
some later runs have slightly fewer than $10,000$ trials.
I thought about increasing the timeout to 
a minute, or even five minutes, and running it again overnight to see if we can push 
things a bit further? But I decided I don’t really care, haha. I’m supposed to be writing 
a thesis, after all.&lt;/p&gt;

&lt;p&gt;Further optimizing this would make a great project for somebody else to try, though! 
I think that it should be &lt;em&gt;quite&lt;/em&gt; easy to get better data, and a lot of it!
If you decide to look into this, definitely reach out and let me know what you find ^_^.
In that vein, here’s a few take-home problems that you might want to play around with.
They all look fun (at least to me) and if I had the time to spend I would probably 
think about them for a few weeks.&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;Can you further optimize this code to get more data? 
There’s a few obvious things to try:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;writing in pure GAP, rather than a python package&lt;/li&gt;
    &lt;li&gt;somehow checking triviality without computing the cardinality
  of a nontrivial group&lt;/li&gt;
    &lt;li&gt;have a better computer than me, with lots of cores for parallel computation&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;You might have noticed that all our trials were on &lt;em&gt;odd&lt;/em&gt; relation 
lengths… Experimentally it looks like even relation lengths never
give perfect groups!&lt;/p&gt;

  &lt;p&gt;It’s pretty easy to prove that this really is the case. I’ll 
include a quick proof in a spoiler tag, but you might want to 
play around with it yourself for a minute.&lt;/p&gt;
&lt;/div&gt;

&lt;details&gt;
    &lt;summary&gt;solution&lt;/summary&gt;
    We know there&apos;s $2n$ many letters in each of the relations 
    $R$ and $S$, coming from the alphabet $\{a,A,b,B\}$. 
    We&apos;ll write $R_a$ for the number of times $a$ shows up in $R$,
    and similarly for $S_B$, etc. Then working mod $2$ we have 

    $$R_a + R_A + R_b + R_B = 2n \equiv_2 0$$

    so that (remembering that $+$ and $-$ are the same mod $2$)

    $$R_a - R_A \equiv_2 R_b - R_B$$

    Recall that the abelianization of $G = \langle a,b \mid R, S \rangle$
    vanishes if and only if the following matrix has determinant $\pm 1$:

    $$
    \begin{pmatrix}
    R_a - R_A &amp;amp; S_a - S_A \\
    R_b - R_B &amp;amp; S_b - S_B
    \end{pmatrix}
    $$

    but working mod $2$ again and using the above observation 
    say that $R_a - R_A \equiv_2 x \equiv_2 R_b - R_B$ and 
    $S_a - S_A \equiv_2 y \equiv_2 S_b - S_B$. Then the mod-2 determinant 
    of the above matrix is $xy - xy = 0$ so that this matrix can never 
    have determinant $\pm 1$!
&lt;/details&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;For a harder problem, which I &lt;em&gt;don’t&lt;/em&gt; know how to solve, you might 
ask if the fraction of presentations with nontrivial $\pi_1$ 
approaches $1$ at all! Or even better, you might ask what the 
asymptotic behavior is as the number of relations gets large!&lt;/p&gt;

  &lt;p&gt;I asked about this on &lt;a href=&quot;https://mathoverflow.net/questions/509329/is-a-random-2-generator-2-relation-perfect-group-nontrivial&quot;&gt;mathoverflow&lt;/a&gt; today, and I’m very 
excited to see what people have to say! I really don’t know 
much combinatorial group theory, so no matter what the 
conversation turns into I’m quite likely to learn something.&lt;/p&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;Alright! This is my first &lt;em&gt;really&lt;/em&gt; short blog post in… quite a while, 
haha. I wrote the code pretty quickly, and once I figured out how 
to get the long computation to time out properly (and let it run all 
evening yesterday) the rest of the post came together in like two hours. 
I love problems like this, so it was easy to get &lt;a href=&quot;https://xkcd.com/356/&quot;&gt;nerdsniped&lt;/a&gt; by it.&lt;/p&gt;

&lt;p&gt;Now it’s back to checking some details for my thesis. Next week is spring
break, so I’m hoping to really sit down and get a lot done before teaching
starts back up.&lt;/p&gt;

&lt;p&gt;OH! And that reminds me! I mentioned this in a &lt;em&gt;draft&lt;/em&gt; for a blog post 
on representation theory in analysis, but I haven’t mentioned it anywhere 
that’s live yet, so I should say it here! I got a postdoc!! 🎉🎉&lt;/p&gt;

&lt;p&gt;This Fall I’ll be going to Montana State University to work with 
Sam Gunningham, David Ayala, and probably Ryan Grady too. I’ll be thinking
about all sorts of fun things like factorization homology, “quantum” 
geometric langlands, topological field theories, and more! Everyone at the 
MSU campus has been &lt;em&gt;so&lt;/em&gt; nice to me, and even though I’m an island girlie
through and through I’m oddly excited to experience &lt;em&gt;real&lt;/em&gt; winter for the first 
time in my life, haha. I’m tearing up a little bit writing this because 
I’m so happy to get to go there and work with them.&lt;/p&gt;

&lt;p&gt;Alright, thanks for reading everyone! It’s back to the dissertation grind 
now, but this was really fun to think about for a day or two.&lt;/p&gt;

&lt;p&gt;Stay safe, and we’ll talk soon 💖&lt;/p&gt;

&lt;hr /&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot;&gt;

      &lt;p&gt;As an aside, this search also pulled up 
Bray, Conder, Leedham-Green, and O’Brien’s 
&lt;a href=&quot;https://doi.org/10.1090/S0002-9947-2011-05231-1&quot;&gt;&lt;em&gt;Short presentations for alternating and symmetric groups&lt;/em&gt;&lt;/a&gt;
which shows how to get presentations for alternating 
and symmetric groups with 2 generators and $\mathsf{PolyLog(n)}$
many relations (at least that’s my understanding – I haven’t 
read this paper closely at all).&lt;/p&gt;

      &lt;p&gt;This &lt;em&gt;really&lt;/em&gt; scratches some kind of asymptotic computer science
itch in my brain! &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot;&gt;

      &lt;p&gt;He also mentioned he knows about this group because it’s the 
fundamental group of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Homology_sphere&quot;&gt;Poincaré homology sphere&lt;/a&gt;! This 
makes it especially reasonable that he might have thought of 
it, since the original context for this problem is about a 
cell complex with $\pi_1$ but no $H_1$, and that’s exactly 
(one of) the defining properties of the homology sphere! &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot;&gt;

      &lt;p&gt;Checking if a presentation gives the trivial group is 
famously impossible, but since we’re restricting ourselves to 
two generators and two relations I’m hopeful that sage can 
handle these cases for us! &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate>
        <link>https://grossack.site/2026/03/20/random-homology.html</link>
        <guid isPermaLink="true">https://grossack.site/2026/03/20/random-homology.html</guid>
      </item>
      
    
      
      <item>
        <title>Talk -- Factorization Homology and Quantum Character Stacks</title>
        <description>&lt;p&gt;&lt;del&gt;Today&lt;/del&gt; Yesterday in the Representation Theory Seminar at UCR I gave a talk about 
Factorization Homology and how it lets us compute a “Quantum Character Stack”.
This is all based on a great paper,
&lt;a href=&quot;https://www.doi.org/10.1112/topo.12072&quot;&gt;&lt;em&gt;Integrating Quantum Groups Over Surfaces&lt;/em&gt;&lt;/a&gt; by Ben-Zvi, Brochier, and 
Jordan, which I’ve been reading and rereading for the last few years.
It’s been a while since I’ve written up my thoughts after a talk, so I figured
I’d do that here to take a break from thesis writing.&lt;/p&gt;

&lt;p&gt;I have an &lt;a href=&quot;/2024/03/27/ams-sectional-talk-fh&quot;&gt;old post&lt;/a&gt; going through a talk I gave on factorization homology 
almost exactly 2 years ago back in March 2024, which might give a longer 
perspective on these ideas. I’m going to be fairly terse here because I want 
to get to the fun computation (which I’ll put in a &lt;a href=&quot;/2026/02/20/computing-quantum-character-stacks&quot;&gt;sister post&lt;/a&gt;), 
and I also want to write this in just a few hours.&lt;/p&gt;

&lt;p&gt;The talk was kind of a whirlwild, haha. Especially for my audience, I needed 
to explain some basics about stacks and the rough idea of factorization 
homology before I could even &lt;em&gt;hope&lt;/em&gt; to get to the actual definition of the 
quantum character stack! That’s a big ask for an hour long talk, but I think 
I did alright. I asked my friend &lt;a href=&quot;https://sites.google.com/view/shane-rankin&quot;&gt;Shane&lt;/a&gt; how he thought it went, and he 
very graciously said that I did a good job telling a story and showing that
some could, in the abstract, compute things like this… but I didn’t actually
show the audience how &lt;em&gt;they&lt;/em&gt; can compute with it. I think that’s a fair 
review, and is pretty consistent with my experience writing and giving the 
talk. Every professor that I talked to said that it was really good, though, 
which made me happy. Thankfully that’s also pretty consistent with my experience
giving the talk, haha.&lt;/p&gt;

&lt;p&gt;I’ve given other &lt;em&gt;really&lt;/em&gt; dense talks before, and I remember coming off a 
bit… energetic, lol. I was pleased that I think I managed to fit a lot of 
material into this talk while still appearing somewhat collected at the 
white board. If nothing else, I didn’t end the talk out of breath, haha.&lt;/p&gt;

&lt;p&gt;Anyways, enough about my thoughts, let’s get to the talk itself!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;The beginning of the talk was meant to motivate stacks to the audience – 
particularly some younger grad students who have asked me about them before. 
I actually have a looooong post about stacks in the works, 
where I talk about how to think of them, how to 
compute with them, and why you might care. I’ve had to put it on the back burner
while I work on my thesis, but hopefully some day I’ll finish it up, since I 
have a lot of Thoughts™.&lt;/p&gt;

&lt;p&gt;Given a surface $\Sigma$ and a reductive group $G$, we would like to have a 
space whose points are representations of $\pi_1 \Sigma$ valued in $G$. To 
do this we can look at $\text{Hom}(\pi_1 \Sigma, G)$ and then quotient out by 
“change of basis” given by conjugation in $G$. This has the extra benefit of 
removing the reliance of $\pi_1 \Sigma$ on a choice of base point, since 
a change of base point leads to a conjugate representation.&lt;/p&gt;

&lt;p&gt;There are a few things you could mean by the quotient 
$\text{Hom}(\pi_1 \Sigma, G) \big / G$. The first and most naive is to 
literally take the space and quotient out by the orbit equivalence relation.
This gives a space that isn’t even Hausdorff (and it makes a nice exercise to 
see why!) so this isn’t great. The more subtle approaches are 
both based on the observation that 
a function on $X \big / G$ should be the same thing as a $G$-equivariant 
function on $X$. If you haven’t seen this before it’s worth taking a second 
to think about why this should be true!&lt;/p&gt;

&lt;p&gt;If you’re a 20th century algebraic geometer you would define the 
&lt;span class=&quot;defn&quot;&gt;Character Variety&lt;/span&gt; $\text{Ch}(\Sigma,G)$ as 
\(\text{Spec} \big (\mathcal{O}(\text{Hom}(\pi_1 \Sigma, G))^G \big )\).
This literally means “the space whose ring of functions is $G$-equivariant 
functions on $\text{Hom}(\pi_1 \Sigma,G)$”.&lt;/p&gt;

&lt;p&gt;If you’re a 21st century geometer, you’re likely to de-emphasize 
$\mathbb{C}$-valued functions on $X$ (like $\mathcal{O}(X)$) for 
$\mathsf{Vect}_\mathbb{C}$-valued functions. These assign a vector space 
to every point in a way that “varies smoothly”, and the way to make this 
precise is via sheaves! So you find yourself interested in something like 
$\text{QCoh}(X)$. In this case, you might want to define the 
&lt;span class=&quot;defn&quot;&gt;Character Stack&lt;/span&gt; $\underline{\text{Ch}}(\Sigma,G)$ 
to be “the space whose category of quasicoherent sheaves is $G$-equivariant 
sheaves on $\text{Hom}(\pi_1 \Sigma, G)$”.&lt;/p&gt;

&lt;p&gt;It turns out that these two spaces are generally not the same! Let’s look 
at the simplest case where $\Sigma$ is just a disk. Then $\pi_1 \Sigma$ 
is the trivial group, so $\text{Hom}(\pi_1 \Sigma, G)$ is a point, with 
ring of functions given by $\mathbb{C}$. Then the $G$-action on this space 
(and this on the ring of functions) is trivial, so that the $G$-equivariant 
functions are still $\mathbb{C}$ and $\text{Ch}(\text{Disk},G) = \star$ 
is a point. In particular, its category of quasicoherent sheaves is just 
$\mathsf{Vect}$.&lt;/p&gt;

&lt;p&gt;But what about the character &lt;em&gt;stack&lt;/em&gt; $\underline{\text{Ch}}(\text{Disk},G)$?
Well now we define its category of quasicoherent sheaves to be $G$-equivariant
sheaves on $\text{Hom}(\pi_1 \Sigma, G) = \star$. So this is $\mathsf{Vect}^G$,
which is &lt;em&gt;not&lt;/em&gt; $\mathsf{Vect}$! Indeed, when we say that a vector space is 
$G$-equivariant, what do we mean? We mean that $g \cdot V$ should be 
“the same as $V$” for every $g \in G$, but the notion of sameness for vector 
spaces is isomorphism! So saying that $g \cdot V$ is “the same as $V$” is 
saying we have isomorphisms $\varphi_g : g \cdot V \cong V$. Of course, 
$G$ is still acting trivially on $\text{Hom}(\pi_1 \Sigma, G) = \star$, so 
$g \cdot V = V$ and so $\varphi_g$ is an isomorphism of $V$ with itself! 
These isomorphisms are supposed to be compatible, so we find that 
$\mathsf{Vect}^G$, the category of $G$-equivariant vector spaces, is 
actually the category $\text{Rep}(G)$ of vector spaces equipped with a 
$G$-action! The space whose category of sheaves in $\text{Rep}(G)$ is 
usually called $\mathsf{B}G$, and we’ll do this too&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;The character stack is better behaved in certain ways. It’s smooth 
(in a stacky sense) while the character variety usually isn’t&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;
(this is why it’s common to restrict to a “smooth locus” containing 
most representations). Moreover, the character stack for $\Sigma$ can be 
computed by gluing together the character stacks on an open cover for 
$\Sigma$, while the character variety has no such nice local-to-global 
property. The character variety also relies crucially on $G$ being 
reductive, while the character &lt;em&gt;stack&lt;/em&gt; works for all groups $G$.&lt;/p&gt;

&lt;p&gt;It’s a famous result of Goldman that the smooth locus of the character 
variety admits a symplectic structure, which quantizes to the ($G$-)skein 
algebra for $\Sigma$! It turns out the character stack also admits a 
symplectic structure (in a stacky sense) and it’s natural to want to 
quantize this too. It should have something to do with skein theory… 
But what?&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Let’s change topic for a moment and talk about 
&lt;span class=&quot;defn&quot;&gt;Factorization Homology&lt;/span&gt;. Again, we’ll be much more 
terse here than we probably should be.&lt;/p&gt;

&lt;p&gt;The notion of an $E_n$-algebra in a monoidal $k$-category $\mathcal{C}$ 
interpolates between noncommutative algebras ($E_1$) and commutative algebras 
($E_\infty$). When $n \gt k$ these stabilize so that $E_{k+1}$ algebras are 
already “fully commutative”. Since we spend a lot of time working in 
$1$-categories (like $\mathsf{Set}$ and $\mathsf{Vect}$) we only really see 
the distinction between $E_1$ (noncommutative algebras) and $E_2 = E_\infty$
(commutative algebras).&lt;/p&gt;

&lt;p&gt;However, if we work in a familiar $2$-category like $\mathsf{Cat}$ then 
we can see a bit further! Now an $E_1$-algebra is a monoidal category, 
an $E_2$-algebra is a &lt;em&gt;braided&lt;/em&gt; monoidal category, and an 
$E_3 = E_\infty$-algebra is a &lt;em&gt;symmetric&lt;/em&gt; monoidal category.&lt;/p&gt;

&lt;p&gt;At this point in the talk I said some words introducing braided monoidal 
categories and why they might be called that, but it’s starting to get late so 
I think I won’t say those words now. You can read all about this somewhere 
like &lt;a href=&quot;https://ncatlab.org/nlab/show/braided+monoidal+category&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Precisely, let $\mathsf{Disk}^n$ be the ($\infty$-)category whose objects 
are disjoint unions of $n$-disks and whose morphisms are (spaces of) 
smooth embeddings. Then a functor from $\mathsf{Disk}^n \to \mathcal{C}$ 
which sends disjoint union to the tensor product in $\mathcal{C}$ is 
&lt;em&gt;exactly&lt;/em&gt; an $E_n$-algebra in $\mathcal{C}$!&lt;/p&gt;

&lt;p&gt;Since $\text{Disk}^n$ is a full subcategory of the category of &lt;em&gt;all&lt;/em&gt; 
$n$-manifolds with smooth embeddings, we can try to extend a functor
$\text{Disk}^n \to \mathcal{C}$ (read: an $E_n$-algebra $A$) to a functor 
$\text{Man}^n \to \mathcal{C}$. The free way to do this is via 
left Kan extension, and this is how we define factorization homology!&lt;/p&gt;

&lt;p&gt;The “factorization homology of $M$ with coefficients in $A$”, denoted by 
$\int_M A$, is defined to be the value of the left Kan extension 
$\text{Lan}(A)$ on $M$. This admits a “pointwise” formula to compute it, 
but it’s much much better to use excision! Like any good homology theory, 
factorization homology has a notion of Mayer-Vietoris for computation.&lt;/p&gt;

&lt;p&gt;At this point I included a computation of $\int_{S^1} A$ for an algebra 
$A$ in $\mathsf{Vect}$ and showed that it recovers the Hochschild homology 
$HH_0(A)$. Even though I was starting to run out of time, I couldn’t help 
but mention one of my favorite facts about this too! If you view $A$ as an 
algebra in chain complexes which happens to be concentrated in degree $0$ 
then $\int_{S^1} A$ instead computes a derived enhancement, which happens to be
$CHH_\bullet(A)$ – the entire complex of Hochschild chains! Since 
factorization homology is functorial and $S^1$ acts on itself, we get an 
induced $S^1$-action on $CHH_\bullet(A)$. An $S^1$-action on a chain complex 
is the data of a new differential on that complex, and it’s natural to ask 
what differential we get on Hochschild homology from this game! Well the 
HKR theorem says that $HH_\bullet(A)$ is the algebraic de Rham complex on 
$\text{Spec}(A)$ (when $A$ is commutative), and the differential coming 
from this $S^1$-action is exactly the de Rham differential!&lt;/p&gt;

&lt;p&gt;Again, I think I want to finish this post up quickly, so I won’t include a 
copy of this computation here… I feel bad about it, though, so I’ll 
say that this is done in Hiro Tanaka’s fantastic series of talks starting 
&lt;a href=&quot;https://www.youtube.com/watch?v=yeTngpqaAmk&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;At this point we’re finally ready to bring the threads together!&lt;/p&gt;

&lt;p&gt;One of the main ideas in the &lt;em&gt;Integrating Quantum Groups Over Surfaces&lt;/em&gt;
paper is that&lt;/p&gt;

\[\text{QCoh}(\underline{\text{Ch}}(\Sigma,G)) = \int_\Sigma \text{Rep}(G)\]

&lt;p&gt;The computation I’m including in the &lt;a href=&quot;/2026/02/20/computing-quantum-character-stacks&quot;&gt;sister post&lt;/a&gt; is a very explicit 
very special case of this computation where you can really get your 
hands on everything. Well… I at least sketch it, haha. You can see if you 
read that post. I originally planned to include this computation in the 
talk, but at this point I only had about 5 minutes left and I wanted to make 
sure I said something about the &lt;em&gt;quantum&lt;/em&gt; character stacks in the title of 
the talk!&lt;/p&gt;

&lt;p&gt;The point is that $\text{Rep}(G)$ is symmetric monoidal, so is an 
$E_\infty$ algebra, but we’re only integrating it over the measly $2$-manifold
$\Sigma$! So we could get by with an $E_2$-algebra, which is less commutative!
Working in $\mathsf{Cat}$ this means we want a braided monoidal category,
and my favorite example is the category $\text{Rep}_q(G)$ of 
representations of a quantum group!&lt;/p&gt;

&lt;p&gt;So now we see what to do:&lt;/p&gt;

&lt;p&gt;Generalizing the above formula, we want to say that&lt;/p&gt;

\[\text{QCoh}(\underline{\text{Ch}}_q(\Sigma,G) = \int_\Sigma \text{Rep}_q(G)\]

&lt;p&gt;But what does this really mean?&lt;/p&gt;

&lt;p&gt;Remember earlier when I said that the 21st century approach to geometry 
is to focus on the (derived) category of sheaves? Well just like 
Grothendieck said that every (commutative) ring should count as 
functions on a space, we might bravely hope that every dg-category 
should be sheaves on a space! It turns out that one can push this idea 
&lt;em&gt;very&lt;/em&gt; far, and this is one of the modern approaches to 
&lt;span class=&quot;defn&quot;&gt;Noncommutative Geometry&lt;/span&gt;. See, for example, 
Kontsevich’s fantastic article &lt;a href=&quot;https://doi.org/10.1017/9781108854429.014&quot;&gt;&lt;em&gt;Geometry in dg-Categories&lt;/em&gt;&lt;/a&gt; 
from the equally fantastic book &lt;em&gt;New Spaces in Mathematics&lt;/em&gt; – 
every chapter is a banger.&lt;/p&gt;

&lt;p&gt;This “noncommutative” perspective on geometry is what will let us make 
sense of the quantum character stack as a geometric object, even though
we really only have access to what its category of sheaves should be.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;At this point I basically had to stop the talk, but I rushed to say a few 
last minute things that I hoped would convince the audience that this is 
something that you &lt;em&gt;can&lt;/em&gt; get your hands on.&lt;/p&gt;

&lt;p&gt;Obviously I mentioned Juliet Cooke’s &lt;a href=&quot;https://julietcooke.net/CookeThesis.pdf&quot;&gt;thesis&lt;/a&gt;, where she shows that 
there’s a concrete &lt;span class=&quot;defn&quot;&gt;skein category&lt;/span&gt; defined in terms 
of tangles in the thickened $\Sigma \times I$ modulo local relations coming 
from the quantum group $G_q$. This should be compared to the classical skein 
&lt;em&gt;algebra&lt;/em&gt; which is defined in terms of links in $\Sigma \times I$ modulo 
those same local relations. It turns out that this skein category presents 
the quantum character stack in the sense that the factorization homology 
$\int_\Sigma \text{Rep}_q(G)$ is the cocompletion of the skein category.&lt;/p&gt;

&lt;p&gt;Also, the Barr-Beck yoga says that any category which looks like a category 
of algebras should be one, and indeed there’s an algebra object&lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; 
\(A_\Sigma\) in \(\text{Rep}_q(G)\) so that \(\int_\Sigma \text{Rep}_q(G)\)
is “just” a category of modules over \(A_\Sigma\) 
(internal to \(\text{Rep}_q(G)\), of course) and from a combinatorial 
presentation of $\Sigma$ Ben-Zvi, Brochier, and Jordan are able to compute 
explicit presentations of this internal algebra!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Alright, it’s a quick epilogue today. I would normally put the 
title, abstract, and slides here, but because it was an internal seminar 
and I gave a chalk talk I actually have none of those things, haha&lt;sup id=&quot;fnref:4&quot;&gt;&lt;a href=&quot;#fn:4&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for hanging out, everyone! It feels good to write about something 
that’s not my thesis, and I’m excited to go and write the sister post 
with this computation! That will have to wait a bit, though, since now 
it’s dinner time (I succeeded in writing this post in about three hours)
and then I’m going climbing with some friends.&lt;/p&gt;

&lt;p&gt;Stay safe, and we’ll chat soon ^_^.&lt;/p&gt;

&lt;hr /&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot;&gt;

      &lt;p&gt;You might be familiar with a different notion of $\mathsf{B}G$ from 
homotopy theory. In that world you take a contractible space with a 
free $G$-action and then quotient by it to get a “classifying space”
where maps from $X$ to $\mathsf{B}G$ are principal $G$-bundles on $X$.&lt;/p&gt;

      &lt;p&gt;Up to homotopy a contractible space is a point, so this homotopy-theoretic 
$\mathsf{B}G$ is also “a point quotiented by $G$” just like our 
algebro-geometric example. Much of the same intuition goes into thinking 
about these two notions of $\mathsf{B}G$, but you have to remember that 
their implementations are different!&lt;/p&gt;

      &lt;p&gt;Since a lot of my readers are familiar with topos theory, I’ll say here 
that the category $G\text{-}\mathsf{Set}$ is a topos, and we often 
denote it by $\mathsf{B}G$ for this same reason. Indeed, the topos
$\mathsf{B}G$ thinks its category of vector spaces is $\text{Rep}(G)$
so this is secretly the algebro-geometric example again. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot;&gt;

      &lt;p&gt;It’s a fun (but possibly tricky) exercise to compute the dimension of 
the tangent space at a generic point, then at the trivial representation.
Remember that the tangent space to $\text{Ch}(\Sigma,G)$ at a 
representation $\rho : \pi_1 \Sigma \to G$ is given by the group 
cohomology&lt;/p&gt;

\[T_\rho \text{Ch}(\Sigma,G) = H^1(\pi_1 \Sigma, \mathfrak{g})\]

      &lt;p&gt;where $\mathfrak{g}$ is a $\pi_1 \Sigma$-module by composing 
$\rho$ with the adjoint action of $G$ on $\mathfrak{g}$.&lt;/p&gt;

      &lt;p&gt;For example let’s take $\Sigma$ to be a punctured torus, whose fundamental 
group is free on two generators $a$ and $b$, and let’s take $G$ to be 
$SL_2(\mathbb{C})$. Then a point in $\text{Ch}(\Sigma,G)$ is a 
representation $\rho$ up to conjugation, is a pair of matrices 
$A,B \in SL_2$ up to simultaneous conjugation (these are the images of 
$a$ and $b$ under $\rho$).&lt;/p&gt;

      &lt;p&gt;Now $\mathfrak{g} = \mathfrak{sl}_2(\mathbb{C})$ is the space of 
$2 \times 2$ trace $0$ matrices, and the adjoint action of $G$ on 
$\mathfrak{g}$ is conjugation! So $\mathfrak{sl}_2$ becomes a $F_2$-module
(read: a $\pi_1 \Sigma$-module) by $a \cdot M = A^{-1} M A$ and 
$b \cdot M = B^{-1} M B$. From here you can compute the group cohomology 
$H^1(F_2, \mathfrak{sl}_2)$ explicitly, and you’ll see that the generic 
dimension is not the dimension when $A = B = \text{Id}$. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot;&gt;

      &lt;p&gt;In fact this algebra comes as a kind of $\text{Rep}&lt;em&gt;q(G)$-valued 
endomorphism object of the quantum structure sheaf… But I didn’t 
have time to say any of that at the end of the talk. See the 
_Integrating Quantum Groups Over Surfaces&lt;/em&gt; paper for more. &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:4&quot;&gt;

      &lt;p&gt;Actually, writing this has reminded me that I never wrote a talk debrief 
for my JMM talk about Fukaya categories and my thesis work… Maybe I’ll 
write a &lt;em&gt;very&lt;/em&gt; belated post about that, especially since it &lt;em&gt;does&lt;/em&gt; have a 
title, an abstract, and slides!&lt;/p&gt;

      &lt;p&gt;We’ll see, though. I’ve been ridiculously busy lately. &lt;a href=&quot;#fnref:4&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate>
        <link>https://grossack.site/2026/02/20/talk-quantum-character-stacks.html</link>
        <guid isPermaLink="true">https://grossack.site/2026/02/20/talk-quantum-character-stacks.html</guid>
      </item>
      
    
      
      <item>
        <title>An Overly Explicit Computation with Character Stacks</title>
        <description>&lt;p&gt;In the &lt;a href=&quot;/2026/02/20/talk-quantum-character-stacks.html&quot;&gt;main post&lt;/a&gt; I go over a talk I gave &lt;del&gt;today&lt;/del&gt; yesterday explaining how 
factorization homology relates to (quantum) character stacks. In this 
post I want to do a sample computation which gives some justification that 
the main theorem from that talk (which is &lt;em&gt;not&lt;/em&gt; mine) actually does work!&lt;/p&gt;

&lt;p&gt;Recall from that blog post that we can compute the category of sheaves on 
the character stack $\underline{\text{Ch}}(\Sigma,G)$ by integrating 
$\mathsf{B}G$ over $\Sigma$ in the sense of factorization homology:&lt;/p&gt;

\[\text{QCoh}(\underline{\text{Ch}}(\Sigma,G)) \simeq \int_\Sigma \text{Rep}(G)\]

&lt;p&gt;Let’s take a simple surface (like the annulus) and a simple group (like 
$GL_1 = \mathbb{C}^\times$) and just… check!&lt;/p&gt;

&lt;p&gt;There’s a lot of problems with what I’m doing here… For one, I’m not 
actually sure if I’m working $\infty$-categorically or $1$-categorically!
It’s possible that when I say $\text{QCoh}$ and $\text{Vect}$ and what not 
I really mean the &lt;em&gt;derived&lt;/em&gt; category of quasicoherent sheaves and 
&lt;em&gt;chain complexes&lt;/em&gt;, etc… that seems likely to me since I’m using a lot of 
formal gluing and duality statements, which tend to work better in the 
derived world… I really need to sit down and learn enough algebraic 
geometry to appreciate the differences between the derived and underived 
stories, but unfortunately that will have to wait for another day.&lt;/p&gt;

&lt;p&gt;Another problem is that I’m only going to naively check that the objects 
of these categories seem to agree. It’s almost certainly possible to work 
with the arrows by hand as well and check that they agree, but I don’t have 
time to do that right now.
Plus, in case we &lt;em&gt;are&lt;/em&gt; working in a derived setting, I &lt;em&gt;definitely&lt;/em&gt; don’t have 
time to check the infinitely many higher cells!&lt;/p&gt;

&lt;p&gt;So with these caveats,
I’ll follow in the footsteps of Jim Dolan and just press on doing computations 
to see if something meaningful pops out.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Let’s start with the left hand side.&lt;/p&gt;

&lt;p&gt;When $\Sigma$ is the annulus and $G$ is $\mathbb{C}^\times$ we see that&lt;/p&gt;

\[\begin{aligned}
\underline{\text{Ch}}(\Sigma,G) 
&amp;amp;\simeq \text{Hom}(\pi_1 \Sigma, G) \big / G \\
&amp;amp;\simeq \text{Hom}(\mathbb{Z}, \mathbb{C}^\times) \big / \mathbb{C}^\times \\
&amp;amp;\simeq \mathbb{C}^\times \big / \mathbb{C}^\times \\
&amp;amp;\simeq \mathbb{C}^\times \times \mathsf{B}\mathbb{C}^\times
\end{aligned}\]

&lt;p&gt;The last step is because here $\mathbb{C}^\times$ is acting on itself by 
conjugation – which is the trivial action since $\mathbb{C}^\times$ is 
abelian. We know a point with the trivial action gives rise to a 
$\mathsf{B}\mathbb{C}^\times$ and how we have $\mathbb{C}^\times$ many 
such points, so that we get a $\mathbb{C}^\times \times \mathsf{B}\mathbb{C}^\times$
in total.&lt;/p&gt;

&lt;p&gt;So now we want to compute quasicoherent sheaves on this space, but
products on the geometric side are coproducts (read: tensor products) 
on the algebraic side so we get&lt;/p&gt;

\[\begin{aligned}
\text{QCoh}(\underline{\text{Ch}}(\Sigma,G))
&amp;amp;\simeq \text{QCoh}(\mathbb{C}^\times \times \mathsf{B}\mathbb{C}^\times) \\
&amp;amp;\simeq \text{QCoh}(\mathbb{C}^\times) \otimes \text{QCoh}(\mathsf{B}\mathbb{C}^\times) \\
&amp;amp;\simeq \text{QCoh}(\mathbb{C}^\times) \otimes \text{Rep}(\mathbb{C}^\times) \\
&amp;amp;\simeq \text{Rep}(\mathbb{Z}) \otimes \bigoplus_\mathbb{Z} \mathsf{Vect}
\end{aligned}\]

&lt;p&gt;In the last step we’ve used the fact that 
$\mathbb{C}^\times = \text{Spec}(\mathbb{C}[t^\pm])$ so that its
category of sheaves is just modules over $\mathbb{C}[t^\pm]$, which we 
recognize as the group algebra of $\mathbb{Z}$. So such a module is 
exactly a vector space with an action of $\mathbb{Z}$. In fact this is 
some kind of Fourier duality, where sheaves on $\mathbb{C}^\times$ 
(some kind of circle) are interchanged with representations of $\mathbb{Z}$
(the dual group).&lt;/p&gt;

&lt;p&gt;We’ve also used the fact that 
$\text{QCoh}(\mathsf{B}G)$ is $\text{Rep}(G)$, where for us 
$G = \mathbb{C}^\times$. Moreover, by Fourier duality again, 
$\text{Rep}(\mathbb{C}^\times)$ is the same as $\text{QCoh}(\mathbb{Z})$,
but a sheaf on a discrete set like $\mathbb{Z}$ is just a choice of vector 
space above each point, so that we get the category of 
$\mathbb{Z}$-graded vector spaces.&lt;/p&gt;

&lt;p&gt;Now of course we would expect tensor products to distribute over sums, 
and we know that $\mathsf{Vect}$ is the monoidal unit, so that at the end of 
the day we’ve computed&lt;/p&gt;

\[\text{QCoh}(\underline{\text{Ch}}(\Sigma,G))
\simeq
\bigoplus_\mathbb{Z} \text{Rep}(\mathbb{Z})\]

&lt;p&gt;the category of quasicoherent sheaves on the character stack is 
the category of $\mathbb{Z}$-graded $\mathbb{Z}$-modules! Which 
almost sounds like the kind of thing one can understand and compute with!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Next, the right hand side.&lt;/p&gt;

&lt;p&gt;We compute factorization homology by excision – by cutting a surface into 
disks glued along collared embeddings and using the fact that the factorization 
homology of a disk with coefficients in $\mathcal{A}$ is just $\mathcal{A}$ 
again.&lt;/p&gt;

&lt;p&gt;So we decompose the annulus into disks glued along their collared boundary&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/computing-quantum-character-stacks/annulus-decomp.png&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;and then we can inductively compute the factorization homology by a 
Mayer-Vietoris style argument. Concretely, say you have an $E_2$-algebra 
$\mathcal{A}$ and you’re interested in computing factorization homology over 
the annulus. We want to do this in an oriented sense, and out of laziness 
I’m going to draw the annulus as though it’s a circle. Then we get&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/computing-quantum-character-stacks/hochschild-computation.png&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;where as usual I’m writing $\mathcal{A}^\text{op}$ to mean $\mathcal{A}$ with the 
reversed algebra structure: $a \cdot^\text{op} b$ is defined to be $b \cdot a$.
This makes the computation look more like the Hochschild homology computation
it is, but could possibly be confusing since we’re about to work in the case 
where $\mathcal{A} = \text{Rep}(\mathbb{C}^\times)$ is a monoidal category!
So just remember that in what follows $\text{Rep}(\mathbb{C}^\times)^\text{op}$
doesn’t mean the opposite category! It means the same category with the 
definition of $\otimes$ flipped – $M \otimes^\text{op} N$ is $N \otimes M$.&lt;/p&gt;

&lt;p&gt;Then for us, we find ourselves wanting to compute&lt;/p&gt;

\[\text{Rep}(\mathbb{C}^\times)^\text{op} 
\boxtimes_{\text{Rep}(\mathbb{C}^\times)^\text{op} \boxtimes \text{Rep}(\mathbb{C}^\times)}
\text{Rep}(\mathbb{C}^\times)\]

&lt;p&gt;Here I’m switching over to $\boxtimes$ for the tensor product &lt;em&gt;of&lt;/em&gt; categories
in order to keep it straight with the monoidal product $\otimes$ 
&lt;em&gt;inside a particular&lt;/em&gt; category later.&lt;/p&gt;

&lt;p&gt;Now again Fourier duality makes this look less scary, since we know that 
$\text{Rep}(\mathbb{C}^\times) \simeq \bigoplus_\mathbb{Z} \mathsf{Vect}$! 
We need to know the monoidal structure now, and it will come as no surprise 
that we swap the “pointwise” monoidal structure on 
$\text{Rep}(\mathbb{C}^\times)$ with the “convolution” monoidal structure 
on $\bigoplus_\mathbb{Z} \mathsf{Vect}$!&lt;/p&gt;

&lt;p&gt;To see why, consider the one dimensional $\mathbb{C}^\times$ representation 
$V_n$ where $z \in \mathbb{C}^\times$ acts by scalar multiplication by $z^n$.
This is the generator for the grade $n$ copy of of $\mathsf{Vect}$. Now 
what is $V_n \otimes V_m$ supposed to be? Well $z$ acts diagonally so that 
\(z \cdot (v_n \otimes v_m) = (z^n v_n) \otimes (z^m v_m) = z^{n+m} (v_n \otimes v_m)\)
and $V_n \otimes V_m$ is $V_{n+m}$.&lt;/p&gt;

&lt;p&gt;So cashing out the $\text{Rep}(\mathbb{C}^\times)$ for 
$\bigoplus_\mathbb{Z} \mathsf{Vect}$ everywhere we get&lt;/p&gt;

\[\left ( \bigoplus_\mathbb{Z} \mathsf{Vect} \right )^\text{op}
\boxtimes_{
\left ( \bigoplus_\mathbb{Z} \mathsf{Vect} \right )^\text{op}
\boxtimes
\left ( \bigoplus_\mathbb{Z} \mathsf{Vect} \right )
}
\left ( \bigoplus_\mathbb{Z} \mathsf{Vect} \right )\]

&lt;p&gt;Where the action (on objects) of 
$\left ( \bigoplus_\mathbb{Z} \mathsf{Vect} \right )^\text{op} 
\boxtimes \left ( \bigoplus_\mathbb{Z} \mathsf{Vect} \right )$
on 
$\left ( \bigoplus_\mathbb{Z} \mathsf{Vect} \right )$ is by&lt;/p&gt;

\[(V_n \boxtimes V_m) \cdot V_i \simeq V_n \otimes V_i \otimes V_m\]

&lt;p&gt;just like the bimodule action for the ordinary Hochschild homology! So,
using the presentation for the relative tensor product of categories, 
we see that our factorization homology is generated by objects of the form&lt;/p&gt;

\[V_i \boxtimes V_j\]

&lt;p&gt;where we add in isomorphisms&lt;/p&gt;

\[(V_n \otimes V_i \otimes V_m) \boxtimes V_j 
\cong
V_i \boxtimes (V_m \otimes V_j \otimes V_n)\]

&lt;p&gt;From this description it’s clear that, up to isomorphism, 
we can always make the $V_j$ into $V_0$ so that a normal form for objects 
of our category is&lt;/p&gt;

\[V_i \boxtimes V_0\]

&lt;p&gt;We can do this by choosing $n = -(m+j)$, which uses up one of our two 
degrees of freedom. Of course, we can still freely choose $m$, which gives us
&lt;em&gt;more isomorphisms&lt;/em&gt;! When $j=0$ for simplicity (or, given the above discussion,
without loss of generality), we get isomorphisms&lt;/p&gt;

\[(V_n \otimes V_i \otimes V_{-n}) \boxtimes V_0 
\cong 
V_i \boxtimes (V_{-n} \otimes V_0 \otimes V_n)
\cong
V_i \boxtimes V_0\]

&lt;p&gt;So we have integer many generating objects $V_i \boxtimes V_0$,
each of which carries integer many automorphisms given by conjugating 
by $V_n$ for $n \in \mathbb{Z}$… Moreover, these automorphisms are compatible
since $V_n \otimes V_m \cong V_{n+m}$ so that conjugating by $V_n$ and then 
$V_m$ is the same as conjugating by $V_{n+m}$.&lt;/p&gt;

&lt;p&gt;Thus we have $\mathbb{Z}$-many generating objects, each of which carries a 
$\mathbb{Z}$-action!&lt;/p&gt;

&lt;p&gt;So, at least at the level of objects, it’s believable that when $\Sigma$ 
is the annulus that 
$\int_\Sigma \text{Rep}(\mathbb{C}^\times)$ is $\mathbb{Z}$-graded 
$\mathbb{Z}$-modules!&lt;/p&gt;

&lt;p&gt;Of course, this is exactly what we were expecting, 
since if you recall from the previous section we computed the same thing for 
$\text{QCoh}(\underline{\text{Ch}}(\Sigma,\mathbb{C}^\times))$!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Lastly, let’s say what the “correct” way to do this is. &lt;a href=&quot;https://sites.google.com/view/tomgannon&quot;&gt;Tom Gannon&lt;/a&gt;
showed me how to do this when I talked to him about this yesterday. Obviously,
any mistakes come from my incorrectly remembering some details, or incorrectly
filling in others.&lt;/p&gt;

&lt;p&gt;We compute the factorization homology side again… But this 
computation will work for any group $G$, and we’ll write it in 
that level of generality.&lt;/p&gt;

&lt;p&gt;As before, we define $\underline{\text{Ch}}(\text{Annulus}, G)$ to be 
$\text{Hom}(\mathbb{Z}, G) \big / G$, which is $G \big / G$ – the quotient of 
$G$ by the conjugation action on itself. We want to compare the category of 
quasicoherent sheaves on this stack to the factorization homology 
$\int_{\text{Annulus}} \text{Rep}(G)$.&lt;/p&gt;

&lt;p&gt;As before, excision tells us that we can compute 
$\int_{\text{Annulus}} \text{Rep}(G)$ by the relative tensor product&lt;/p&gt;

\[\text{Rep}(G)^\text{op} 
\boxtimes_{\text{Rep}(G)^\text{op} \boxtimes \text{Rep}(G)}
\text{Rep}(G)\]

&lt;p&gt;but recall that $\text{Rep}(G) \simeq \text{QCoh}(\mathsf{B}G)$, so we can 
rewrite this as&lt;/p&gt;

\[\begin{aligned}
\text{QCoh}(\mathsf{B}G) 
\boxtimes_{
\text{QCoh}(\mathsf{B}G) \boxtimes \text{QCoh}(\mathsf{B}G)^\text{op}}
\text{QCoh}(\mathsf{B}G)^\text{op}
&amp;amp;\overset{(1)}{\simeq}
\text{QCoh}(\mathsf{B}G \times_{\mathsf{B}G \times \mathsf{B}G^\text{op}} \mathsf{B}G^\text{op}) \\
&amp;amp;\overset{(2)}{\simeq}
\text{QCoh}(G \big \backslash (G \times G^\text{op}) \big / G) \\
&amp;amp;\overset{(3)}{\simeq}
\text{QCoh}(G \big / G)
\end{aligned}\]

&lt;p&gt;In step $1$ we use the fact that the (relative) tensor product of sheaves 
corresponds to sheaves on the pullback. In step $2$ we compute the pullback
of classifying spaces. Indeed, if we wanted the (homotopy) pullback 
$\star \times_{\mathsf{B}(G \times G^\text{op})} \star$ (remember that $\mathsf{B}$ 
preserves products) this would just be the loopspace of $\mathsf{B}(G \times G^\text{op})$,
which is $G \times G^\text{op}$. But we don’t have $\star$, we actually have 
$\mathsf{B}G = \star \big / G$. So we have one left $G$ action 
(from the $\mathsf{B}G$) and one right $G$ action 
(from the $\mathsf{B}G^\text{op}$) and we end up with the double quotient space
$G \big \backslash (G \times G^\text{op}) \big / G$… Apparently if you work
through the details both of these $G$ actions are diagonal, by left/right 
multiplication respectively, but I haven’t tried to understand why that is.
I also don’t entirely know that I’m keeping track of the “op”s correctly, 
and while we’re at it I’m fuzzy on the details of this “act like we’re 
pulling back to a pair of points and then quotient by the $G$ actions after”
stuff too… I’m sure it’s formal, and I just haven’t gotten familiar with 
the rules for symbol pushing yet, so let’t not worry about it.&lt;/p&gt;

&lt;p&gt;Regardless, we find ourselves with 
$G \big \backslash (G \times G^\text{op}) \big / G$ where the action is by 
$h \cdot (g_1, g_2) \cdot k = (h g_1 k, k g_2 h)$. Then we can use 
one degree of symmetry by taking $k = h^{-1} g_2^{-1}$. This tells us that 
in the quotient we should identify $(g_1,g_2)$ with $(h g_1 g_2^{-1} h^{-1}, e)$.
Note that the multiplication order is kind of funny because of all the “op”s 
floating around. Of course we have another degree of freedom to use by 
choosing $h$, and as before this gives us an action of $G$ on itself by 
conjugation! So altogether we see that 
$G \big \backslash (G \times G^\text{op} ) \big / G$ is equivalent to 
$G \big / G$, the quotient of $G$ by the conjugation action! But this is 
exactly what we expect $\underline{\text{Ch}}(\text{Annulus}, G)$ to be!&lt;/p&gt;

&lt;p&gt;This is encouraging since this calculation looked superficially like the 
kind of thing we were doing by hand back in the objectwise calculation 
in the last section!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Ok, thanks for reading all! This was a very quick-and-dirty post, and 
I’m not sure I got the details right with the objectwise argument in the 
first half, or with the “op”s in the second half. I would normally spend 
a few days (or weeks) reading up on stacks, properties of $\text{QCoh}$, 
this Fourier/Cartier/Pontryagin/Whatever duality that I was using, and 
check that everything really does work the way I think it does… But I 
want to get this out at the same time as the main post. Plus
I’ve already had to put two posts on the backburner which 
are probably mostly right but need some details checked (one is about the 
stack semantics for the internal logic of (1-)topoi, and one is an explicit 
computation of the Goldman bracket for character varieties), and I really don’t 
want a third post in that limbo space. This could easily become one of many 
technical computations stuck in my drafts, but maybe it’s nice to share some 
quick-and-dirty computations too, since I do a lot of those in the privacy 
of my own home, haha. A lot of math looks polished once it gets presented, but 
at least for me the early days of learning a subject often look like this.&lt;/p&gt;

&lt;p&gt;Stay safe everyone, and stay warm!&lt;/p&gt;

</description>
        <pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate>
        <link>https://grossack.site/2026/02/20/computing-quantum-character-stacks.html</link>
        <guid isPermaLink="true">https://grossack.site/2026/02/20/computing-quantum-character-stacks.html</guid>
      </item>
      
    
      
      <item>
        <title>$F_2 \times F_2$ is Incoherent -- A Polite Spectral Sequence Computation</title>
        <description>&lt;p&gt;Yesterday I watched my friend &lt;a href=&quot;https://sites.google.com/ucr.edu/jialin-wang/home&quot;&gt;Jialin Wang&lt;/a&gt; defend her thesis, 
and as part of her background section she mentioned that the group 
$F_2 \times F_2$ is &lt;em&gt;incoherent&lt;/em&gt; in the sense that it has a subgroup 
that’s finitely generated and not finitely presented. I was curious how 
one might prove something like this, and in the original paper 
(Stallings’s &lt;a href=&quot;https://www.numdam.org/item/SB_1975-1976__18__167_0.pdf&quot;&gt;&lt;em&gt;Coherence of 3-Manifolds Fundamental Groups&lt;/em&gt;&lt;/a&gt;) this fact 
is boiled down to an “exercise which can be performed with the help of 
[a] spectral sequence”. I’ve been slowly trying to make spectral sequences 
feel like friends, so this seemed like the perfect thing to work out quickly
and turn into a blog post!&lt;/p&gt;

&lt;p&gt;I’ve been doing a &lt;em&gt;lot&lt;/em&gt; of writing lately, with two papers that I want out 
by the end of the summer &lt;em&gt;and&lt;/em&gt; a new result (which will be my thesis) that 
I want out by the end of the year &lt;em&gt;and&lt;/em&gt; an NSF proposal&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, &lt;em&gt;and&lt;/em&gt; even 
more stuff that I’m not talking about yet… So everyone in my life has 
heard me do nothing but complain about writing for the last month, haha. 
Weirdly, though, I’ve been itching to write a blog post! Maybe because it’s 
so informal, or maybe because it’s something I know I can &lt;em&gt;finish&lt;/em&gt;, or maybe 
it’s because I’m mainly sick of writing about the &lt;em&gt;same thing&lt;/em&gt; all day. 
No matter what it is, I’m happy to be here, and happy to have the excuse to 
share something cool ^_^.&lt;/p&gt;

&lt;p&gt;There’s no way I can give an introduction to spectral sequences that’s 
better than &lt;a href=&quot;https://math.stanford.edu/~vakil/0708-216/216ss.pdf&quot;&gt;Vakil’s notes&lt;/a&gt;, so I won’t even try. I highly recommend 
everyone give those a read at least once in your mathematical life, especially
if you’re planning to do anything that might require you to actually use 
spectral sequences “in the wild”. Going forwards in this post, I’ll assume 
that you know the basics of what &lt;a href=&quot;https://en.wikipedia.org/wiki/Spectral_sequence&quot;&gt;spectral sequences&lt;/a&gt; are, and how 
(roughly) to compute with them, but if you’re feeling brave and know a bit 
about homology you can probably already understand a fair amount of the post.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;First, though, a few words about our goal. We’re trying to show that a 
product of free groups, $G = F_2 \times F_2$, is not &lt;em&gt;coherent&lt;/em&gt;. To do this,
we need to find a subgroup of $G$ which is finitely generated but not 
finitely presented. Stalling’s original paper tells us that we should look at&lt;/p&gt;

\[N = \langle a, c, bd \rangle \trianglelefteq F\{a,b\} \times F\{c,d\}\]

&lt;p&gt;which is the kernel of the homomorphism&lt;/p&gt;

\[\begin{align}
F\{a,b\} \times F\{c,d\} &amp;amp;\to \mathbb{Z} \\
a,c &amp;amp;\mapsto 0 \\
b &amp;amp;\mapsto 1 \\
d &amp;amp;\mapsto -1
\end{align}\]

&lt;p&gt;This subgroup is obviously finitely generated (since we defined it in terms 
of $3$ generators!) so we need to show that it &lt;em&gt;isn’t&lt;/em&gt; finitely presented!
The key insight will be that&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;Every finitely presented group has finitely generated $H_2$.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;$\ulcorner$
Recall that the group homology $H_\bullet(G;M)$ is isomorphic to the 
“usual” homology&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; of its &lt;a href=&quot;https://en.wikipedia.org/wiki/Eilenberg%E2%80%93MacLane_space&quot;&gt;Eilenberg-MacLane Space&lt;/a&gt; $K(G,1)$ with 
coefficients in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Local_system&quot;&gt;local system&lt;/a&gt; associated to the $G$-module $M$.
Now if $G = \langle x_1, \ldots, x_n \mid R_1, \ldots, R_m \rangle$ 
is finitely presented, we can explicitly build a $K(G,1)$ as follows:&lt;/p&gt;

&lt;p&gt;First add a loop for every generator $x_i$. Then each relation $R_i$ is a
word in the generators, thus is a loop in our space, and we glue in a 
disk with boundary given by $R_i$. Note that this makes the loop vanish in 
$\pi_1$ so that we’ve forced the fundamental group of this space to be $G$. 
Finally we inductively add in higher cells to kill the higher 
homotopy groups, since we want our $K(G,1)$ to be aspherical.&lt;/p&gt;

&lt;p&gt;Now we compute $H_2(G;\mathbb{Z}) = H_2(K(G,1); \mathbb{Z})$ using this 
description of the cell structure of $K(G,1)$. Since 
$G = \langle x_1, \ldots, x_n \mid R_1, \ldots, R_m \rangle$ was finitely 
presented, we see that there’s $n$ many $1$-cells and $m$-many $2$-cells 
in $K(G,1)$. So the group of $2$-cycles is a subgroup of $\mathbb{Z}^m$, 
the free abelian group on our (finite) set of $2$-cells, and is itself 
finitely generated. Quotienting out the boundaries gives $H_2$, so we win
since the quotient of a finitely generated group is still finitely generated.&lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; 
&lt;span style=&quot;float:right&quot;&gt;$\lrcorner$&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;So, to show that our 
\(N = \langle a, c, bd \rangle \trianglelefteq F\{a,b\} \times F\{c,d\}\)
isn’t finitely presented, we just have to show its $H_2$ isn’t finitely 
generated. We can simplify the discussion by computing 
$H_2(N; \mathbb{Q})$ instead, since fields make homological algebra 
&lt;em&gt;much&lt;/em&gt; easier and the dimension of $H_2(N; \mathbb{Q})$ 
(as a $\mathbb{Q}$-vector space) is a lower bound on the number of generators 
for $H_2(N;\mathbb{Z})$ (do you see why?&lt;sup id=&quot;fnref:4&quot;&gt;&lt;a href=&quot;#fn:4&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;). So with this in mind&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;It suffices to show that $H_2(N; \mathbb{Q})$ is not finite dimensional 
as a $\mathbb{Q}$-vector space!&lt;/p&gt;

  &lt;p&gt;Unless otherwise stated, all homology groups have coefficients in 
$\mathbb{Q}$ (with the trivial action) for the rest of this post.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;If we could find some nice description of the isomorphism type of $N$ then 
we could maybe compute its $H_2$ directly… But why spend the effort looking?
We already have a short exact sequence&lt;/p&gt;

\[1 \to N \to F\{a,b\} \times F\{c,d\} \to \mathbb{Z} \to 1\]

&lt;p&gt;and the homologies of $F_2 \times F_2$ and $\mathbb{Z}$ should be easier to
compute by hand. Experience shows there should be some way to relate the 
homologies of $N$, $F_2 \times F_2$, and $\mathbb{Z}$, and indeed we’re saved 
by the &lt;a href=&quot;https://en.wikipedia.org/wiki/Lyndon%E2%80%93Hochschild%E2%80%93Serre_spectral_sequence&quot;&gt;Hochschild-Serre Spectral Sequence&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;This says that whenever we have a short exact sequence&lt;/p&gt;

\[1 \to N \to G \to Q \to 1\]

&lt;p&gt;we get a spectral sequence&lt;/p&gt;

\[E^2_{pq} = H_p(Q; H_q(N)) \Rightarrow H_{p+q}(G)\]

&lt;p&gt;relating the homology of $G$ to the homologies of $Q$ and $N$.
See Ch. VII.6 in &lt;a href=&quot;https://link.springer.com/book/10.1007/978-1-4684-9327-6&quot;&gt;Brown’s classic textbook&lt;/a&gt; for more details.&lt;/p&gt;

&lt;p&gt;Concretely this means that we can compute the homology of $G$ in terms of 
“nested” homology groups: $Q$ acts on $N$ by conjugation, and this induces 
an action of $Q$ on $H_q(N)$ – thus it makes sense to look at the homology of 
$Q$ with coefficients in $H_q(N)$! The spectral sequence gives a close 
relationship between $H_n(G)$ and the collection of “nested” homologies 
$H_p(Q; H_q(N))$ with $p+q = n$.&lt;/p&gt;

&lt;p&gt;Precisely, the $E^2$-page of the spectral sequence is&lt;/p&gt;

\[\begin{gather}
\vdots         &amp;amp;&amp;amp; \vdots         &amp;amp;&amp;amp; \vdots         &amp;amp;&amp;amp; \vdots         &amp;amp;&amp;amp; ⋰ \\
H_2(Q; H_0(N)) &amp;amp;&amp;amp; H_2(Q; H_1(N)) &amp;amp;&amp;amp; H_2(Q; H_2(N)) &amp;amp;&amp;amp; H_2(Q; H_3(N)) &amp;amp;&amp;amp; \cdots \\
H_1(Q; H_0(N)) &amp;amp;&amp;amp; H_1(Q; H_1(N)) &amp;amp;&amp;amp; H_1(Q; H_2(N)) &amp;amp;&amp;amp; H_1(Q; H_3(N)) &amp;amp;&amp;amp; \cdots \\
H_0(Q; H_0(N)) &amp;amp;&amp;amp; H_0(Q; H_1(N)) &amp;amp;&amp;amp; H_0(Q; H_2(N)) &amp;amp;&amp;amp; H_0(Q; H_3(N)) &amp;amp;&amp;amp; \cdots \\
\end{gather}\]

&lt;p&gt;In our case, we know that $Q = \mathbb{Z}$ has particularly simple homology.
Recall that a $\mathbb{Q}\mathbb{Z}$-module is just a $\mathbb{Q}$-vector space $V$ 
with a $\mathbb{Z}$ action. That is, it’s just a vector space $V$ with a choice 
of automorphism $\varphi \in GL(V)$.&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;For any $\mathbb{Q}\mathbb{Z}$-module $(V, \varphi)$, we compute&lt;/p&gt;

  &lt;p&gt;\(H_\bullet(\mathbb{Z}; V) =
\begin{cases}
V_\mathbb{Z} = V \big / (1-\varphi) V &amp;amp; \bullet = 0 \\
V^\mathbb{Z} = \text{Ker}(1-\varphi)  &amp;amp; \bullet = 1 \\
0 &amp;amp; \text{otherwise}
\end{cases}\)&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;$\ulcorner$ 
Writing $\mathbb{Q}[t^\pm]$ for $\mathbb{Q}\mathbb{Z}$, we build a 
free resolution of $\mathbb{Q}$&lt;/p&gt;

\[0 \to \mathbb{Q}[t^\pm] \overset{1-t}{\to} \mathbb{Q}[t^\pm] \overset{1}{\to} \mathbb{Q} \to 0.\]

&lt;p&gt;This tells us that $H_\bullet(\mathbb{Z}; V)$ is the homology of&lt;/p&gt;

\[0 \to V \overset{1-t}{\to} V \to 0\]

&lt;p&gt;where $t$ acts by the automorphism $\varphi$, giving the claim.
&lt;span style=&quot;float:right&quot;&gt;$\lrcorner$&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;In case $V$ is finite dimensional (as a $\mathbb{Q}$ vector space), then 
it’s easy to see that $\dim V^\mathbb{Z} = \dim \text{Ker} (1 - \varphi)$
and $\dim V_\mathbb{Z} = \dim \left ( V \big / \text{Im}(1 - \varphi) \right ) = \dim V - \dim \text{Im}(1 - \varphi)$
are equal, so that these two vector spaces are isomorphic.&lt;/p&gt;

&lt;p&gt;In case $V$ is infinite dimensional, though, this can fail!
Let $V = \mathbb{Q}[t^\pm]$, of countable dimension, and let $\varphi$ be
the (invertible) “multiply by $t$” operator. The fixed points $V^\mathbb{Z}$ of 
this operator are the laurent polynomials $p$ so that $p = t \cdot p$ (read: so that 
$(1-t) \cdot p = 0$), and the only option is $p=0$. The co-fixed points
$V_\mathbb{Z}$ are given by $V \big / (1-t)$ which is isomorphic to $\mathbb{Q}$.
So $V^\mathbb{Z}$ is $0$-dimensional and $V_\mathbb{Z}$ is $1$-dimensional.&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;When $V$ is finite dimensional as a $\mathbb{Q}$-vector space we compute&lt;/p&gt;

\[H_0(\mathbb{Z};V) \cong V_\mathbb{Z} \cong V^\mathbb{Z} \cong H_1(\mathbb{Z};V)\]

  &lt;p&gt;as vector spaces. So if these are &lt;em&gt;not&lt;/em&gt; isomorphic, then $V$ must be 
infinite dimensional!&lt;/p&gt;

  &lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/spectral-sequences-and-incoherence/surprise-tool-mickey-mouse.gif&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;This lets us start evaluating the terms of our spectral sequence:&lt;/p&gt;

\[\begin{gather}
\vdots                  &amp;amp;&amp;amp; \vdots                  &amp;amp;&amp;amp; \vdots                  &amp;amp;&amp;amp; \vdots                  &amp;amp;&amp;amp; ⋰ \\
H_2(\mathbb{Z}; H_0(N)) &amp;amp;&amp;amp; H_2(\mathbb{Z}; H_1(N)) &amp;amp;&amp;amp; H_2(\mathbb{Z}; H_2(N)) &amp;amp;&amp;amp; H_2(\mathbb{Z}; H_3(N)) &amp;amp;&amp;amp; \cdots \\
H_1(\mathbb{Z}; H_0(N)) &amp;amp;&amp;amp; H_1(\mathbb{Z}; H_1(N)) &amp;amp;&amp;amp; H_1(\mathbb{Z}; H_2(N)) &amp;amp;&amp;amp; H_1(\mathbb{Z}; H_3(N)) &amp;amp;&amp;amp; \cdots \\
H_0(\mathbb{Z}; H_0(N)) &amp;amp;&amp;amp; H_0(\mathbb{Z}; H_1(N)) &amp;amp;&amp;amp; H_0(\mathbb{Z}; H_2(N)) &amp;amp;&amp;amp; H_0(\mathbb{Z}; H_3(N)) &amp;amp;&amp;amp; \cdots \\
\end{gather}\]

&lt;p&gt;becomes&lt;/p&gt;

\[\begin{gather}
\vdots            &amp;amp;&amp;amp; \vdots            &amp;amp;&amp;amp; \vdots            &amp;amp;&amp;amp; \vdots            &amp;amp;&amp;amp; ⋰ \\
0                 &amp;amp;&amp;amp; 0                 &amp;amp;&amp;amp; 0                 &amp;amp;&amp;amp; 0                 &amp;amp;&amp;amp; \cdots \\
H_0(N)^\mathbb{Z} &amp;amp;&amp;amp; H_1(N)^\mathbb{Z} &amp;amp;&amp;amp; H_2(N)^\mathbb{Z} &amp;amp;&amp;amp; H_3(N)^\mathbb{Z} &amp;amp;&amp;amp; \cdots \\
H_0(N)_\mathbb{Z} &amp;amp;&amp;amp; H_1(N)_\mathbb{Z} &amp;amp;&amp;amp; H_2(N)_\mathbb{Z} &amp;amp;&amp;amp; H_3(N)_\mathbb{Z} &amp;amp;&amp;amp; \cdots \\
\end{gather}\]

&lt;p&gt;Moreover, we know that our 
$H_0(N; \mathbb{Q}) = \mathbb{Q}$ and 
$H_1(N; \mathbb{Q}) = N_\text{ab} \otimes \mathbb{Q} = \mathbb{Q}^3$, since 
the abelianization of $N = \langle a, c, bd \rangle$ is isomorphic to $\mathbb{Z}^3$. 
While we’re here we can compute that the conjugation action of $Q = \mathbb{Z}$ 
on $N$ induces the trivial action on $H_0(N)$ and $H_1(N)$.&lt;/p&gt;

&lt;p&gt;Since $Q = \mathbb{Z}$ is generated by the image of $b$, the conjugation 
action on $N$ is literally conjugation by $b$. On the generators we compute&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;$a \mapsto b^{-1} a b = (bd)^{-1} a (bd)$&lt;/li&gt;
  &lt;li&gt;$c \mapsto b^{-1} c b = c$&lt;/li&gt;
  &lt;li&gt;$bd \mapsto b^{-1} (bd) b = bd$&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In $H_0(N) = \mathbb{Q}$ the group $N$ doesn’t even make an appearance, so 
the induced action is trivial. On $H_1(N) = N_\text{ab} \otimes \mathbb{Q}$ 
we need to see what the conjugation action induces on the abelianization, 
but that becomes trivial since in $N_\text{ab}$ we have $(bd)^{-1} a (bd) = a$.&lt;/p&gt;

&lt;p&gt;Since the $\mathbb{Z}$-action is trivial on $H_0(N) = \mathbb{Q}$ and 
$H_1(N) = \mathbb{Q}^3$ we learn that&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;$H_0(N)_\mathbb{Z} = H_0(N)^\mathbb{Z} = \mathbb{Q}$&lt;/li&gt;
  &lt;li&gt;$H_1(N)_\mathbb{Z} = H_1(N)^\mathbb{Z} = \mathbb{Q}^3$&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the $E^2$ page of our spectral sequence further reduces to&lt;/p&gt;

\[\begin{gather}
\vdots     &amp;amp;&amp;amp; \vdots         &amp;amp;&amp;amp; \vdots            &amp;amp;&amp;amp; \vdots            &amp;amp;&amp;amp; ⋰ \\
0          &amp;amp;&amp;amp; 0              &amp;amp;&amp;amp; 0                 &amp;amp;&amp;amp; 0                 &amp;amp;&amp;amp; \cdots \\
\mathbb{Q} &amp;amp;&amp;amp; \mathbb{Q}^3 &amp;amp;&amp;amp; H_2(N)^\mathbb{Z} &amp;amp;&amp;amp; H_3(N)^\mathbb{Z} &amp;amp;&amp;amp; \cdots \\
\mathbb{Q} &amp;amp;&amp;amp; \mathbb{Q}^3 &amp;amp;&amp;amp; H_2(N)_\mathbb{Z} &amp;amp;&amp;amp; H_3(N)_\mathbb{Z} &amp;amp;&amp;amp; \cdots \\
\end{gather}\]

&lt;p&gt;The differential on the $E^2$ page points “up two, left one”, so 
we see that every differential is $0$. In fact it’s easy to see that all futher 
differentials vanish so that this is actually the $E^\infty$ page of our 
spectral sequence! General theory tells us that 
$H_n(G) = \bigoplus_{p+q = n} E^\infty_{pq}$, so we can compute
$H_n(F_2 \times F_2)$ by summing over the $n$th diagonal in the above table&lt;sup id=&quot;fnref:8&quot;&gt;&lt;a href=&quot;#fn:8&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Of course, $H_n(F_2 \times F_2)$ is easy enough to compute by hand using 
the &lt;a href=&quot;https://en.wikipedia.org/wiki/K%C3%BCnneth_theorem&quot;&gt;Künneth formula&lt;/a&gt; and the fact that $K(F_2, 1) = S^1 \vee S^1$ is 
a &lt;a href=&quot;https://en.wikipedia.org/wiki/Rose_(topology)&quot;&gt;bouquet&lt;/a&gt; with two petals&lt;sup id=&quot;fnref:5&quot;&gt;&lt;a href=&quot;#fn:5&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;. So we can compute it in two ways 
(directly via Künneth and “indirectly” via the spectral sequence) and 
compare to see what it tells us about $H_\bullet(N)$!&lt;/p&gt;

&lt;p&gt;In particular, we learn (the left isomorphism comes from Künneth and 
the right isomorphism comes from the spectral sequence):&lt;/p&gt;

\[\begin{gather}
\mathbb{Q} 
&amp;amp;\cong 
H_0(F_2 \times F_2) 
\cong&amp;amp;
\mathbb{Q} \\

\mathbb{Q}^4 
&amp;amp;\cong
H_1(F_2 \times F_2) 
\cong&amp;amp;
\mathbb{Q} \oplus \mathbb{Q}^3 \\

\mathbb{Q}^4 
&amp;amp;\cong
H_2(F_2 \times F_2) 
\cong&amp;amp;
0 \oplus \mathbb{Q}^3 \oplus H_2(N)_\mathbb{Z} \\

0 
&amp;amp;\cong
H_3(F_2 \times F_2) 
\cong&amp;amp;
0 \oplus 0 \oplus H_2(N)^\mathbb{Z} \oplus H_3(N)_\mathbb{Z}
\end{gather}\]

&lt;p&gt;From the $H_2(F_2 \times F_2)$ computation, we learn that
\(H_2(N)_\mathbb{Z}\) must be $1$ dimensional. 
But from the $H_3(F_2 \times F_2)$ computation we learn that 
$H_2(N)^\mathbb{Z}$ must be $0$ dimensional!&lt;/p&gt;

&lt;p&gt;Since the invariants and coinvariants have different diemnsions,
our earlier discussion shows that $H_2(N)$ must be infinite dimensional!
This means $N$ cannot have been finitely presented, as desired ^_^.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Let’s take a second to reflect on what just happened, since there were 
a decent number of moving parts.&lt;/p&gt;

&lt;p&gt;We wanted to show that 
\(N = \langle a, c, bd \rangle \leq F\{a,b\} \times F\{c,d\}\)
is not finitely presented. First, we showed that every finitely presented 
group $G$ has finitely generated $H_2(G;\mathbb{Z})$ 
(using a concrete model of $K(G,1)$) so that it suffices to show 
$H_2(N; \mathbb{Z})$ is infinitely generated.
Since the dimension of $H_2(N;\mathbb{Q})$ is a lower bound for the number of 
$\mathbb{Z}$-generators, we can work over a field and show that $H_2(N; \mathbb{Q})$
is infinite dimensional. Next, we showed that $H_2(N)$ comes with a natural 
$\mathbb{Z}$ action, and argued that $H_2(N)$ must be infinite dimensional 
if the invariants and coinvariants $H_2(N)^\mathbb{Z}$ and \(H_2(N)_\mathbb{Z}\)
have different dimensions. Finally, using the Hochschild-Serre spectral 
sequence, we were able to compute that $H_2(N)_\mathbb{Z}$ is one dimensional 
while $H_2(N)^\mathbb{Z}$ is zero dimensional. This shows that $H_2(N)$ 
must be infinite dimensional, and we win!&lt;/p&gt;

&lt;p&gt;This is a clever trick, and a fairly subtle one! It’s something I’ll have to 
try to remember, since the obvious approach is to try and compute the 
(co)invariants explicitly, but I’m not even sure&lt;sup id=&quot;fnref:7&quot;&gt;&lt;a href=&quot;#fn:7&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;7&lt;/a&gt;&lt;/sup&gt; how to compute the 
$\mathbb{Z}$-action on $H_2(N)$! This lets you get your hands on the 
infinite-dimensionality indirectly, which feels very useful.&lt;/p&gt;

&lt;p&gt;Thanks for hanging out, everyone! It’s wild to think that just a short week 
ago I was in Bozeman, Montana meeting a bunch of cool people and giving a 
talk about my thesis. Then all in a row over labor day weekend I had two 
little dinner parties and went to the beach to swim with leopard sharks! 
It wasn’t very productive, but it was extremely good for the soul, haha. 
Now I have a few short days to try and get more done before I fly to Chicago
for the &lt;a href=&quot;https://sites.google.com/view/frg-fall2025/home&quot;&gt;Fall School on Quantizations and Lagrangians&lt;/a&gt;. 
Take care all, and stay safe. We’ll talk soon 💖&lt;/p&gt;

&lt;hr /&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot;&gt;

      &lt;p&gt;On the off chance the NSF still exists next year &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot;&gt;

      &lt;p&gt;Depending on which book you read, this is either a definition or a 
theorem. See, for instance, the Introduction or Chapter II.4 in 
Brown’s book on &lt;a href=&quot;https://link.springer.com/book/10.1007/978-1-4684-9327-6&quot;&gt;Group Cohomology&lt;/a&gt;. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot;&gt;

      &lt;p&gt;In fact, there’s a whole hierarchy of finiteness conditions on a group 
$G$. We say that a group $G$ is “&lt;a href=&quot;https://en.wikipedia.org/wiki/Finiteness_properties_of_groups&quot;&gt;of type $F_n$&lt;/a&gt;” if its $K(G,1)$ has 
a finite $n$-skeleton. That is, if there’s only finitely many $0$-cells, 
finitely many $1$-cells, …, and finitely many $n$-cells.&lt;/p&gt;

      &lt;p&gt;In the body we really showed that being finitely presented means being 
type $F_2$… Well, we showed half of this. Showing the converse 
(that $F_2$-groups are finitely presented) isn’t so hard either, and 
uses essentially the same idea.&lt;/p&gt;

      &lt;p&gt;Note that being type $F_2$ implies that $H_2$ is finitely generated, since 
(as we said in the main body) then $H_2$ is a quotient of a subgroup 
of a finitely generated abelian group. But even if $G$ isn’t of type 
$F_2$, then $H_2$ might “accidentally” be finitely generated, if we have a
big generating set but then quotient out by a similarly big set of 
boundaries. In fact, this really does happen! Bestvina and Brady 
constructed a group whose $H_2$ is finitely generated (indeed, whose 
$H_n$ is finitely generated for all $n$) yet which is not finitely 
presented! See &lt;a href=&quot;https://link.springer.com/article/10.1007/s002220050168&quot;&gt;&lt;em&gt;Morse Theory and Finiteness Properties of Groups&lt;/em&gt;&lt;/a&gt; &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:4&quot;&gt;

      &lt;p&gt;The universal coefficient theorem promises 
$H_2(N;\mathbb{Q}) = H_2(N;\mathbb{Z}) \otimes \mathbb{Q}$, which kills 
any torsion subgroups (so we don’t see those generators) but keeps the 
free abelian part. &lt;a href=&quot;#fnref:4&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:8&quot;&gt;

      &lt;p&gt;This is one place where working over a field &lt;em&gt;really&lt;/em&gt; simplifies things! 
In general we would only know that $H_n(G)$ is some iterated extension
with the groups showing up along the diagonals as subquotients. Thankfully 
over a field the only extensions are direct sums, so we learn that
$H_n(G)$ must be the direct sum along the diagonal! &lt;a href=&quot;#fnref:8&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:5&quot;&gt;

      &lt;p&gt;If this isn’t obvious, it’s a &lt;em&gt;fantastic&lt;/em&gt; 
exercise in algebraic topology! Can you compute the homology groups
$H_\bullet \Big ( (S^1 \vee S^1) \times (S^1 \vee S^1) ; \mathbb{Q} \Big )$?&lt;/p&gt;

      &lt;p&gt;Again, you’ll want the &lt;a href=&quot;https://en.wikipedia.org/wiki/K%C3%BCnneth_theorem&quot;&gt;Künneth formula&lt;/a&gt; to handle the product, and 
then you’ll want something like &lt;a href=&quot;https://en.wikipedia.org/wiki/Mayer–Vietoris_sequence&quot;&gt;Mayer-Vietoris&lt;/a&gt; to handle the 
wedge sums.&lt;/p&gt;

      &lt;p&gt;To relate this to group homology, note that 
$K(G \times H, 1) \cong K(G, 1) \times K(H, 1)$, so that the 
Künneth formula also applies to group homology! &lt;a href=&quot;#fnref:5&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:7&quot;&gt;

      &lt;p&gt;Though I gave up almost immediately, since I want this post finished so 
I can go back to writing more important things &lt;a href=&quot;#fnref:7&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Wed, 03 Sep 2025 00:00:00 +0000</pubDate>
        <link>https://grossack.site/2025/09/03/spectral-sequences-and-incoherence.html</link>
        <guid isPermaLink="true">https://grossack.site/2025/09/03/spectral-sequences-and-incoherence.html</guid>
      </item>
      
    
      
      <item>
        <title>Free Things Are Complicated (Especially the Sphere Spectrum!)</title>
        <description>&lt;p&gt;I’ve spent the last week at &lt;a href=&quot;https://conference.math.muni.cz/ct2025/&quot;&gt;CT2025&lt;/a&gt;, which has just come to a close. 
It was great getting to see so many old friends and meet so many new ones,
and every time I go to a CT I’m reminded of &lt;em&gt;just&lt;/em&gt; how much category theory 
there is in the world, as well as &lt;em&gt;just&lt;/em&gt; how much I enjoy all of it! Right 
before this I was in Antwerp for some &lt;a href=&quot;https://www.slmath.org/summer-schools/1077&quot;&gt;Noncommutative Geometry&lt;/a&gt;, 
where I learned a &lt;em&gt;ton&lt;/em&gt; and met even &lt;em&gt;more&lt;/em&gt; new friends! Then next week
I go to Bonn for my &lt;a href=&quot;https://www.mathematics.uni-bonn.de/hcm/events/workshops-conferences/qtmart_2025&quot;&gt;&lt;em&gt;third&lt;/em&gt; conference&lt;/a&gt; in a row. 
I’m trying to stay energetic, and thankfully I have a few days off between CT 
and QTMART to help me rest up!&lt;/p&gt;

&lt;p&gt;I want to write up a lot of things I learned over the last month, since I have 
a &lt;em&gt;lot&lt;/em&gt; of new thoughts on noncommutative geometry, mirror symmetry, and 
deformation theory, all coming from just my time in Antwerp! I’ve also learned 
a lot at CT and talked to a lot of interesting people about interesting 
things, and I’m sure I’ll have even more to say after my time in Bonn.&lt;/p&gt;

&lt;p&gt;I think organizing all of those thoughts are going to take a while, though 
(if I end up writing them down at all), but today I have a quick observation 
inspired by a few lovely conversations I had with &lt;a href=&quot;https://webhomes.maths.ed.ac.uk/~cbarwick/&quot;&gt;Clark Barwick&lt;/a&gt; at CT. 
One of the many questions I asked him was if there’s a conceptual reason the 
&lt;a href=&quot;https://en.wikipedia.org/wiki/Sphere_spectrum&quot;&gt;Sphere Spectrum&lt;/a&gt; (read: the homotopy groups of spheres) is so darn 
complicated. He gave me an answer that’s obvious in hindsight, but which 
totally rearranged the way I think about things:&lt;/p&gt;

&lt;blockquote&gt;
The Sphere Spectrum is complicated because it&apos;s *free*
&lt;/blockquote&gt;

&lt;p&gt;I think I internalized a while ago that “free” constructions are fairly 
concrete. After all, you look at the syntax of whatever object you’re interested 
in, quotient out by the relations you want to be true and you’re done! Plus,
mapping out of a free thing is as simple as possible, since it’s a left 
adjoint! All you have to do is find a (usually simpler) map from your 
generating set to a structure of interest and let the magic of category theory 
build your (usually more complicated) map for you…&lt;/p&gt;

&lt;p&gt;Of course, this view is heavily influenced by the kind of free structures 
I have experience with, and the kinds of questions I was asking about them.
I was thinking about free groups and monoids, which you can study with 
word combinatorics, free (dg-)algebras on (graded) vector spaces, 
which look like polynomials,
free categories on graphs, free $k$-linear or dg-categories on categories, 
and free &lt;a href=&quot;https://ncatlab.org/nlab/show/Cauchy+complete+category#InEnrichedCategoryTheory&quot;&gt;cauchy completions&lt;/a&gt; of these, all of which come from just 
looking at paths, linear combinations, concentrating things 
in degree $0$, or working with twisted closures to add shifts and 
cones and whatnot&lt;sup id=&quot;fnref:6&quot;&gt;&lt;a href=&quot;#fn:6&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.
I was thinking about relatively free constructions like the universal 
enveloping algebra, with its &lt;a href=&quot;https://en.wikipedia.org/wiki/Poincar%C3%A9%E2%80%93Birkhoff%E2%80%93Witt_theorem&quot;&gt;PBW-basis&lt;/a&gt;, or the right angled artin group 
attached to a (reflexive, simple) graph… All of these constructions feel 
like friends to me, in part because I know how to compute with them.
Why would the sphere spectrum – the free spectrum on a &lt;em&gt;single point&lt;/em&gt; – 
be so different?&lt;/p&gt;

&lt;p&gt;The point is that I’ve internalized these constructions as being tractable 
because I’m usually mapping &lt;em&gt;out&lt;/em&gt; of them, in the direction the 
category theory encourages. I’m also usually relying on serious 
“normal form” theorems that make computing with these things tractable,
or I’m doing fairly simple combinatorics with my generating set
before arguing that these extend in some obvious way
to things defined on the whole free object. All of these constructions 
become much less friendly when you start mapping &lt;em&gt;into&lt;/em&gt; them, or asking more 
difficult questions about their internal structure. In hindsight, I’ve even 
personally struggled with &lt;em&gt;tons&lt;/em&gt; of questions about free structures in my 
research!&lt;/p&gt;

&lt;p&gt;Free groups are extremely interesting from basically any perspective, with 
deep questions about their first order theory (&lt;a href=&quot;https://en.wikipedia.org/wiki/Free_group#Tarski&apos;s_problems&quot;&gt;Tarski’s Problem&lt;/a&gt;), the 
combinatorics relating their generating sets (&lt;a href=&quot;https://en.wikipedia.org/wiki/Andrews%E2%80%93Curtis_conjecture&quot;&gt;The Andrews-Curtis Conjecture&lt;/a&gt;),
or the coarse geometry of their outer automorphisms.&lt;/p&gt;

&lt;p&gt;Free cauchy completions are &lt;em&gt;obviously&lt;/em&gt; complicated when you want to understand 
them on their own terms! If you take an algebra $A$ and view it as a one-object 
dg-category, then its cauchy completion&lt;sup id=&quot;fnref:6:1&quot;&gt;&lt;a href=&quot;#fn:6&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; is its whole category of 
&lt;a href=&quot;https://en.wikipedia.org/wiki/Perfect_complex&quot;&gt;perfect complexes&lt;/a&gt;! An &lt;em&gt;enormous&lt;/em&gt; chunk of representation theory is, 
in that lens, dedicated to nothing more than the study of a certain, 
complicated, free construction!&lt;/p&gt;

&lt;p&gt;I’ve personally given up&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; on a problem about relatively free constructions 
in right angled artin groups! These interpolate between free and free-abelian 
groups, and geometric group theory is teeming with interesting open problems 
about raags. For instance, can you understand, at the level of the underlying 
graphs, when one raag will embed into another? I thought about this off and on 
for a year before I started working seriously with my current advisor, and 
I made almost no progress at all.&lt;/p&gt;

&lt;p&gt;I also spent some time working with the adjunctions&lt;/p&gt;

\[\{ \text{finite limit categories} \} 
\leftrightarrows
\{ \text{finite product categories} \}
\leftrightarrows
\{ \text{symmetric monoidal categories} \}\]

&lt;p&gt;It’s interesting to try and construct these explicitly, and to understand 
the essential images of the left adjoints. This amounts to understanding 
which essentially algebraic theories are actually algebraic, and which 
algebraic theories are actually &lt;a href=&quot;https://ncatlab.org/nlab/show/PROP&quot;&gt;props&lt;/a&gt;. One of the big difficulties 
here is that we have a relatively free construction which adds &lt;em&gt;relations&lt;/em&gt;
rather than just &lt;em&gt;operations&lt;/em&gt;. Adding new operations tends to be a 
fairly mild thing to do – consider the free algebra on an abelian group,
which sends $A$ to its tensor algebra $\bigoplus_n A^{\otimes n}$ where 
it’s easy to recover the $A$ you started with. If instead we want to add 
new relations or axioms, for instance by freely sending a group $G$ to its
abelianization $G \big / [G,G]$, then we lose lots of information in this 
construction.&lt;/p&gt;

&lt;p&gt;After some conversations with John Baez and Todd Trimble I came quite close to 
characterizing the image of the left adjoint between finite product categories 
and symmetric monoidal categories by factoring it into a “lossy” construction 
adding new axioms forcing the monoidal unit to be terminal 
and a much simpler construction which freely adds new operations corresponding
to the product projections. I’ve had to put that project on hold while I 
focus on my thesis work, but I &lt;em&gt;really&lt;/em&gt; want to come back and finish it soon.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Of course as soon as you’re interested in logic, you have to accept that 
free things are complicated! The freest version of any theory lives in its 
classifying category, where truth and provability coincide. Then proving 
anything at all about the free model gives immediate understanding about 
&lt;em&gt;all other models&lt;/em&gt; of that theory! This is already true for groups, 
whose classifying finite-product category is just the category of 
finitely generated free groups and homomorphisms.
We don’t usually think about it because the kinds of 
statements you prove in equational logic aren’t very deep. But if you look 
instead at the classifying topos for groups and ask 
&lt;em&gt;geometric&lt;/em&gt; questions suddenly you’re able to do a lot more, and the game 
becomes &lt;em&gt;much&lt;/em&gt; harder!&lt;/p&gt;

&lt;p&gt;Perhaps this is clearest in the semantics of programming languages, where 
the free model (often called the “term model” in this context&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;) &lt;em&gt;is&lt;/em&gt;
the programming language, and checking whether two terms are equal in this 
free model &lt;em&gt;literally&lt;/em&gt; amounts to evaluating two programs and seeing if their
respective values agree. Because of this, many important structural results 
about a programming language (such as &lt;a href=&quot;https://ncatlab.org/nlab/show/canonical+form&quot;&gt;canonicity&lt;/a&gt;) can be proven by 
building another model whose semantics you understand, and then producing a 
section of the unique map from the free model.&lt;/p&gt;

&lt;p&gt;Also coming from logic are various lattices, whose free models can be 
quite intricate. Famously the free &lt;a href=&quot;https://en.wikipedia.org/wiki/Modular_lattice&quot;&gt;modular lattice&lt;/a&gt; on $3$ generators 
has $28$ elements, while the free modular lattice on $4$ generators is 
infinite! Indeed, this lattice has an undecidable word problem&lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;, so that 
no program can tell whether two descriptions of its elements are the same 
or not! Heyting algebras are extremely important for semantics of 
intuitionistic logic, yet already the free heyting algebra on &lt;em&gt;one&lt;/em&gt; generator
is infinite, and the free heyting algebra on &lt;em&gt;two&lt;/em&gt; generators is famously 
complicated. The study of free heyting algebras is still ongoing and seems 
quite difficult (at least as an outsider). See, for instance, Almeida’s 
recent preprint &lt;a href=&quot;https://arxiv.org/pdf/2402.08058v3&quot;&gt;&lt;em&gt;Colimits and Free Constructions of Heyting Algebras 
through Esakia Duality&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;With all this in mind, it shouldn’t be surprising at &lt;em&gt;all&lt;/em&gt; that the 
sphere spectrum is so complicated! It’s the free &lt;a href=&quot;https://en.wikipedia.org/wiki/Spectrum_(topology)&quot;&gt;spectrum&lt;/a&gt; on a point, 
and as such the only “relations” it will have are those that hold in 
&lt;em&gt;all spectra&lt;/em&gt;! But of course spectra should &lt;em&gt;obviously&lt;/em&gt; be complicated – 
They control all possible (co)homology theories for all spaces! So in this 
sense one should expect the internal structure of the sphere spectrum to be 
quite complicated, since any simplification would persist to something true 
of all cohomology theories.&lt;/p&gt;

&lt;p&gt;Of course, it’s easy to be complicated without being interesting, and 
I still think it’s a bit of a miracle that the sphere spectrum should have 
all this intricate structure inside it. As I understand it, 
much of &lt;a href=&quot;https://en.wikipedia.org/wiki/Chromatic_homotopy_theory&quot;&gt;Chromatic Homotopy Theory&lt;/a&gt; came from trying to explain patterns 
in the homotopy groups of spheres, and this subject is now as famously 
intimidating to outsiders&lt;sup id=&quot;fnref:4&quot;&gt;&lt;a href=&quot;#fn:4&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; as it is famously fascinating once you put in 
the work to become an insider&lt;sup id=&quot;fnref:5&quot;&gt;&lt;a href=&quot;#fn:5&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Thanks for reading all! This really was a quick one for once, since I already
had a lot of these examples floating around in my head. I really had all 
of the tools to realize that free things are &lt;em&gt;obviously&lt;/em&gt; complicated in 
general, &lt;em&gt;especially&lt;/em&gt; their “internal structure” that doesn’t ride the 
coattails of the universal property, but for some reason I just didn’t 
put it together until my conversation with Clark.&lt;/p&gt;

&lt;p&gt;It’s always dangerous to say what I’m thinking about writing about, but 
I at least have one more short post planned from my time in Antwerp, and 
maybe a longer one too if I have the energy. I’m doing a &lt;em&gt;ton&lt;/em&gt; of writing 
right now, since I have two half-finished papers that I want to submit by the 
end of the summer. I think I’ll be able to get it done, but between writing 
these and going to conferences it’s been a tiring month. It’s tiring in a fun 
way, though, and I really feel like I’ve been productive in a way that I 
haven’t felt in a little while. I’m excited to start crossing a lot of these 
projects off my long-term-todo-list, especially since I already have three 
more projects I want to start!&lt;/p&gt;

&lt;p&gt;Regardless, I hope you’re having a more restful summer than I am! 
Stay safe, all, and we’ll talk soon ^_^.&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/free-things-are-complicated/Brno-with-bear.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
(photo by the amazing &lt;a href=&quot;https://webhomes.maths.ed.ac.uk/~emilyroff/&quot;&gt;Emily Roff&lt;/a&gt;, taken at the top of the main 
tower in Brno)
&lt;/p&gt;

&lt;hr /&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:6&quot;&gt;

      &lt;p&gt;Actually it’s not &lt;em&gt;completely&lt;/em&gt; obvious to me that the cauchy completion
of a dg-category should be its idempotent triangulated closure… The 
cauchy completion will certainly be idempotent complete and triangulated,
but in the well-named paper 
&lt;a href=&quot;http://www.tac.mta.ca/tac/volumes/37/28/37-28.pdf&quot;&gt;&lt;em&gt;Cauchy Completeness for DG-Categories&lt;/em&gt;&lt;/a&gt;, Nicolić, Street, and 
Tendas show that to be cauchy complete you also need to be closed under 
“cokernels of protosplit chain maps”… I think this is some kind of 
split idempotent condition? But I haven’t read the paper closely enough 
to know for sure.&lt;/p&gt;

      &lt;p&gt;If you want to be guaranteed to be correct, instead of “cauchy completion” 
you can say “the idempotent closure of the twisted closure”. That’s still 
a free construction and it still gives you the derived category in the 
special case your dg-category is a ring. &lt;a href=&quot;#fnref:6&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt; &lt;a href=&quot;#fnref:6:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:1&quot;&gt;

      &lt;p&gt;At least for now &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot;&gt;

      &lt;p&gt;Pun intended &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot;&gt;

      &lt;p&gt;Which is made more interesting by the fact that if you look at the 
class of lattices coming from lattices of subgroups of abelian groups,
the corresponding free lattice on $4$ generators &lt;em&gt;does&lt;/em&gt; have solvable 
word problem!&lt;/p&gt;

      &lt;p&gt;This is remarkable since (as I understand it) 
modular lattices are called that because they 
look like lattices of submodules (in particular, sublattices 
of a lattice of subgroups of an abelian group).&lt;/p&gt;

      &lt;p&gt;This is apparently proven in Herrmann’s 
&lt;a href=&quot;https://www2.mathematik.tu-darmstadt.de/~herrmann/houston.pdf&quot;&gt;&lt;em&gt;On the Equational Theory of Submodule Lattices&lt;/em&gt;&lt;/a&gt;, and I learned all this 
from Ralph Freese the comments of &lt;a href=&quot;https://golem.ph.utexas.edu/category/2015/09/the_free_modular_lattice_on_3.html&quot;&gt;this&lt;/a&gt; n-Category Cafe post. &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:4&quot;&gt;

      &lt;p&gt;Such as myself. &lt;a href=&quot;#fnref:4&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:5&quot;&gt;

      &lt;p&gt;Which it seems like I might start doing soon, for a project I’m not ready
to talk about yet. &lt;a href=&quot;#fnref:5&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Sun, 20 Jul 2025 00:00:00 +0000</pubDate>
        <link>https://grossack.site/2025/07/20/free-things-are-complicated.html</link>
        <guid isPermaLink="true">https://grossack.site/2025/07/20/free-things-are-complicated.html</guid>
      </item>
      
    
      
      <item>
        <title>An Explicit Computation in Derived Algebraic Geometry</title>
        <description>&lt;p&gt;Earlier this week my friend &lt;a href=&quot;https://sites.google.com/view/shane-rankin&quot;&gt;Shane&lt;/a&gt; and I took a day and just did 
a bunch of computations. In the morning we did some differential geometry,
where he told me some things about what he’s doing with 
symplectic &lt;a href=&quot;https://ncatlab.org/nlab/show/Lie+algebroid&quot;&gt;lie algebroids&lt;/a&gt;. We went to get lunch, and then in the 
afternoon we did some computations in &lt;a href=&quot;https://en.wikipedia.org/wiki/Derived_algebraic_geometry&quot;&gt;derived algebraic geometry&lt;/a&gt;.
I already wrote a &lt;a href=&quot;/2025/06/20/sl2-action-algebroid-computation&quot;&gt;blog post&lt;/a&gt; on the differential geometry, and 
now I want to write one on the derived stuff too!&lt;/p&gt;

&lt;p&gt;I’m faaaaar from an expert in this stuff, and I’m sure there’s lots 
of connections I could make to other subjects, or interesting 
general theorem statements which have these computations as special 
cases… Unfortunately, I don’t know enough to do that, so I’ll have 
to come back some day and write more blog posts once I know more!&lt;/p&gt;

&lt;p&gt;I’ve been interested in derived geometry for a long time now, and 
I’ve been sloooowly chipping away at the prerequisites – 
$\infty$-categories and model categories, especially via dg-things,
“classical” algebraic geometry (via schemes), and of course 
commutative and homological algebra. I’m lucky that a lot of these
topics have &lt;em&gt;also&lt;/em&gt; been useful in my thesis work on &lt;a href=&quot;https://en.wikipedia.org/wiki/Fukaya_category&quot;&gt;fukaya categories&lt;/a&gt; 
and &lt;a href=&quot;https://en.wikipedia.org/wiki/Topological_quantum_field_theory&quot;&gt;TQFTs&lt;/a&gt;, which has made the time spent on them easy to justify!&lt;/p&gt;

&lt;p&gt;I’ve just started reading a book which I hope will bring all these ideas 
together – &lt;a href=&quot;https://doi.org/10.1007/978-3-319-04564-1&quot;&gt;&lt;em&gt;Towards the Mathematics of Quantum Field Theory&lt;/em&gt;&lt;/a&gt;
by Frédéric Paugam. It seems intense, but at least on paper I know a lot 
of the things he’s planning to talk about, and I’m hoping it makes good 
on its promise to apply its techniques to “numerous examples”. If it 
does, I’m sure it’ll help me understand things better so I can share them 
here ^_^.&lt;/p&gt;

&lt;p&gt;In this post we’ll do two simple computations. In both cases we have a 
family of curves where something weird happens at a point, and in the 
“clasical” case this weirdness manifests as a discontinuity in some 
invariant. But by working with a derived version of the invariant 
we’ll see that at most points the classical story and the derived 
story agree, but at the weird point the derived story contains 
~bonus information~ that renders the invariant continuous after all!&lt;/p&gt;

&lt;p&gt;Ok, let’s actually see this in action!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;First let’s look at what happens when we intersect two lines through 
the origin. This is the example given in Paugam’s book that made me 
start thinking about this stuff again.&lt;/p&gt;

&lt;p&gt;Let’s intersect the $x$-axis (the line $y=0$) with the line $y=mx$
as we vary $m$. This amounts to looking at the schemes 
$\text{Spec}(k[x,y] \big / y)$ and $\text{Spec}(k[x,y] \big / y-mx)$. 
Their intersection is the pullback&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-computation-in-derived-ag/pullback.png&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;and so since everything in sight is affine, we can compute this pullback 
in $\text{Aff} = \text{CRing}^\text{op}$ as a pushout in $\text{CRing}$:&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-computation-in-derived-ag/pushout.png&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;Pushouts in $\text{CRing}$ are given by (relative) tensor products, and so 
we compute&lt;/p&gt;

\[k[x,y] \big / (y) \ \otimes_{k[x,y]} \ k[x,y] \big / (y-mx)
\cong
k[x,y] \big / (y, y-mx)
\cong
k[x] \big / (-mx)\]

&lt;p&gt;which is $k$ when $m \neq 0$ and is $k[x]$ when $m=0$, so we’ve learned that:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;When $m \neq 0$ the intersection of \(\{y=0\}\) and \(\{y=mx\}\) is 
  $\text{Spec}(k)$ – a single point&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;When $m = 0$ the intersection is $\text{Spec}(k[x])$ – the whole $x$-axis.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is, of course, not surprising at all! We didn’t &lt;em&gt;really&lt;/em&gt; need any 
commutative algebra for this, since we can just &lt;em&gt;look at it&lt;/em&gt;!&lt;/p&gt;

&lt;p&gt;The fact that the dimension of the intersection jumps suddenly is related 
to the lack of &lt;a href=&quot;https://en.wikipedia.org/wiki/Flat_module&quot;&gt;flatness&lt;/a&gt; in the family of intersections 
$k[x,y,m] \big /(y, y-mx) \to k[m]$. Indeed, this doesn’t &lt;em&gt;look&lt;/em&gt; like a very 
flat family!&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-computation-in-derived-ag/intersection-isnt-flat.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;We can also see it isn’t flat algebraically since tensoring with 
$k[x,y,m] \big / (y, y-mx)$ doesn’t preserve the exact sequence&lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

\[0 \to k[m] \overset{- \cdot m}{\longrightarrow} k[m] \longrightarrow k \to 0\]

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;In the derived world, though, things are better. It’s my impression that 
here flatness is a condition guaranteeing the “naive” underived computation 
agrees with the “correct” derived computation. That is, flat modules $M$ are 
those for which $M \otimes^\mathbb{L} -$ and $M \otimes -$ agree for all 
modules $X$! I think that one of the benefits of the derived world is that 
we can pretend like “all families are flat”. I would love if someone who 
knows more about this could chime in, though, since I’m not confident enough
to really stand by that.&lt;/p&gt;

&lt;p&gt;In our particular example, though, this is definitely true! 
To see this we need to compute the &lt;em&gt;derived&lt;/em&gt; tensor product 
of $k[x,y] \big / (y)$ and $k[x,y] \big / (y-mx)$ as $k[x,y]$-algebras.
To do this we need to know the right notion of “projective resolution”
(it’s probably better to say &lt;a href=&quot;https://en.wikipedia.org/wiki/Model_category&quot;&gt;cofibrant replacement&lt;/a&gt;), and we can 
build these from (retracts of) &lt;a href=&quot;https://ncatlab.org/nlab/show/semifree+dga&quot;&gt;semifree commutative dg algebras&lt;/a&gt; in much 
the same way we build projective resolutions from free things!&lt;/p&gt;

&lt;p&gt;Here “semifree” means that our algebra is a free commutative graded algebra if we 
forget about the differential. Of course, “commutative” here is in the 
graded sense that $xy = (-1)^{\text{deg}(x) \text{deg}(y)}yx$.&lt;/p&gt;

&lt;p&gt;For example, if we work over the base field $k$, then the free commutative graded 
algebra on $x_0$ (by which I mean an element $x$ living in degree $0$) is just the
polynomial algebra $k[x]$ all concentrated in degree $0$. Formally, we have 
elements $1, \ x_0, \  x_0 \otimes x_0, \  x_0 \otimes x_0 \otimes x_0, \ldots$, 
and the degree of a tensor is the sum of the degrees of the things we’re 
tensoring, so that for $x_0$ the whole algebra ends up concentrated in degree 
$0$.&lt;/p&gt;

&lt;p&gt;If we look at the free graded $k$-algebra on $x_1$, we again get an algebra 
generated by $x_1, \ x_1 \otimes x_1, \ x_1 \otimes x_1 \otimes x_1, \ldots$
except that now we have the anticommutativity relation 
$x_1 \otimes x_1 = (-1)^{1 \cdot 1} x_1 \otimes x_1$ so that $x_1 \otimes x_1 = 0$.
This means the free graded $k$-algebra on $x_1$ is just the algebra with 
$k$ in degree $0$, the vector space generated by $x$ in degree $1$, and the
stipulation that $x^2 = 0$.&lt;/p&gt;

&lt;p&gt;In general, elements in even degrees contribute &lt;a href=&quot;https://en.wikipedia.org/wiki/Symmetric_algebra&quot;&gt;symmetric algebras&lt;/a&gt;
and elements in odd degrees contribute &lt;a href=&quot;https://en.wikipedia.org/wiki/Exterior_algebra&quot;&gt;exterior algebras&lt;/a&gt; to the 
cga we’re freely generating.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;What does this mean for our example? We want to compute the derived tensor 
product of $k[x,y] \big / y$ and $k[x,y] \big / y-mx$. As is typical in 
homological algebra, all we need to do is “resolve” one of our algebras 
and then take the usual tensor product of chain complexes. Here a 
resolution means we want a semifree cdga which is quasi-equivalent to the 
algebra we started with, and it’s easy to find one!&lt;/p&gt;

&lt;p&gt;Consider the cdga $k[x,y,e]$ where $x,y$ live in degree $0$ and $e$ lives in 
degree $1$. The differential sends $de = y$, and must send everything else 
to $0$ by degree considerations (there’s nothing in degree $-1$).
This cdga is semifree as a $k[x,y]$-algebra, since if you forget the 
differential it’s just the free graded $k[x,y]$ algebra on a degree 1 generator
$e$!&lt;/p&gt;

&lt;p&gt;So this corresponds to the chain complex&lt;/p&gt;

\[\cdots 0 \to k[x,y]e \overset{d}{\to} k[x,y] \to 0\]

&lt;p&gt;where $de = y$ is $k[x,y]$ linear so that more generally $d(pe) = p(de) = py$
for any polynomial $p \in k[x,y]$.&lt;/p&gt;

&lt;p&gt;If we tensor this (over $k[x,y]$) with $k[x,y] \big / y-mx$ (concentrated in degree $0$)
we get a new complex&lt;/p&gt;

\[\cdots 0 \to (k[x,y] \big / y-mx)e \to (k[x,y] \big / y-mx) \to 0\]

&lt;p&gt;where the interesting differential sends $pe \mapsto ey$ for any 
polynomial $p \in k[x,y] \big / y-mx$. Some simplification gives the
complex&lt;/p&gt;

\[0 \to k[x] \overset{- \cdot mx}{\longrightarrow} k[x] \to 0\]

&lt;p&gt;whose homology is &lt;em&gt;particularly&lt;/em&gt; easy to compute!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;$H_0 = k[x] \big / mx$&lt;/li&gt;
  &lt;li&gt;$H_1 = \text{Ker}(mx)$&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We note that $H_0$ recovers our previous computation, where when 
$m \neq 0$ we have $H_0 = k$ is the coordinate ring of the origin&lt;sup id=&quot;fnref:4&quot;&gt;&lt;a href=&quot;#fn:4&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; 
and when $m=0$ we have $H_0 = k[x]$ is the coordinate ring of the $x$-axis.&lt;/p&gt;

&lt;p&gt;However, now there’s more information stored in $H_1$! In the generic case 
where $m \neq 0$, the differential $mx$ is injective so that $H_1$ 
vanishes, and our old “classical” computation saw everything there is 
to see. It’s not until we get to the singular case where $m=0$ that we 
see $H_1 = \text{Ker}(mx)$ becomes the kernel of the $0$-map, which is 
all of $k[x]$!&lt;/p&gt;

&lt;p&gt;The version of “dimension” for chain complexes which is invariant under 
quasi-isomorphism is the &lt;a href=&quot;https://ncatlab.org/nlab/show/Euler+characteristic#of_a_chain_complex&quot;&gt;euler characteristic&lt;/a&gt;, and we see that now 
the euler characteristic is constantly $0$ for the whole family!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Next let’s look at some kind of “hidden smoothness” by examining the 
singular curve $y^2 =x^3$. Just for fun, let’s look at another family 
of (affine) curves $y^2 = x^3 + tx$, which are smooth whenever $t \neq 0$.
We’ll again show that in the derived world the singular fibre looks more 
like the smooth fibres.&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-computation-in-derived-ag/family.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;Smoothness away from the $t=0$ fibre is an easy computation, 
since we compute the jacobian of the defining equation $y^2 - x^3 - tx$ 
to be $\langle -3x^2 - t, 2y \rangle$, and for $t \neq 0$ this is never
$\langle 0, 0 \rangle$ for any point on our curve&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt; 
(We’ll work in characteristic 0 for safety). Of course, when $t=0$ 
$\langle -3x^2, 2y \rangle$ vanishes at origin, so that it has a singular 
point there.&lt;/p&gt;

&lt;p&gt;To see the singularity, let’s compute the tangent space at $(0,0)$ 
for every curve in this family. We’ll do that by computing the space 
of maps from the “walking tangent vector” 
$\text{Spec}(k[\epsilon] \big / \epsilon^2)$
to our curve which deform the map from $\text{Spec}(k)$ to our curve 
representing our point of interest $(0,0)$.&lt;/p&gt;

&lt;p&gt;Since everything is affine, we turn the arrows around and see we want to 
compute the space of algebra homs&lt;/p&gt;

\[k[x,y] \big / (y^2 - x^3 - tx) \to k[\epsilon] \big / \epsilon^2\]

&lt;p&gt;so that the composition with the map $k[\epsilon] \big / \epsilon^2 \to k$
sending $\epsilon \mapsto 0$ becomes the map 
$k[x,y] \big / (y^2 - x^3 - tx) \to k$ sending $x$ and $y$ to $0$.&lt;/p&gt;

&lt;p&gt;Since $k[x,y] \big / (y^2 - x^3 - tx)$ is a quotient of a free algebra, 
this is easy to do! We just consult the universal property, and we find 
a hom $k[x,y] \big / (y^2 - x^3 - tx) \to k[\epsilon] \big / \epsilon^2$
is just a choice of image $a+b\epsilon$ for $x$ and $c+d\epsilon$ for $y$,
so that the equation $y^2 - x^3 - tx$ is “preserved” in the sense that 
$(c+d\epsilon)^2 - (a+b\epsilon)^3 - t(a+b\epsilon)$ is $0$ in 
$k[\epsilon] \big / \epsilon^2$.&lt;/p&gt;

&lt;p&gt;Then the “deforming the origin” condition says that moreover when we set 
$\epsilon = 0$ our composite has to send $x$ and $y$ to $0$. Concretely 
that means we &lt;em&gt;must&lt;/em&gt; choose $a=c=0$ in the above expression, so that finally:&lt;/p&gt;

&lt;p&gt;The tangent space at the origin of $k[x,y] \big / (y^2 - x^3 - tx)$ 
is the space of pairs $(b,d)$ so that 
$(d \epsilon)^2 - (b \epsilon)^3 - t(b \epsilon) = 0$ in $k[\epsilon] \big / \epsilon^2$.
Of course, this condition holds if and only if $tb=0$, so that:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;When $t \neq 0$ the tangent space is the space of pairs $(b,d)$ with $b=0$,
  which is one dimensional.&lt;/li&gt;
  &lt;li&gt;When $t = 0$ the tangent space is the space of pairs $(b,d)$ with no 
  further conditions, which is &lt;em&gt;two&lt;/em&gt; dimensional!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since we’re looking at curve, we expect the tangent space to be $1$-dimensional,
and this is why we say there’s a &lt;em&gt;singularity&lt;/em&gt; at the origin for the curve 
$y^2 = x^3$….. But what happens in the derived world?&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Now we want to compute the &lt;em&gt;derived&lt;/em&gt; homspace. As before, a cofibrant 
replacement of our algebra is easy to find, it’s just 
$k[x,y,e]$ where $x$ and $y$ have degree $0$, $e$ has degree $1$ and and 
$de = y^2 - x^3 - tx$. Note that in our last example we were looking at 
quasifree $k[x,y]$-algebras, but now we just want $k$-algebras! So now 
this is the free graded $k$-algebra on &lt;em&gt;3&lt;/em&gt; generators $x,y,e$, 
and our chain complex is:&lt;/p&gt;

\[0 \to k[e] \overset{e \mapsto y^2 - x^3 - tx}{\longrightarrow} k[x,y] \to 0\]

&lt;p&gt;We want to compute the derived $\text{Hom}^\bullet(-,-)$ from this 
algebra to $k[\epsilon] \big / \epsilon^2$, concentrated in degree $0$.&lt;/p&gt;

&lt;p&gt;The degree $0$ maps are given by diagrams that &lt;em&gt;don’t need to commute&lt;/em&gt;&lt;sup id=&quot;fnref:5&quot;&gt;&lt;a href=&quot;#fn:5&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;!&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-computation-in-derived-ag/degree-0-maps.png&quot; width=&quot;75%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;Of course, such maps are given by pairs $(a + b \epsilon, c + d \epsilon)$,
which are the images of $x$ and $y$. As before, since we want the tangent space
at $(0,0)$ we need to restrict to those pairs with $a=c=0$ so that 
$\text{Hom}^0(k[x,y] \big / y^2 - x^3 - tx, \ k[\epsilon] \big / \epsilon^2) = k^2$,
generated by the pairs $(b,d)$.&lt;/p&gt;

&lt;p&gt;Next we look at degree $-1$ maps, which are given by diagrams&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-computation-in-derived-ag/degree-1-maps.png&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;which are given by a pair $r + s\epsilon$, the image of $e$. Again, these 
need to restrict to the $0$ map when we set $\epsilon=0$, so that $r=0$
and we compute
$\text{Hom}^{-1}(k[x,y] \big / y^2 - x^3 - tx, \ k[\epsilon] \big / \epsilon^2) = k$,
generated by $s$.&lt;/p&gt;

&lt;p&gt;So our hom complex is&lt;/p&gt;

\[0 \to \{(b\epsilon, d\epsilon)\} \to \{s \epsilon\} \to 0\]

&lt;p&gt;where the interesting differential sends degree $0$ to degree $-1$ 
and is given by 
$df = d_{k[\epsilon] \big / \epsilon^2} \circ f - f \circ d_{k[x,y] \big / y^2-x^3-tx}$.&lt;/p&gt;

&lt;p&gt;So if $f$ is the function sending $x \mapsto b \epsilon$ and $y \mapsto d \epsilon$
then we compute&lt;/p&gt;

\[(df)(e) = 0 \circ f - f(de) = -f(y^2-x^3-tx) = -tb \epsilon\]

&lt;p&gt;So phrased purely in terms of vector spaces we see our hom complex is
(living in degrees $0$ and $-1$):&lt;/p&gt;

\[0 \to 
\langle b, d \rangle 
\overset{(-t \ 0)}{\longrightarrow} 
\langle s \rangle
\to 0\]

&lt;p&gt;So we compute&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;$H^0 = \text{Ker} ((-t \ 0))$&lt;/li&gt;
  &lt;li&gt;$H^{-1} = \langle s \rangle \big / \text{Im}((-t \ 0))$&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When $t \neq 0$, our map is full rank so that $H^0$ are the pairs $(b,d)$ 
with $b=0$ – agreeing with the classical computation. Then $H^{-1} = 0$,
so again we learn nothing new in the smooth fibres.&lt;/p&gt;

&lt;p&gt;When $t=0$, however, our map is the $0$ map so that $H^0$ is the space of 
&lt;em&gt;all&lt;/em&gt; pairs $(b,d)$ is two dimensional – again, agreeing with the 
classical computation! But now we see the $H^{-1}$ term, which is $1$ 
dimensional, spanned by $s$.&lt;/p&gt;

&lt;p&gt;Again, in the derived world, we see the euler characteristic is constantly 
$1$ along the whole family!&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;There’s something a bit confusing here, since there seem to be two 
definitions of “homotopical smoothness”… On the one hand, in the 
noncommutative geometry literature, we say that a dga $A$ is “smooth” if
it’s &lt;a href=&quot;https://en.wikipedia.org/wiki/Perfect_complex&quot;&gt;perfect&lt;/a&gt; as a bimodule over itself. On the &lt;em&gt;other&lt;/em&gt; hand, though, 
I’ve also heard another notion of “homotopically smooth” where we say the 
cotangent complex is perfect. I guess it’s possible (likely?) that these 
should be closely related by some kind of &lt;a href=&quot;https://ncatlab.org/nlab/show/Hochschild-Kostant-Rosenberg+theorem&quot;&gt;HKR Theorem&lt;/a&gt;, but I don’t know 
the details.&lt;/p&gt;

&lt;p&gt;Anyways, I’m confused because we just computed that the curve 
$y^2 = x^3$ has a perfect tangent complex, which naively would make 
me think its cotangent complex is also perfect. But this shouldn’t be the 
case, since I also remember reading that a classical scheme is smooth
in the sense of noncommutative geometry if and only if it’s smooth classically,
which $y^2 = x^3$ obviously isn’t!&lt;/p&gt;

&lt;p&gt;Now that I’ve written these paragarphs and thought harder about things, I 
think I was too quick to move between perfectness of the tangent complex 
and perfectness of the cotangent complex, but I should probably compute
the cotangent complex and the bimodule resolution to be sure…&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Unfortunately, that will have to wait for another day! I’ve spent probably 
too many hours over the last few days writing this and my other posts
on lie algebroids. I have some kind of annoying hall algebra computations 
that are calling my name, and I have an idea about a new family of model 
categories which might be of interest… But checking that something is a 
model category is usually hard, so I’ve been dragging my feet a little bit.&lt;/p&gt;

&lt;p&gt;Plus, I need to start packing soon! I’m going to europe for a &lt;em&gt;bunch&lt;/em&gt; of 
conferences in a row! First a noncommutative geometry summer school 
hosted by the institute formerly known as MSRI, then CT of course, 
and lastly a cute representation theory conference in Bonn.&lt;/p&gt;

&lt;p&gt;I’m sure I’ll learn a bunch of stuff I’ll want to talk about, so we’ll 
chat soon ^_^. Take care, all!&lt;/p&gt;

&lt;hr /&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:2&quot;&gt;

      &lt;p&gt;In fact we know more! This $k$ is really $k[x,y] \big / (x=0,y=0)$,
so we know the intersection point is $(0,0)$. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot;&gt;

      &lt;p&gt;Indeed after tensoring we get&lt;/p&gt;

\[k[x,y,m] \big / (y, y-mx) \overset{- \cdot m}{\longrightarrow} 
k[x,y,m] \big / (y, y-mx) \longrightarrow
k[x,y,m] \big / (y, y-mx, m) \to 0\]

      &lt;p&gt;since here $k \cong k[m] \big / (m)$. But then we can simplify these to&lt;/p&gt;

\[k[x,m] \big / (mx) \overset{- \cdot m}{\longrightarrow} 
k[x,m] \big / (mx) \longrightarrow
k[x] \to 0\]

      &lt;p&gt;and indeed the leftmost map (multiplication by $m$) is &lt;em&gt;not&lt;/em&gt; injective! 
The kernel is generated by $x$. &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:4&quot;&gt;

      &lt;p&gt;Again, if you’re more careful with where this ring comes from, 
rather than just its isomorphism class, it’s $k[x,y] \big / (x,y)$,
the quotient by the maximal ideal $(x,y)$ which represents the origin. &lt;a href=&quot;#fnref:4&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:1&quot;&gt;

      &lt;p&gt;The only place it could possibly be $\langle 0, 0 \rangle$ is when 
$y=0$, but the points on our curve with this property satisfy 
$x^3-tx=y^2=0$ so that when $t \neq 0$ the solutions are 
$(x,y) = (0,0), \ (\sqrt{t}, 0), \ (-\sqrt{t}, 0)$. But at all three 
of these points $\langle -3x^2 - t, 2y \rangle \neq \langle 0, 0 \rangle$. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:5&quot;&gt;

      &lt;p&gt;This is a misconception that I used to have, and which basically everyone
I’ve talked to had at one point. Remember that dg-maps are &lt;em&gt;all&lt;/em&gt; 
graded maps! &lt;em&gt;Not&lt;/em&gt; just those which commute with the differential!&lt;/p&gt;

      &lt;p&gt;The key point is that the differential on $\text{Hom}^\bullet(A,B)$ 
sends a degree $n$ map $f$ to&lt;/p&gt;

\[df = d_B \circ f - (-1)^n f \circ d_A\]

      &lt;p&gt;so that $df = 0$ if and only if $d_B f = (-1)^n f d_A$ if and only if 
$f$ commutes with the differential (in the appropriate graded sense).&lt;/p&gt;

      &lt;p&gt;This means that, for instance, $H^0$ of the hom complex recovers 
from &lt;em&gt;all&lt;/em&gt; graded maps exactly $\text{Ker}(d) \big / \text{Im}(d)$, 
which are the maps commuting with $d$ modulo chain homotopy! &lt;a href=&quot;#fnref:5&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Sat, 21 Jun 2025 00:00:00 +0000</pubDate>
        <link>https://grossack.site/2025/06/21/explicit-computation-in-derived-ag.html</link>
        <guid isPermaLink="true">https://grossack.site/2025/06/21/explicit-computation-in-derived-ag.html</guid>
      </item>
      
    
      
      <item>
        <title>Explicitly Computing The Action Lie Algebroid for $SL_2(\mathbb{R}) \curvearrowright \mathbb{R}^2$</title>
        <description>&lt;p&gt;This is going to be a very classic post, where we’ll chat about a computation 
my friend &lt;a href=&quot;https://sites.google.com/view/shane-rankin&quot;&gt;Shane&lt;/a&gt; did earlier today. His research is largely about 
&lt;a href=&quot;https://en.wikipedia.org/wiki/Symplectic_manifold&quot;&gt;symplectic&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Lie_algebroid&quot;&gt;lie algebroids&lt;/a&gt;, 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 &lt;a href=&quot;https://arxiv.org/abs/1803.07676&quot;&gt;ideas of Pascaleff&lt;/a&gt;). Shane knows &lt;em&gt;much&lt;/em&gt; 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.&lt;/p&gt;

&lt;p&gt;Let’s get started!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;First, let’s recall what an &lt;a href=&quot;https://ncatlab.org/nlab/show/action+groupoid&quot;&gt;action groupoid&lt;/a&gt; is. This is one of the 
main examples I have in my head for lie groupoids, which is why Shane 
and I started here.&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;If $G$ is a group acting on a set $X$, then we get a groupoid:&lt;/p&gt;

\[G \times X \rightrightarrows X\]

  &lt;p&gt;here we think of $X$ as the set of objects and $G \times X$ as the 
set of arrows, where&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;the &lt;em&gt;source&lt;/em&gt; of $(g,x)$ is just $x$&lt;/li&gt;
    &lt;li&gt;the &lt;em&gt;target&lt;/em&gt; of $(g,x)$ is $g \cdot x$, using the action of $G$ on $X$&lt;/li&gt;
    &lt;li&gt;the &lt;em&gt;identity arrow&lt;/em&gt; at $x$ is $(1,x)$&lt;/li&gt;
    &lt;li&gt;if $(g,x) : x \to y$ and $(h,y) : y \to z$, then the &lt;em&gt;composite&lt;/em&gt; is 
  $(hg,x) : x \to z$&lt;/li&gt;
    &lt;li&gt;if $(g,x) : x \to y$ then its &lt;em&gt;inverse&lt;/em&gt; is $(g^{-1},y) : y \to x$.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;Action groupoids are interesting and important because they allow us to 
work with “stacky” nonhausdorff quotient spaces like &lt;a href=&quot;https://en.wikipedia.org/wiki/Orbifold&quot;&gt;orbifolds&lt;/a&gt; in 
a very fluent way. See, for instance, Moerdijk’s 
&lt;a href=&quot;http://arxiv.org/abs/math/0203100&quot;&gt;&lt;em&gt;Orbifolds as Groupoids: An Introduction&lt;/em&gt;&lt;/a&gt;, which shows how you can 
easily define covering spaces, vector bundles, principal bundles, etc. 
on orbifolds using the framework of groupoids.&lt;/p&gt;

&lt;p&gt;The point is that a groupoid $E \rightrightarrows X$ 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 &lt;em&gt;statement&lt;/em&gt; that two points are identified. Indeed, 
we think of $e \in E$ 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 $e_1$ and $e_2$ 
which both identify $x$ and $y$ 
(that is, $s(e_1) = s(e_2) = x$ and $t(e_1) = t(e_2) = y$). By keeping track 
of this extra information that “$x$ and $y$ are related in multiple ways” we’re 
able to work with a &lt;em&gt;smooth&lt;/em&gt; object (in the sense that both $E$ and $X$ 
are smooth) instead of the nonsmooth, or even nonhausdorff quotient $X/E$.&lt;/p&gt;

&lt;p&gt;Next, we know that a central part of the study of any lie group $G$ is 
its lie algebra $\mathfrak{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 &lt;a href=&quot;https://www-fourier.ujf-grenoble.fr/~panchish/ETE%20LAMA%202018-AP/lecturesZETAS2018/BumpD-Lie%20groups.pdf&quot;&gt;&lt;em&gt;Lie Groups&lt;/em&gt;&lt;/a&gt; or Stillwell’s 
excellent &lt;a href=&quot;https://link.springer.com/book/10.1007/978-0-387-78214-0&quot;&gt;&lt;em&gt;Naive Lie Theory&lt;/em&gt;&lt;/a&gt;. 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 &lt;em&gt;yes&lt;/em&gt;, but unlike 
the classical case, not every lie algebroid comes from a lie groupoid! We say 
that not every lie algebroid is &lt;em&gt;integrable&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This, finally, brings us to the computation that Shane and I did together:&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;As explicitly as possible, let’s compute the lie algebroid coming from 
the action groupoid of $SL_2(\mathbb{R}) \curvearrowright \mathbb{R}^2$.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Let’s start with a few definitions coming from 
Crainic, Fernandes, and Mărcuț’s &lt;a href=&quot;https://publish.illinois.edu/ruiloja/files/2023/09/gsm217.pdf&quot;&gt;Lectures on Poisson Geometry&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;A &lt;span class=&quot;defn&quot;&gt;Lie Algebroid&lt;/span&gt; on a manifold $M$ is a 
vector bundle $A \to M$ whose space of global sections $\Gamma(A)$ 
has a lie bracket $[-,-]_A$, equipped with an &lt;em&gt;anchor map&lt;/em&gt; $\rho : A \to TM$
to the tangent bundle of $M$ that’s compatible with the lie bracket in the 
sense that for $\alpha, \beta \in \Gamma(A)$ and $f \in C^\infty(M)$ we have&lt;/p&gt;

  &lt;p&gt;\([\alpha, f \cdot \beta]_A = f \cdot [\alpha,\beta]_A + (\rho(\alpha) f) \cdot \beta\)&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Then, given a lie groupoid $E \rightrightarrows M$ with source and target 
maps $s,t : E \to M$ and identity map $r : M \to E$, its lie algebroid is 
explicitly given by letting&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;$A = r^* \text{Ker}(dt)$, which is a vector bundle over $M$&lt;/li&gt;
  &lt;li&gt;$[-,-]_A$ coming from the usual bracket on $TE$ (since $\text{Ker}(dt)$ is 
  a subbundle of $TE$)&lt;/li&gt;
  &lt;li&gt;$\rho : A \to TM$ given by $ds$ (which is a map $TE \to TM$, thus restricts to 
  a map on $\text{Ker}(dt)$, and so gives a map on the pullback $A = r^* \text{Ker}(dt)$)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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&lt;/p&gt;

\[SL_2(\mathbb{R}) \times \mathbb{R}^2 \rightrightarrows \mathbb{R}^2\]

&lt;p&gt;where&lt;/p&gt;

\[s (M,v) = Mv\]

\[t (M,v) = v\]

\[r (v) = (\text{Id}, v)\]

\[(M_2, M_1 v) \circ (M_1, v) = (M_2 M_1, v)\]

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/sl2-action-algebroid-computation/stage-is-set.gif&quot; width=&quot;60%&quot; /&gt;
&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;First let’s make sense of $A = r^* \text{Ker}(dt)$.&lt;/p&gt;

&lt;p&gt;We know that $dt : T(SL_2(\mathbb{R}) \times \mathbb{R}^2) \to T\mathbb{R}^2$,
that is, $dt : TSL_2(\mathbb{R}) \times T\mathbb{R}^2 \to \mathbb{R}2$, and 
is the derivative of the map $t : (M,v) \mapsto v$. If we perturb a particular 
point $(M_0, v_0)$ to first order, say $(M_0 + \delta M, v_0 + \delta v)$, then 
projecting gives $v_0 + \delta v$, which gives $\delta v$ to first order. 
So the kernel of this map are all the pairs $(\delta M, \delta v)$ with 
$\delta v = 0$, and we learn&lt;/p&gt;

\[\text{Ker}(dt) = TSL_2(\mathbb{R}) \times \mathbb{R}^2\]

&lt;p&gt;where we’re identifying the zero section of $T\mathbb{R}^2$ with 
$\mathbb{R}^2$ itself.&lt;/p&gt;

&lt;p&gt;Now to get $A$ we’re supposed to apply $r^*$ to this.&lt;/p&gt;

&lt;p&gt;By definition, this means the fibre of $r^* \text{Ker}(dt)$ above the point 
$v$ is supposed to be the fibre of $\text{Ker}(dt)$ over $r(v) = (\text{id},v)$.
But this fibre is \(T_{\text{id}}SL_2(\mathbb{R}) \times \{v\}\), so that the 
pullback is a trivial bundle with fibre $\mathfrak{sl}_2(\mathbb{R})$:&lt;/p&gt;

\[A = \mathfrak{sl}_2(\mathbb{R}) \times \mathbb{R}^2\]

&lt;p&gt;viewed as a trivial fibre bundle over $\mathbb{R}^2$. 
(Recall that the lie algebra $\mathfrak{sl}_2(\mathbb{R})$ is 
&lt;em&gt;defined to be&lt;/em&gt; the tangent space of $SL_2(\mathbb{R})$ at the identity).&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Next we want to compute the bracket \([-,-]_A\). Thankfully this is easy, 
since it’s the restriction of the bracket on $TSL_2(\mathbb{R}) \times T\mathbb{R}^2$.
Of course, an element of $A$ comes from $T_\text{id}SL_2(\mathbb{R}) = \mathfrak{sl}_2(\mathbb{R})$
and the zero section of $T\mathbb{R}^2$, so we get the usual lie bracket on 
$\mathfrak{sl}_2(\mathbb{R})$ in the first component and the restriction of 
the bracket on $T\mathbb{R}^2$ 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 $\mathfrak{sl}_2(\mathbb{R}) \times \mathbb{R}^2$ 
we see the bracket is just the usual bracket on $\mathfrak{sl}_2(\mathbb{R})$ 
taken fibrewise.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;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 $SL_2(\mathbb{R})$ near $\text{id}$!&lt;/p&gt;

&lt;p&gt;In hindsight for a $k$ dimensional submanifold of $\mathbb{R}^n$ the idea is 
obvious: Just project onto some well-chosen $k$-subset of the usual 
coordinate directions! I &lt;em&gt;especially&lt;/em&gt; wish it were easier to find some examples
of this by googling, so I’m breaking it off into a &lt;a href=&quot;/2025/06/20/explicit-charts-for-levelsets.html&quot;&gt;sister blog post&lt;/a&gt;
which will hopefully show up earlier in search results than this one will.&lt;/p&gt;

&lt;p&gt;The punchline for us was that $SL_2(\mathbb{R})$ is defined to be&lt;/p&gt;

\[\left \{ 
\begin{pmatrix} a &amp;amp; b \\ c &amp;amp; d \end{pmatrix} \in \mathbb{R}^4
\ \middle | \ 
ad-bc = 1
\right \}\]

&lt;p&gt;So a chart near a point $(a_0, b_0, c_0, d_0)$
can be computed by looking at the jacobian of 
$f : \mathbb{R}^4 \to \mathbb{R}$ with $f(a,b,c,d) = ad-bc$ 
evaluated at the matrix of interest $(a_0, b_0, c_0, d_0)$.
Since $1$ is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Submersion_(mathematics)&quot;&gt;regular value&lt;/a&gt; for $f$, the jacobian will 
have at least one nonzero entry, and by locally inverting that 
coordinate we’ll get our desired chart!&lt;/p&gt;

&lt;p&gt;Since we want a chart near the identity, we compute the jacobian
of $ad-bc$ at the identity to be&lt;/p&gt;

\[\begin{aligned}
\left . J f \right |_{\begin{pmatrix} 1 &amp;amp; 0 \\ 0 &amp;amp; 1 \end{pmatrix}}
&amp;amp;= 
\left . 
\langle d, -c, -b, a \rangle 
\right |_{\begin{pmatrix} 1 &amp;amp; 0 \\ 0 &amp;amp; 1 \end{pmatrix}} \\
&amp;amp;= \langle 1, 0, 0, 1 \rangle
\end{aligned}\]

&lt;p&gt;We see that $\frac{\partial f}{\partial a} \neq 0$, so that 
locally near \(\begin{pmatrix} 1 &amp;amp; 0 \\ 0 &amp;amp; 1 \end{pmatrix}\)
the manifold looks like&lt;/p&gt;

\[\left \{ 
\begin{pmatrix}
a &amp;amp; b \\
c &amp;amp; \frac{1 + bc}{a}
\end{pmatrix}
\right \}
\cong_\text{diffeo}
\{ (a,b,c) \mid a \neq 0 \} \subseteq \mathbb{R}^3\]

&lt;p&gt;and this is our desired local chart!&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Now… Why were we doing this? We wanted to compute the anchor map 
from $A = r^* \text{Ker}(dt)$ to the tangent bundle $T\mathbb{R}^2$.
This is supposed to be $ds$ (restricted to this subbundle).&lt;/p&gt;

&lt;p&gt;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 &lt;em&gt;very very explicit&lt;/em&gt; version of this computation, 
take a look at this footnote&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Well 
$s : SL_2(\mathbb{R}) \times \mathbb{R}^2 \to \mathbb{R}^2$ 
is the map sending $(M,v) \mapsto Mv$.&lt;/p&gt;

&lt;p&gt;Explicitly, if we fix an $(x,y)$, this is the map&lt;/p&gt;

\[\begin{pmatrix} a &amp;amp; b \\ c &amp;amp; d \end{pmatrix}
\mapsto
(ax+by, cx+dy)\]

&lt;p&gt;From the previous discussion, we can write this as a map in local charts
\(\{(a,b,c) \in \mathbb{R}^3 \mid a \neq 0 \} \to \mathbb{R}^2\)
given by&lt;/p&gt;

\[s : (a,b,c) \mapsto \left ( ax+by, cx+ \frac{1+bc}{a}y \right )\]

&lt;p&gt;and now it’s very easy to compute $ds$. It’s just the jacobian&lt;/p&gt;

\[\begin{pmatrix}
x &amp;amp; y &amp;amp; 0 \\ 
\frac{-(1+bc)}{a^2}y &amp;amp; \frac{c}{a} y &amp;amp; x + \frac{b}{a} y 
\end{pmatrix}\]

&lt;p&gt;but we only care about the value at the identity, since $A$ comes from pulling 
back this bundle along $r : v \mapsto (\text{id},v)$. So evaluating at 
$(a,b,c) = (1,0,0)$ we find our anchor map is&lt;/p&gt;

\[\begin{pmatrix}
x &amp;amp; y &amp;amp; 0 \\ -y &amp;amp; 0 &amp;amp; x
\end{pmatrix}\]

&lt;p&gt;Moreover, by differentiating 
\(\begin{pmatrix} a &amp;amp; b \\ c &amp;amp; \frac{1+bc}{a} \end{pmatrix}\)
in the $a$, $b$, and $c$ directions and evaluating at $(1,0,0)$ we 
see that the basis $(\partial_a, \partial_b, \partial_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 $SL_2(\mathbb{R})$:&lt;/p&gt;

\[\partial_a \mapsto \begin{pmatrix} 1 &amp;amp; 0 \\ 0 &amp;amp; -1 \end{pmatrix}
\quad \quad
\partial_b \mapsto \begin{pmatrix} 0 &amp;amp; 1 \\ 0 &amp;amp; 0 \end{pmatrix}
\quad \quad
\partial_c \mapsto \begin{pmatrix} 0 &amp;amp; 0 \\ 1 &amp;amp; 0 \end{pmatrix}\]

&lt;p&gt;which we &lt;a href=&quot;https://en.wikipedia.org/wiki/Special_linear_Lie_algebra#Representation_theory&quot;&gt;recognize&lt;/a&gt; as $H$, $E$, and $F$ respectively.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;But this is great! Now we know that the lie algebroid of the 
action groupoid of $SL_2(\mathbb{R}) \curvearrowright \mathbb{R}^2$ 
is given by the trivial bundle 
$\mathfrak{sl}_2(\mathbb{R}) \times \mathbb{R}^2 \to \mathbb{R}^2$
with the usual bracket on $\mathfrak{sl}_2$ taken fibrewise, and 
the anchor map $\rho : \mathfrak{sl}_2 \times \mathbb{R}^2 \to T\mathbb{R}^2$
sending (in the fibre over $(x,y)$)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;$\rho_{(x,y)}(H) = (x, -y)$&lt;/li&gt;
  &lt;li&gt;$\rho_{(x,y)}(E) = (y, 0)$&lt;/li&gt;
  &lt;li&gt;$\rho_{(x,y)}(F) = (0, x)$&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(which is the &lt;em&gt;standard representation&lt;/em&gt; of $\mathfrak{sl}_2(\mathbb{R})$ on 
$\mathbb{R}^2$, viewed in a kind of bundle-y way.)&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Also, sorry for not spending a lot of time motivating lie algebroids or 
actually &lt;em&gt;doing&lt;/em&gt; 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.&lt;/p&gt;

&lt;p&gt;Stay safe, and if you’re anywhere like Riverside try to stay cool!&lt;/p&gt;

&lt;hr /&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:2&quot;&gt;

      &lt;p&gt;If you want to be super duper explicit, our function $s$ sends 
$SL_2(\mathbb{R}) \times \mathbb{R}^2 \to \mathbb{R}^2$, which 
in a chart around the identity looks like the function&lt;/p&gt;

\[\{(a,b,c) \in \mathbb{R}^3 \mid a \neq 0 \} \times \mathbb{R}^2 \to \mathbb{R}^2\]

      &lt;p&gt;given by&lt;/p&gt;

\[(a,b,c,x,y) \mapsto \left ( ax+by, cx+ \frac{1+bc}{a}y \right )\]

      &lt;p&gt;now we differentiate to get 
$ds : TSL_2(\mathbb{R}) \times T\mathbb{R}^2 \to T\mathbb{R}^2$
sending $(a,b,c,\delta a,\delta b,\delta c, x, y, \delta x, \delta y)$
to $(ax+by, cx+\frac{1+bc}{a}y, ?, ?)$&lt;/p&gt;

      &lt;p&gt;Where the two $?$s are the output of matrix multiplication against 
the jacobian of $s$:&lt;/p&gt;

\[\begin{pmatrix}
x &amp;amp; y &amp;amp; 0 &amp;amp; a &amp;amp; b \\ 
\frac{-(1+bc)}{a^2}y &amp;amp; \frac{c}{a} y &amp;amp; x + \frac{b}{a} y &amp;amp; c &amp;amp; \frac{1+bc}{a}
\end{pmatrix}
\begin{pmatrix} 
\delta a \\ \delta b \\ \delta c \\ \delta x \\ \delta y
\end{pmatrix}\]

      &lt;p&gt;Then we’re supposed to restrict this to $\text{Ker}(dt)$, which are the 
points $(a,b,c, \delta a, \delta b, \delta c, x, y, 0, 0)$. 
Since $\delta x = \delta 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.&lt;/p&gt;

      &lt;p&gt;Now, as in the main body, we pull this bundle back along 
$r : v \mapsto (\text{id},v)$,
which in our chart is $(x,y) \mapsto (1,0,0,x,y)$ so that our bundle $A$ 
(with its structure map to $\mathbb{R}^2$) is&lt;/p&gt;

\[A = \{(1,0,0, \delta a, \delta b, \delta c, x, y, 0, 0)\} \to \{(x,y)\} = \mathbb{R}^2\]

      &lt;p&gt;which, in the main text, we identify with 
\(\mathfrak{sl}_2 \times \mathbb{R}^2 = \{(\delta a, \delta b, \delta c, x, y)\} 
\to \{(x,y)\} = \mathbb{R}^2\)&lt;/p&gt;

      &lt;p&gt;so we learn that our anchor map $ds$ is the restriction of the above map 
$ds$ to this pulled back subbundle, and sends&lt;/p&gt;

\[(\delta a, \delta b, \delta c, x, y) \mapsto (x,y,?,?)\]

      &lt;p&gt;where, again the $?$s are the result of the matrix multiplication&lt;/p&gt;

\[\begin{pmatrix}
x &amp;amp; y &amp;amp; 0 \\ -y &amp;amp; 0 &amp;amp; x
\end{pmatrix}
\begin{pmatrix}
\delta a \\ \delta b \\ \delta c
\end{pmatrix}\]

      &lt;p&gt;which brings us back to the result of the main body.&lt;/p&gt;

      &lt;p&gt;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. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Fri, 20 Jun 2025 00:00:00 +0000</pubDate>
        <link>https://grossack.site/2025/06/20/sl2-action-algebroid-computation.html</link>
        <guid isPermaLink="true">https://grossack.site/2025/06/20/sl2-action-algebroid-computation.html</guid>
      </item>
      
    
      
      <item>
        <title>How to Explicitly Compute Charts for a Levelset Submanifold</title>
        <description>&lt;p&gt;While doing a computation with my friend &lt;a href=&quot;https://sites.google.com/view/shane-rankin&quot;&gt;Shane&lt;/a&gt; the other day, 
we realized we needed to explicitly compute a local chart near the 
identity of $SL_2(\mathbb{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 &lt;em&gt;actually&lt;/em&gt; interested in, 
you can check out the main post &lt;a href=&quot;/2025/06/20/sl2-action-algebroid-computation.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Ok, let’s hop right in! Say you have a $2$-manifold in $\mathbb{R}^3$ 
to start&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-charts-for-levelsets/example1.jpg&quot; width=&quot;75%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;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 $\mathbb{R}^2$) while the projections 
onto the $yz$ and $xz$ planes are &lt;em&gt;not&lt;/em&gt; open in $\mathbb{R}^2$!
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.&lt;/p&gt;

&lt;p&gt;For a more computational example, let’s try the hyperboloid 
$x^2 + y^2 - z^2 = 1$, and let’s see what happens near a few points.&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-charts-for-levelsets/hyperboloid.jpg&quot; width=&quot;75%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;The tangent plane at a point is controlled by the jacobian of the 
defining equation, which for us is $\langle 2x, 2y, -2z \rangle$.&lt;/p&gt;

&lt;p&gt;This gives us three (disconnected) charts: \(\{2x \neq 0\}\), \(\{2y \neq 0\}\), and 
\(\{-2z \neq 0\}\), which we can see visually here (and we also drop the unnecessary scalars):&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-charts-for-levelsets/hyperboloid-x-chart.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-charts-for-levelsets/hyperboloid-y-chart.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-charts-for-levelsets/hyperboloid-z-chart.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;These turn into 6 honest-to-goodness charts where we turn the disconnected 
condition \(\{x \neq 0\}\) into the pair of connected conditions 
\(\{x \gt 0\}\) and \(\{x \lt 0\}\). Indeed it’s easy to see that 
the 6 connected components in the above pictures are all diffeomorphic 
to an open subset of $\mathbb{R}^2$, and we can see this algebraically 
by &lt;em&gt;projecting&lt;/em&gt; onto the plane avoiding the nonzero coordinate.&lt;/p&gt;

&lt;p&gt;On \(\{x \gt 0 \}\), for example, we have an open set of the $yz$-plane,
shown here in orange:&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-charts-for-levelsets/hyperboloid-x-pos-chart.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;Algebraically, we compute this chart by noting on \(\{x \gt 0 \}\), we can 
solve for $x$ and (using the positive square root, since $x \gt 0$) 
write our surface locally as&lt;/p&gt;

\[\{ (+\sqrt{1+z^2-y^2}, y, z) \mid z^2 - y^2 \gt -1 \}\]

&lt;p&gt;which is diffeomorphic in the obvious way to its projection onto the $yz$-plane&lt;/p&gt;

\[\{ (y,z) \mid z^2 - y^2 \gt -1 \}\]

&lt;p&gt;so this is one of our charts!&lt;/p&gt;

&lt;p&gt;Similarly, we can look at \(\{z \gt 0\}\), solve for $z$ and locally write 
our surface as&lt;/p&gt;

\[\{ (x,y,+\sqrt{x^2+y^2-1}) \mid x^2 + y^2 \gt 1 \}\]

&lt;p&gt;which is diffeomorphic to \(\{ (x,y) \mid x^2 + y^2 \gt 1 \}\) – another chart.&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-charts-for-levelsets/hyperboloid-z-pos-chart.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;On the intersection of these charts, \(\{x, z \gt 0 \}\), it’s now easy to 
write down our transition maps (if one is so inclined):&lt;/p&gt;

&lt;p style=&quot;text-align:center;&quot;&gt;
&lt;img src=&quot;/assets/images/explicit-charts-for-levelsets/transition-map.jpg&quot; width=&quot;50%&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;Here our charts are the diffeomorphisms&lt;/p&gt;

\[\{(+\sqrt{1+z^2-y^2},y,z) \mid z^2-y^2 \gt -1, \ z \gt 0 \} 
\to 
\{(y,z) \mid z^2-y^2 \gt -1, \ z \gt 0 \}\]

\[\{(x,y,+\sqrt{x^2+y^2-1}) \mid x^2+y^2 \gt 1, \ x \gt 0 \}
\to
\{(x,y) \mid x^2+y^2 \gt 1, \ x \gt 0 \}\]

&lt;p&gt;so it’s easy to compose them to see our transition maps between these 
charts are&lt;/p&gt;

\[(y,z) \mapsto (+\sqrt{1+z^2-y^2},y) : 
\{(y,z) \mid z^2-y^2 \gt -1, \ z \gt 0 \}
\to
\{(x,y) \mid x^2+y^2 \gt 1, \ x \gt 0 \}\]

\[(x,y) \mapsto (y,+\sqrt{x^2+y^2-1}) : 
\{(x,y) \mid x^2+y^2 \gt 1, \ x \gt 0 \}
\to
\{(y,z) \mid z^2-y^2 \gt -1, \ z \gt 0 \}\]

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;As a (fun?) exercise, compute the \(\{y \gt 0 \}\) chart, 
and the other two transition maps.&lt;/p&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;For another example, let’s take a look at $SL_2(\mathbb{R})$, 
which is defined to be 
\(\left \{ \begin{pmatrix} a &amp;amp; b \\ c &amp;amp; d \end{pmatrix} \mid ad-bc = 1 \right \}
\subseteq \mathbb{R}^4\).&lt;/p&gt;

&lt;p&gt;Then the jacobian of our defining map is $\langle d, -c, -b, a \rangle$, 
and we get charts corresponding to \(\{d \neq 0 \}\), 
\(\{-c \neq 0 \}\), \(\{ -b \neq 0 \}\), and \(\{ a \neq 0 \}\).&lt;/p&gt;

&lt;p&gt;In the \(\{d \neq 0\}\) chart, for instance, our defining equation looks like 
$a = \frac{1+bc}{d}$, so that $SL_2(\mathbb{R})$ looks locally like&lt;/p&gt;

\[\left \{ \begin{pmatrix} \frac{1+bc}{d} &amp;amp; b \\ c &amp;amp; d \end{pmatrix} 
\ \middle | \ 
d \neq 0
\right \}
\cong_\text{diffeo}
\{ (b,c,d) \in \mathbb{R}^3 \mid d \neq 0 \}\]

&lt;p&gt;In the &lt;a href=&quot;/2025/06/20/sl2-action-algebroid-computation.html&quot;&gt;main post&lt;/a&gt; you can see how my friend Shane and I used this 
to compute the anchor map for a certain lie algebroid.&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;Again, it makes a nice exercise to explicitly write out the various 
charts and transition maps&lt;/p&gt;
&lt;/div&gt;

&lt;hr /&gt;

&lt;p&gt;What about a codimension 2 example?&lt;/p&gt;

&lt;p&gt;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&lt;/p&gt;

\[\left \{ (x,y,z) 
\ \middle | \ 
\begin{array}{c} x^2 + y^2 - z^2 = 1 \\ xyz = 1 \end{array}
\right \}\]

&lt;p&gt;This is the levelset of the map $\mathbb{R}^3 \to \mathbb{R}^2$ 
sending $(x,y,z) \mapsto (x^2 + y^2 - z^2, \ xyz)$ 
taking value $(1,1)$. So we compute the jacobian&lt;/p&gt;

\[\begin{pmatrix} 2x &amp;amp; 2y &amp;amp; -2z \\ yz &amp;amp; xz &amp;amp; xy \end{pmatrix}\]

&lt;p&gt;and our charts are all the ways this matrix can have full rank.
These conditions are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;$2x \neq 0$ and $xz \neq 0$&lt;/li&gt;
  &lt;li&gt;$2x \neq 0$ and $xy \neq 0$&lt;/li&gt;
  &lt;li&gt;$2y \neq 0$ and $yz \neq 0$&lt;/li&gt;
  &lt;li&gt;$2y \neq 0$ and $xy \neq 0$&lt;/li&gt;
  &lt;li&gt;$-2z \neq 0$ and $yz \neq 0$&lt;/li&gt;
  &lt;li&gt;$-2z \neq 0$ and $xz \neq 0$&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If we look at the \(\{2x \neq 0, \ xz \neq 0\}\) chart, we can ask 
sage to solve for $x$ and $z$ as functions of $y$:&lt;/p&gt;

&lt;div class=&quot;linked_auto&quot;&gt;
&lt;script type=&quot;text/x-sage&quot;&gt;
x,y,z = var(&apos;x,y,z&apos;)
solns = solve([x^2 + y^2 + z^2 == 1, x*y*z == 1], [x,z])
for soln in solns:
    show(soln)
&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;So as in the previous hyperboloid example, we need to break this 
into &lt;em&gt;four&lt;/em&gt; charts, depending on whether $x$ and $z$ are positive or negative.&lt;/p&gt;

&lt;p&gt;Following the sage computation, in the \(\{x \gt 0, z \gt 0\}\) chart, 
we can write our curve as&lt;/p&gt;

\[\left ( 
\sqrt{\frac{1}{2}} \sqrt{-\frac{y^{3} - y - \sqrt{y^{6} - 2 \, y^{4} + y^{2} - 4}}{y}},
\ y, \ 
\frac{2 \, \sqrt{\frac{1}{2}}}{y \sqrt{-\frac{y^{3} - y - \sqrt{y^{6} - 2 \, y^{4} + y^{2} - 4}}{y}}}
\right )\]

&lt;p&gt;which, by projecting out the $y$ coordinate, is diffeomorphic to the open 
subset of $\mathbb{R}$ where all these square roots are defined.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;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 &lt;em&gt;do some computations&lt;/em&gt;. Talk soon!&lt;/p&gt;

&lt;hr /&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot;&gt;

      &lt;p&gt;That’s right. I finally bought an ipad. This has already dramatically 
improved my paper-reading experience (I love you &lt;a href=&quot;https://www.zotero.org/&quot;&gt;Zotero&lt;/a&gt;) and my 
remote teaching experience, and I’m &lt;em&gt;so&lt;/em&gt; glad that the example-drawing
experience is shaping up to be everything I wanted it to be as well! &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Fri, 20 Jun 2025 00:00:00 +0000</pubDate>
        <link>https://grossack.site/2025/06/20/explicit-charts-for-levelsets.html</link>
        <guid isPermaLink="true">https://grossack.site/2025/06/20/explicit-charts-for-levelsets.html</guid>
      </item>
      
    
      
      <item>
        <title>A Proof that there&apos;s No Constructive Proof of the Intermediate Value Theorem</title>
        <description>&lt;p&gt;The other day my friend &lt;a href=&quot;https://sites.google.com/ucr.edu/lucas-salim&quot;&gt;Lucas Salim&lt;/a&gt; was asking me some questions about 
categorical logic and constructive math, and he mentioned he’d never seen a 
proof that there’s no constructive proof of the intermediate value theorem before. 
I showed him the usual counterexample, and since my recent &lt;a href=&quot;/2025/06/04/an-empty-product-of-nonempty-sets&quot;&gt;blog post&lt;/a&gt; 
about choice was so quick to write I decided to quickly write up a post 
about this too, since I remember being confused by it back when I was first 
learning it.&lt;/p&gt;

&lt;p&gt;The key fact is &lt;span class=&quot;defn&quot;&gt;Soundness and Completeness&lt;/span&gt; of 
the topos semantics of constructive logic. This says that 
there is a way of interpreting the usual syntax of mathematics into a topos 
in such a way that&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;(Soundness) If you can constructively prove a statement, then its 
 interpretation in every topos is true&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;(Completeness) If a statement is interpreted as true in every 
 (elementary&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;) topos, then there must exist a constructive proof&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For a proof, see Chapter II of Lambek 
and Scott’s &lt;a href=&quot;https://raw.githubusercontent.com/Mzk-Levi/texts/master/Lambek%20J.%2C%20Scott%20P.J.%20Introduction%20to%20Higher%20Order%20Categorical%20Logic.pdf&quot;&gt;&lt;em&gt;Introduction to Higher Order Categorical Logic&lt;/em&gt;&lt;/a&gt; or 
Section D4.3 of &lt;a href=&quot;https://global.oup.com/academic/product/sketches-of-an-elephant-9780198534259&quot;&gt;The Elephant&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This means that as long as we’re careful to avoid choice and excluded 
middle, anything we prove will be true &lt;em&gt;when interpreted in any topos we like&lt;/em&gt;!
Then there’s a mechanical procedure that lets us convert this interpretation 
into a corresponding statement in the “real world&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;”, and this gives us 
lots of “theorems for free” for each individual constructive theorem! 
A nice case study is given by the &lt;a href=&quot;https://en.wikipedia.org/wiki/Stone%E2%80%93Weierstrass_theorem&quot;&gt;Weierstrass Approximation Theorem&lt;/a&gt;,
which I &lt;a href=&quot;/2022/02/16/talk-practical-topos-theory.html&quot;&gt;gave a talk on&lt;/a&gt; years ago&lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. Since this theorem is 
constructively provable&lt;sup id=&quot;fnref:4&quot;&gt;&lt;a href=&quot;#fn:4&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;…&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;by interpreting it in the &lt;a href=&quot;https://ncatlab.org/nlab/show/effective+topos&quot;&gt;effective topos&lt;/a&gt; we learn there’s a 
  computer program $\mathtt{Approx}$ which takes as input 
  a function $f : [0,1] \to \mathbb{R}$&lt;sup id=&quot;fnref:5&quot;&gt;&lt;a href=&quot;#fn:5&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;5&lt;/a&gt;&lt;/sup&gt; and an $\epsilon \gt 0$ 
  and outputs the coefficients of a polynomial approximating $f$.&lt;/li&gt;
  &lt;li&gt;by interpreting it in a sheaf topos $\text{Sh}(\Theta)$ we learn 
  that for any continuous &lt;em&gt;family&lt;/em&gt; of functions 
  $f_\theta(x) : \Theta \times [0,1] \to \mathbb{R}$, there’s locally&lt;sup id=&quot;fnref:6&quot;&gt;&lt;a href=&quot;#fn:6&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;6&lt;/a&gt;&lt;/sup&gt; 
  a polynomial $p_\theta(x)$ whose coefficients are continuous functions of 
  $\theta$ which approximates each $f_\theta(x)$&lt;/li&gt;
  &lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re interested in learning how to &lt;em&gt;externalize&lt;/em&gt; a statement in a 
topos to a statement about the real world, I highly recommend 
Ingo Blechschmidt’s excellent paper 
&lt;a href=&quot;http://arxiv.org/abs/2204.00948&quot;&gt;&lt;em&gt;Exploring mathematical objects from custom-tailored mathematical universes&lt;/em&gt;&lt;/a&gt;
which gives a high level overview of the topic, while still giving enough 
details to let you externalize a few statements of your own!&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;But where were we? The usual proofs of the intermediate value theorem
aren’t constructive. See, for instance, Bauer’s 
&lt;a href=&quot;https://www.ams.org/journals/bull/2017-54-03/S0273-0979-2016-01556-4/S0273-0979-2016-01556-4.pdf&quot;&gt;&lt;em&gt;Five Stages of Accepting Constructive Mathematics&lt;/em&gt;&lt;/a&gt; 
or Section 1 of Taylor’s &lt;a href=&quot;https://www.paultaylor.eu/ASD/lamcra/lamcra.pdf&quot;&gt;&lt;em&gt;A Lambda Calculus for Real Analysis&lt;/em&gt;&lt;/a&gt; 
for a discussion of how some common proofs fail (as well as great lists of 
constructively provable alternatives). Since the usual proofs seem to fail, 
we might guess that IVT is not provable constructively… but how could we prove this?&lt;/p&gt;

&lt;p&gt;Say, towards a contradiction, that there &lt;em&gt;were&lt;/em&gt; a 
constructive proof of the intermediate value theorem. Then it would 
be true in every topos, and thus its various externalizations would 
all be true in the real world. So to show that there &lt;em&gt;isn’t&lt;/em&gt; a 
constructive proof, all we have to do is find a topos which doesn’t 
think it’s true!&lt;/p&gt;

&lt;p&gt;Following &lt;em&gt;many&lt;/em&gt; who came before me&lt;sup id=&quot;fnref:7&quot;&gt;&lt;a href=&quot;#fn:7&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;, we’re going to use the topos of 
sheaves on $(-1,1)$. It’s been a minute since we’ve 
externalized a statement together, so let’s do it now!&lt;/p&gt;

&lt;p&gt;In full symbolic glory&lt;sup id=&quot;fnref:8&quot;&gt;&lt;a href=&quot;#fn:8&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;, the IVT says&lt;/p&gt;

\[\forall f : \mathbb{R} \to \mathbb{R} . 
\forall a,b \in \mathbb{R} . 
(a \lt b \land f(a) \lt 0 \land f(b) \gt 0) 
\to
(\exists x \in \mathbb{R} . a \lt x \lt b \land f(x) = 0)\]

&lt;p&gt;So now using the &lt;em&gt;forcing language&lt;/em&gt; for $\text{Sh}((-1,1))$
(check out Theorem $1$ in Chapter VI.7 of Mac Lane and Moerdijk’s 
&lt;em&gt;Sheaves in Geometry and Logic&lt;/em&gt; if you’re not sure what this means),
we compute:&lt;/p&gt;

\[1 \Vdash 
\forall f : \mathbb{R} \to \mathbb{R} . 
\forall a,b \in \mathbb{R} . 
(a \lt b \land f(a) \lt 0 \land f(b) \gt 0) 
\to
(\exists x \in \mathbb{R} . a \lt x \lt b \land f(x) = 0)\]

&lt;p&gt;We cash out the universal quantifiers to get
“for every open $U \subseteq (-1,1)$, and for every continuous
$f : U \times \mathbb{R} \to \mathbb{R}$, $a : U \to \mathbb{R}$, $b : U \to \mathbb{R}$,
we have…”&lt;/p&gt;

\[U \Vdash 
(a \lt b \land f(a) \lt 0 \land f(b) \gt 0) 
\to
(\exists x \in \mathbb{R} . a \lt x \lt b \land f(x) = 0)\]

&lt;p&gt;Next, cashing out the implication gives
“for every open $U \subseteq (-1,1)$, and for every continuous
$f : U \times \mathbb{R} \to \mathbb{R}$, $a : U \to \mathbb{R}$, $b : U \to \mathbb{R}$,
so that for all $t \in U$ we know $a(t) \lt b(t)$, $f(t,a(t)) \lt 0$, and $f(t,b(t)) \gt 0$,
we have…”&lt;/p&gt;

\[U \Vdash \exists x \in \mathbb{R} . a \lt x \lt b \land f(x) = 0\]

&lt;p&gt;Finally, cashing out the existential quantifer and the stuff inside it 
we get the external statement:&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;The IVT is true inside $\text{Sh}((-1,1))$ if and only if the following 
is true externally:&lt;/p&gt;

  &lt;p&gt;For every open $U \subseteq (-1,1)$ &lt;br /&gt;
for every continuous
$f : U \times \mathbb{R} \to \mathbb{R}$, $a : U \to \mathbb{R}$, $b : U \to \mathbb{R}$ &lt;br /&gt;
so that for all $t \in U$ we know 
$a(t) \lt b(t)$, $f(t,a(t)) \lt 0$, and $f(t,b(t)) \gt 0$ &lt;br /&gt;
there is an open cover \(\{U_\alpha\}\) covering $U$ with
continuous functions $x_\alpha : U_\alpha \to \mathbb{R}$ so that &lt;br /&gt;
for all $t \in U_\alpha$, $a(t) \lt x_\alpha(t) \lt b(t)$ and $f(t,x_\alpha(t)) = 0$.&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;What a mouthful!&lt;/p&gt;

&lt;p&gt;Of course, we’re trying to prove this &lt;em&gt;fails&lt;/em&gt;, so all we have to do is 
find an open set $U$ and functions $f$, $a$, and $b$ satisfying the 
assumptions so that the conclusion fails. We’ll choose $U = (-1,1)$ to be the 
whole set, $a(t) = -2$ and $b(t) = 2$ to be constant functions, and 
$f(t,x) : (-1,1) \times \mathbb{R} \to \mathbb{R}$ to be&lt;/p&gt;

\[f(t,x) = \max(\min(t+x+1, t), t+x-1)\]

&lt;p&gt;Then we see that, indeed, $f(t,a) \lt 0$ and $f(t,b) \gt 0$ for all 
$t \in (-1,1)$, so to prove the IVT fails in this topos we just need 
to show there’s no open cover on which $x(t)$ with $f(t,x(t)) = 0$ 
can be chosen continuously.&lt;/p&gt;

&lt;p&gt;The idea is that no matter how hard we try, $x(t)$ cannot be continuous 
in a neighborhood of $t=0$. Indeed, here’s an animation showing how 
$x(t)$ changes as we change $t$:&lt;/p&gt;

&lt;div class=&quot;auto&quot;&gt;
&lt;script type=&quot;text/x-sage&quot;&gt;
x,t = var(&apos;x,t&apos;)

f(t,x) = max_symbolic(min_symbolic(t+x+1, t), t+x-1)

def mkFrame(t):
    graph = plot(lambda x: f(t,x), (x,-2,2), ymin=-2, ymax=2)
    zero = point((1-t if t&lt;0 else -1-t, 0), size=40, color=&quot;orange&quot;)
    txt = text(&quot;t={}&quot;.format(t), (-1.5,1.5))
    return graph+zero+txt

frames = [mkFrame(t/10) for t in ([-5..5] + [-s for s in [-4..4]])]
a = animate(frames)
a.show()
&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;You can see that when $t=0$ the root $x(t)$ jumps between $\pm 1$!&lt;/p&gt;

&lt;p&gt;Indeed, if we plot $x(t)$ we get:&lt;/p&gt;

&lt;div class=&quot;auto&quot;&gt;
&lt;script type=&quot;text/x-sage&quot;&gt;
x,t = var(&apos;x,t&apos;)

f(t,x) = max_symbolic(min_symbolic(t+x+1, t), t+x-1)

p = implicit_plot(f(t,x), (t,-1,1), (x,-2,2))
p.axes_labels([&apos;$t$&apos;, &apos;$x$&apos;])
p.show()
&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;and it’s obvious that this is not the graph of a continuous function in any 
neighborhood of $t=0$.&lt;/p&gt;

&lt;p&gt;As long as we’re showing pretty graphics, you can also visualize this whole 
function $f$ as a surface over the strip $(-1,1) \times \mathbb{R}$. 
Then choosing a $t$ amounts to choosing a “slice” of the surface, and 
we can see that where that slice intersects the $(t,x)$-plane jumps suddenly 
as we cross $t=0$. In this example the axes are labeled $x$ and $y$ rather than 
$x$ and $t$:&lt;/p&gt;

&lt;iframe src=&quot;https://www.desmos.com/3d/ijgujx61ww&quot; style=&quot;border: 0; width:100%; height: 500px; overflow: auto;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;So where did we start, and where did we end? If the IVT were constructively 
provable, it would be true inside $\mathsf{Sh}((-1,1))$ and thus 
for our $f(t,x)$ we could find an open cover on which
the zero $x(t)$ varies continuously in $t$. But this can’t possibly happen 
in a neighborhood of $t=0$, so we learn there &lt;em&gt;is no constructive proof&lt;/em&gt;!&lt;/p&gt;

&lt;p&gt;Buuuuut, all is not lost! Usually classical theorems &lt;em&gt;do&lt;/em&gt; have constructive 
analogues, either by adding new assumptions, weakening the conclusion, or by 
finding a different statement of the theorem that’s more positive. 
Andrej Bauer’s paper &lt;a href=&quot;https://www.ams.org/journals/bull/2017-54-03/S0273-0979-2016-01556-4/S0273-0979-2016-01556-4.pdf&quot;&gt;&lt;em&gt;Five Stages of Accepting Constructive Mathematics&lt;/em&gt;&lt;/a&gt; 
lists many possibilities.&lt;/p&gt;

&lt;p&gt;For instance, one way to weaken the conclusion is to prove that for 
any $\epsilon$ you like, there’s an $x$ with $|f(x)| \lt \epsilon$. 
In our example, if we plot those $x$ so that $|f(t,x)| \lt \epsilon$ we get&lt;/p&gt;

&lt;div class=&quot;linked_auto&quot;&gt;
&lt;script type=&quot;text/x-sage&quot;&gt;
x,t = var(&apos;x,t&apos;)

f(t,x) = max_symbolic(min_symbolic(t+x+1, t), t+x-1)

p = region_plot(abs(f(t,x)) &lt;= 0.1, (t,-1,1), (x,-2,2))
p.axes_labels([&apos;$t$&apos;, &apos;$x$&apos;])
p.show()
&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;and it’s easy to fit the graph of a continuous selection function $x(t)$ 
inside this thickened region.&lt;/p&gt;

&lt;p&gt;Another approach is to recognize that the problem comes from $f$ “hovering”
at $0$ when $t=0$. If we forbid this hovering, for instance by assuming 
$f$ is strictly monotone, then we &lt;em&gt;can&lt;/em&gt; constructively prove the IVT
(See Bauer’s &lt;em&gt;Five Stages&lt;/em&gt; paper again).&lt;/p&gt;

&lt;p&gt;There’s yet another version, coming from &lt;a href=&quot;https://ncatlab.org/nlab/show/abstract+Stone+duality&quot;&gt;Abstract Stone Duality&lt;/a&gt;, 
where we say that whenever $f(a) \lt 0 \lt f(b)$, the compact subspace 
\(Z_f = \{ x \in [a,b] \mid f(x) = 0 \}\) is &lt;em&gt;occupied&lt;/em&gt; (Cor 13.11 in 
&lt;em&gt;A Lambda Calculus for Real Analysis&lt;/em&gt;). This is a condition 
that’s weaker than &lt;em&gt;inhabited&lt;/em&gt; but stronger than &lt;em&gt;nonempty&lt;/em&gt;,
which you can read about in Section 8 of the same paper. 
I don’t understand this condition very well, because I haven’t spent as
much time thinking about ASD as I would like. Hopefully sometime soon
I’ll find some time to work through some examples!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;Edit (July 7, 2025):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://sfba.social/@soaproot&quot;&gt;Jim Kingdon&lt;/a&gt; recently started a &lt;a href=&quot;https://github.com/metamath/set.mm/issues/4918#issuecomment-3022009758&quot;&gt;thread&lt;/a&gt; in the metamath github
talking about this, and told me about it over mastodon. In this thread, 
&lt;a href=&quot;https://digama0.github.io/&quot;&gt;Mario Carneiro&lt;/a&gt; gave a slick proof that the IVT implies (analytic) LLPO,
which should feel familiar. Recall that &lt;a href=&quot;https://ncatlab.org/nlab/show/analytic+LLPO&quot;&gt;Analytic LLPO&lt;/a&gt; is the statement that 
$\forall t \in \mathbb{R} . t \geq 0 \lor t \leq 0$.&lt;/p&gt;

&lt;p&gt;$\ulcorner$
Fix $t \in \mathbb{R}$, and again consider the function
$f_t(x) : \mathbb{R} \to \mathbb{R}$ by&lt;/p&gt;

\[f_t(x) = \max(\min(t+x+t,t), t+x-1)\]

&lt;p&gt;Then by the IVT, $f_t(x)$ has a zero $f_t(z) = 0$, and constructively 
we know that $z \lt \frac{1}{2} \lor z \gt \frac{-1}{2}$. But now if 
$z \lt \frac{1}{2}$ then $t \leq 0$ and if $z \gt \frac{-1}{2}$ then $t \geq 0$,
giving the claim.
&lt;span style=&quot;float:right&quot;&gt;$\lrcorner$&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Mario also mentions that LLPO and Countable Choice is enough to prove IVT,
so that in any settings where CC holds LLPO and IVT are equivalent&lt;sup id=&quot;fnref:9&quot;&gt;&lt;a href=&quot;#fn:9&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;.
Indeed&lt;/p&gt;

&lt;p&gt;$\ulcorner$
Say $f(a) \lt 0$ and $f(b) \gt 0$.&lt;/p&gt;

&lt;p&gt;For every $r \in \mathbb{Q}$, 
decide if $f(a + r(b-a))$ is $\geq 0$ or $\leq 0$. For each $r$ this is 
an application of LLPO, but there might be two options (if $f$ outputs
a value that is both $\geq 0$ and $\leq 0$),
so we have to to &lt;em&gt;choose&lt;/em&gt; one of these for each of our &lt;em&gt;countably many&lt;/em&gt; 
$r \in \mathbb{Q}$. So we’ve used both LLPO and CC to do this.&lt;/p&gt;

&lt;p&gt;Now we can do binary search in $[a,b]$ to find a zero. The midpoints $m$
we check will always be of the form $a + r(b-a)$ for some $r \in \mathbb{Q}$,
so to split our interval in half we can use our pre-made choices –
recurring into the upper half of the interval if $f(m) \leq 0$ or the 
lower half if $f(m) \geq 0$.&lt;/p&gt;

&lt;p&gt;Then the sequence of midpoints for our intervals is a cauchy sequence 
whose modulus of convergence we can compute, since after the first $n$ 
bisections all the future midpoints lie in an interval of width $2^{-n}(b-a)$.
Since the dedekind reals are complete for these kinds of explicit cauchy 
sequences (see &lt;a href=&quot;https://planetmath.org/1122dedekindrealsarecauchycomplete&quot;&gt;here&lt;/a&gt;, for instance), these converge to a real number $z$.
As usual, continuity of $f$ implies that $f(z) = 0$.
&lt;span style=&quot;float:right&quot;&gt;$\lrcorner$&lt;/span&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Ok, thanks for reading, all! It’s nice to get a few quick posts up while I’m 
working on some longer stuff. I’m still thinking a lot about a cool circle 
of ideas involving Fukaya Categories, Skein Theory and T(Q)FTs, and 
Hall Algebras, and I’m slowly making progress on writing posts about all these 
fun things.&lt;/p&gt;

&lt;p&gt;Now, though, I have to go run a review session for a calculus class, haha.
I’ll try to resist telling them about the fascinating subtleties that show 
up when you try to do everything constructively.&lt;/p&gt;

&lt;p&gt;Stay safe, and we’ll talk soon 💖&lt;/p&gt;

&lt;hr /&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot;&gt;

      &lt;p&gt;Usually on this blog when I talk about topoi I mean &lt;a href=&quot;https://ncatlab.org/nlab/show/Grothendieck+topos&quot;&gt;grothendieck topoi&lt;/a&gt;,
but for this completeness result we really do need to allow more general 
&lt;a href=&quot;https://ncatlab.org/nlab/show/topos#ElementaryTopos&quot;&gt;elementary topoi&lt;/a&gt; with &lt;a href=&quot;https://ncatlab.org/nlab/show/natural+numbers+object&quot;&gt;NNO&lt;/a&gt;. Indeed there are statements true in all 
grothendieck topoi that are &lt;em&gt;not&lt;/em&gt; constructively provable (since they fail 
in some elementary topos). See &lt;a href=&quot;https://mathoverflow.net/a/270923/145247&quot;&gt;here&lt;/a&gt; for a partial list.&lt;/p&gt;

      &lt;p&gt;I would actually love to know if there’s a reference for what one has to 
add to IHOL to get something sound and complete for &lt;em&gt;grothendieck&lt;/em&gt; topoi…
I spent some time looking, but the only thing I found was 
&lt;a href=&quot;https://arxiv.org/pdf/math/9707206&quot;&gt;&lt;em&gt;Topological Completeness for Higher-Order Logic&lt;/em&gt;&lt;/a&gt; by Awodey and Butz,
but it seems like they use $1+1$ in place of $\Omega$, so this isn’t the 
usual interpretation of logic in a grothendieck topos (which is also 
where the &lt;em&gt;classical&lt;/em&gt; completeness comes from). &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot;&gt;

      &lt;p&gt;Maybe “base topos” would be less philosophically charged &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot;&gt;

      &lt;p&gt;I was &lt;em&gt;really&lt;/em&gt; fumbling around with topos theory back then, haha. 
I’m much more confident now, and in the last few years I’ve just worked 
through a lot more examples and done more computations and read more 
papers and generally just learned a lot. Rereading that post was 
surprisingly… nostalgic isn’t the right word… but 
it’s fun to see how much I’ve grown! &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:4&quot;&gt;

      &lt;p&gt;The usual proof with &lt;a href=&quot;https://en.wikipedia.org/wiki/Bernstein_polynomial#Elementary_proof&quot;&gt;bernstein polynomials&lt;/a&gt; works if we’re 
careful to check some constructively relevant details. I’ll copy it 
here in case the wikipedia article changes someday:&lt;/p&gt;

      &lt;p&gt;Fix $\epsilon &amp;gt; 0$.&lt;/p&gt;

      &lt;p&gt;We write $b_{k,n}(x) = \binom{n}{k} x^k (1-x)^{n-k}$, and note that:&lt;/p&gt;

      &lt;ol&gt;
        &lt;li&gt;$\sum_{k=0}^n b_{k,n} = 1$&lt;/li&gt;
        &lt;li&gt;$\sum_{k=0}^n \left ( x - \frac{k}{n} \right )^2 b_{k,n} = \frac{x(1-x)}{n}$&lt;/li&gt;
      &lt;/ol&gt;

      &lt;p&gt;These are all provable by just expanding the left hand side, which is 
constructive.&lt;/p&gt;

      &lt;p&gt;We also fix a $\delta$ so that whenever $|x-y| \lt \delta$ we have 
$|f(x) - f(y)| \lt \epsilon$. This is because, constructively, every 
continuous function on a compact sublocale of $\mathbb{R}$ is uniformly 
continuous. Note that here we crucially need to be working with locales!
(see, eg, Thm 10.7 in Taylor’s &lt;a href=&quot;https://www.paultaylor.eu/ASD/lamcra/lamcra.pdf&quot;&gt;&lt;em&gt;A Lambda Calculus for Real Analysis&lt;/em&gt;&lt;/a&gt;)&lt;/p&gt;

      &lt;p&gt;Lastly, we fix $M$ an upper bound for $\lvert f \rvert$. This is possible since 
$[0,1]$ is compact, overt, and inhabited
(see Rmk 10.4 in Bauer and Taylor’s &lt;em&gt;The Dedekind Reals in Abstract Stone Duality&lt;/em&gt;)
thus the continuous $\lvert f \rvert$ admits a maximum 
(Thm 12.9 in &lt;em&gt;A Lambda Calculus for Real Analysis&lt;/em&gt;).&lt;/p&gt;

      &lt;p&gt;Now let $B_n f = \sum_{k=0}^n f(k/n) b_{k,n}$. We compute:&lt;/p&gt;

\[\begin{aligned}
\lvert f(x) - (B_n f)(x) \rvert 
&amp;amp;\overset{(a)}{=} \lvert \sum_{k=0}^n (f(x) - f(k/n)) b_{k,n}(x) \rvert \\
&amp;amp;\leq \sum_{k=0}^n \lvert f(x) - f(k/n) \rvert b_{k,n}(x) \\
&amp;amp;\overset{(b)}{\leq}
    \sum_{k \text{ s.t. } |x-k/n| \lt \delta} 
        \lvert f(x) - f(k/n) \rvert b_{k,n}(x)
    +
    \sum_{k \text{ s.t. } |x-k/n| \gt \frac{1}{2}\delta}
        \lvert f(x) - f(k/n) \rvert b_{k,n}(x)
\end{aligned}\]

      &lt;p&gt;In step (a) we use (1), and in step (b) we use the fact that 
$\forall x \in \mathbb{R} . x \lt \delta \lor x \gt \frac{\delta}{2}$ 
is constructively true (since the intervals overlap we &lt;em&gt;don’t&lt;/em&gt; need 
excluded middle here!)&lt;/p&gt;

      &lt;p&gt;But we can bound the first sum by noticing in this region $|x-k/n| \lt \epsilon$ 
so that (using (1) again)&lt;/p&gt;

\[\begin{aligned}
    \sum_{k \text{ s.t. } |x-k/n| \lt \delta} 
        \lvert f(x) - f(k/n) \rvert b_{k,n}(x)
    &amp;amp;\leq
    \sum_{k \text{ s.t. } |x-k/n| \lt \delta} 
        \epsilon b_{k,n}(x) \\
    &amp;amp;\leq
    \sum_{k=0}^n \epsilon b_{k,n}(x) \\
    &amp;amp;= \epsilon
\end{aligned}\]

      &lt;p&gt;And since $\lvert f(x) - f(k/n)\rvert \leq \lvert f(x) \rvert + 
\lvert f(k/n) \rvert \leq 2M$, we compute:&lt;/p&gt;

\[\begin{aligned}
    \sum_{k \text{ s.t. } |x-k/n| \gt \frac{1}{2}\delta}
        \lvert f(x) - f(k/n) \rvert b_{k,n}(x)
    &amp;amp;\leq
    \sum_{k \text{ s.t. } |x-k/n| \gt \frac{1}{2}\delta}
        2M b_{k,n}(x) \\
    &amp;amp;\overset{(c)}{\leq}
    2M \sum_{k \text{ s.t. } |x-k/n| \gt \frac{1}{2}\delta}
        \left ( \frac{\delta}{2} \right )^{-2} 
        \left ( x - \frac{k}{k} \right )^2 b_{k,n}(x) \\
    &amp;amp;\leq
    \frac{8M}{\delta^2}
    \sum_{k=0}^n \left ( x - \frac{k}{k} \right )^2 b_{k,n}(x) \\
    &amp;amp;\overset{(d)}{=}
    \frac{8M}{\delta^2} \frac{x(1-x)}{n} \\
    &amp;amp;\leq 
    \frac{8M}{\delta^2} \frac{1}{4n}
\end{aligned}\]

      &lt;p&gt;In step (c) we use $|x - k/n| \gt \frac{\delta}{2}$ to say that 
$\left ( \frac{\delta}{2} \right )^{-2} \left ( x - \frac{k}{k} \right )^2 \geq 1$,
so that we can multiply through by it and make our sum bigger. 
In step (d) we use (2), and at the end we use the fact that $x(1-x) \leq \frac{1}{4}$
on $[0,1]$.&lt;/p&gt;

      &lt;p&gt;Now since $\mathbb{R}$ is constructively archimedian 
(Defn. 1.1 in &lt;em&gt;The Dedekind Reals in Abstract Stone Duality&lt;/em&gt;) we see 
$\exists n \in \mathbb{N} . \frac{2M}{\delta^2n} \lt \epsilon$.&lt;/p&gt;

      &lt;p&gt;Since these bounds were uniform in $x$, we learn that&lt;/p&gt;

\[\forall \epsilon \gt 0 . \exists n . \lVert f - B_n f \rVert_\infty \lt \epsilon\]

      &lt;p&gt;as desired. &lt;a href=&quot;#fnref:4&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:5&quot;&gt;

      &lt;p&gt;A real number $x$ in this topos is a program that eats a natural number $n$ 
and outputs a rational number $x(n)$. We think about this as a sequence of 
rational approximations $x(n)$ converging to some real number $x$.
So a function $[0,1] \to \mathbb{R}$ in this topos is a program that takes 
as input a program $x$ (outputting rational approximations between $0$ and $1$) 
and outputs a new program $f(x)$ which outputs rational approximations. &lt;a href=&quot;#fnref:5&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:6&quot;&gt;

      &lt;p&gt;Because our statement of Weierstrass 
$\forall \epsilon . \forall f . \exists p . \lVert f - p \rVert_\infty \lt \epsilon$
includes an existential quantifier there’s no way to get around the fact 
that the $p$ we build is only defined &lt;em&gt;locally&lt;/em&gt; on an open cover.&lt;/p&gt;

      &lt;p&gt;If you were more careful and gave a type theoretic proof that 
$\prod_\epsilon \prod_f \sum_p \lVert f - p \rVert_\infty \lt \epsilon$
then you could take $p$ to be a single polynomial defined on the whole of 
$\Theta$… I haven’t thought very hard about how possible this is
(mainly because I haven’t spent much time thinking about what theorems 
about locales are provable in type theory), but I’m sure a talented 
undergraduate could figure it out. &lt;a href=&quot;#fnref:6&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:7&quot;&gt;

      &lt;p&gt;The earliest version of this example which I’ve seen comes from 
Stout’s &lt;em&gt;Topological Properties of the Real Numbers Object in a Topos&lt;/em&gt;
back in 1976. I think basically every other paper I’ve cited in this 
post gives some version of this example too, so it’s very well 
trodden ground! &lt;a href=&quot;#fnref:7&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:8&quot;&gt;

      &lt;p&gt;Well, not FULL glory I guess. Over on &lt;a href=&quot;https://mathstodon.xyz/@antoinechambertloir/114764893867719265&quot;&gt;mastodon&lt;/a&gt;, 
&lt;a href=&quot;https://webusers.imj-prg.fr/~antoine.chambert-loir/index.xhtml&quot;&gt;Antoine Chambert-Loir&lt;/a&gt; pointed out that I (rather embarrassingly)
forgot to mention the assumption that $f : \mathbb{R} \to \mathbb{R}$ is 
continuous!&lt;/p&gt;

      &lt;p&gt;Thankfully in my externalization I mention that we want 
$f : U \times \mathbb{R} \to \mathbb{R}$ to be continuous, which is 
what that &lt;em&gt;would&lt;/em&gt; have externalized to, if I’d remembered to mention it! &lt;a href=&quot;#fnref:8&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:9&quot;&gt;

      &lt;p&gt;Recall that in the presence of countable choice, the dedekind and 
cauchy reals agree so that LLPO and analytic LLPO agree. &lt;a href=&quot;#fnref:9&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate>
        <link>https://grossack.site/2025/06/10/IVT-not-constructive.html</link>
        <guid isPermaLink="true">https://grossack.site/2025/06/10/IVT-not-constructive.html</guid>
      </item>
      
    
      
      <item>
        <title>An Empty Product of Nonempty Sets</title>
        <description>&lt;p&gt;A few days ago I saw a &lt;a href=&quot;https://math.stackexchange.com/q/5072206/655547&quot;&gt;cute question&lt;/a&gt; on mse asking about a particularly 
non-intuitive failing of the axiom of choice. I remember when I was an 
undergrad talking to a friend of mine about various statements equivalent 
to choice, and being particularly hung up on the same statement that OP 
asks about – The product of nonempty sets is nonempty. I understood that 
there were models where the axiom of choice fails, and so in those models 
we must have some family of nonempty sets whose product is, somehow, empty!
Now that I’m older and I’ve spent &lt;em&gt;much&lt;/em&gt; more time thinking about these things, 
this is less surprising to me, but reading that question reminded me how badly
I once wanted a concrete example, and so I’ll share one here!&lt;/p&gt;

&lt;p&gt;This should be a pretty quick post, since I’ll basically just be fleshing 
out my answer to that mse question. But I think it’ll also be nice to have 
here, since these things can be hard to find when you’re first getting into 
logic and topos theory! Let’s get to it!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;First, let’s remember that for any group $G$ the category $G\text{-}\mathsf{Set}$
of sets equipped with a $G$-action is a topos. Indeed you can see it as a 
presheaf topos, since $G\text{-}\mathsf{Set}$ is equivalent to the category 
of functors from $G \to \mathsf{Set}$ (viewing $G$ as a one-object category).
We’ve talked about this topos &lt;a href=&quot;/2022/12/13/internal-logic-examples&quot;&gt;before&lt;/a&gt;, and it’s wild to think how 
far I’ve come since writing that post!&lt;/p&gt;

&lt;p&gt;The basic idea of $G\text{-}\mathsf{Set}$ as a topos is that any set theoretic 
construction we do to some $G$-sets again gives us $G$-sets! For instance, 
any (co)limits of $G$-sets will have a natural $G$-action. If $X$ is a $G$-set
then its powerset $\mathcal{P}(X)$ has a $G$-action where if 
$A \in \mathcal{P}(X)$ we define \(g \cdot A = \{g \cdot a \mid a \in A \}\),
which is another element of $\mathcal{P}(X)$. If $X$ and $Y$ are $G$-sets 
then the set of functions $X \to Y$ is again a $G$-set where we say 
$(g \cdot_{X \to Y} f)(x) = g \cdot_Y f(g^{-1} \cdot_X x)$.&lt;/p&gt;

&lt;p&gt;In particular, we can recover the “$G$-equivariant” constructions as the 
&lt;a href=&quot;https://ncatlab.org/nlab/show/global+element&quot;&gt;global elements&lt;/a&gt;! So even though $\mathcal{P}(X)$ contains &lt;em&gt;all&lt;/em&gt; subsets 
of $X$ (not just the $G$-invariant subsets), if we look at the global elements
(that is the maps $1 \to \mathcal{P}(X)$) we do get exactly the 
$G$-invariant subsets. Similarly while the set of functions $X \to Y$ sees 
&lt;em&gt;all&lt;/em&gt; functions, the global elements of this set will pick out exactly the 
$G$-equivariant functions.&lt;/p&gt;

&lt;p&gt;But $G\text{-}\mathsf{Set}$ has a &lt;a href=&quot;https://ncatlab.org/nlab/show/coreflective+subcategory&quot;&gt;coreflective subcategory&lt;/a&gt; given by those
$G$-sets all of whose orbits are finite. The coreflector takes a $G$-set 
and just deletes all the infinite orbits, so we have an adjunction&lt;/p&gt;

\[(\iota : G\text{-}\mathsf{Set}_\text{finite orbits} \to G\text{-}\mathsf{Set})
\dashv
(R : G\text{-}\mathsf{Set} \to G\text{-}\mathsf{Set}_\text{finite orbits})\]

&lt;p&gt;which gives us a comonad $\iota R$ on $G\text{-}\mathsf{Set}$. This 
comonad is idempotent, and its category of coalgebras is equivalent to 
\(G\text{-}\mathsf{Set}_\text{finite orbits}\). Then since $\iota$ is left 
exact (and so is $R$, since it’s a right adjoint), we see that 
\(G\text{-}\mathsf{Set}_\text{finite orbits}\) is the category of coalgebras 
for a lex comonad on a topos, thus is &lt;em&gt;itself&lt;/em&gt; a topos!&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;As a cute exercise, check that $\iota$ really is left exact!&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Now doing computations in this topos is pretty easy! Finite limits and 
arbitrary colimits are computed as in $G\text{-}\mathsf{Set}$ since 
$\iota$ preserves these. Arbitrary limits and exponentials $Y^X$ come from 
coreflecting – that is $Y^X$ as computed in 
\(G\text{-}\mathsf{Set}_\text{finite orbits}\) is just what we get by 
removing the infinite orbits from $Y^X$ as computed in $G\text{-}\mathsf{Set}$,
and similarly for limits. The subobject classifier is just the usual set 
of truth values \(\{ \top, \bot \}\) with the trivial $G$-action&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. 
In particular this topos is boolean, so set theory inside it is &lt;em&gt;particularly&lt;/em&gt;
close to the usual ZF set theory.&lt;/p&gt;

&lt;p&gt;Now with this in mind, we can prove the main claim of this post:&lt;/p&gt;

&lt;div class=&quot;boxed&quot;&gt;
  &lt;p&gt;In $\mathbb{Z}\text{-}\mathsf{Set}_\text{finite orbits}$, let $C_n$ be $\mathbb{Z}/n$ 
with its obvious $\mathbb{Z}$-action. Then each $C_n$ is inhabited&lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; in 
the sense that $\exists x . x \in C_n$, and yet \(\prod_n C_n = \emptyset\)!&lt;/p&gt;

  &lt;p&gt;So this topos shows explicitly how, in the absence of choice, you can have 
a family of nonempty sets&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot; role=&quot;doc-noteref&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; whose product is somehow empty!&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;The computation is actually quite friendly! To compute $\prod_n C_n$ in 
this topos, we first compute the product in the category of &lt;em&gt;all&lt;/em&gt; 
$\mathbb{Z}$-sets, then throw away any infinite orbits.&lt;/p&gt;

&lt;p&gt;But it’s easy to see that &lt;em&gt;every&lt;/em&gt; orbit is infinite! Any element of the 
product will contain an element from every $C_n$, so that in any finite 
number of steps some large entry in this tuple won’t be back where it started.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Ok, this one was &lt;em&gt;actually&lt;/em&gt; quite quick, which I’m happy about! 
My parents are visiting soon, and I’m excited to take a few days 
to see them ^_^. I have another shorter post planned which another 
grad student asked me to write, and I’ve finally &lt;em&gt;actually&lt;/em&gt; 
started the process of turning my &lt;a href=&quot;/2024/07/03/life-in-johnstones-topological-topos&quot;&gt;posts on the topological topos&lt;/a&gt;
into a paper. I’m starting to understand &lt;a href=&quot;https://en.wikipedia.org/wiki/Topological_quantum_field_theory&quot;&gt;TQFTs&lt;/a&gt; better, and it’s 
been exciting to learn a bit more physics. Hopefully I’ll find time 
to talk about all that soon too, once I take some time to really organize 
my thoughts about it.&lt;/p&gt;

&lt;p&gt;Thanks for hanging out, all! Stay safe, and we’ll talk soon.&lt;/p&gt;

&lt;hr /&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot;&gt;

      &lt;p&gt;In case $G = \mathbb{Z}$ then it’s a kind of cute fact that this topos 
is equivalent to the 
topos of &lt;em&gt;continuous&lt;/em&gt; (discrete) $\widehat{\mathbb{Z}}$-sets, where 
$\widehat{\mathbb{Z}}$ is the &lt;a href=&quot;https://ncatlab.org/nlab/show/profinite+completion+of+a+group&quot;&gt;profinite completion&lt;/a&gt; of $\mathbb{Z}$.
See, for instance, Example A2.1.7 on page 72 of the elephant. This gives 
another computationally effective way to work with this topos!&lt;/p&gt;

      &lt;p&gt;I’m pretty sure I convinced myself that more generally the category 
of $G$-sets all of whose orbits are finite should be equivalent to 
the category of continuous discrete $\widehat{G}$-sets, but I haven’t 
thought hard enough about it to say for sure in a blog post. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot;&gt;

      &lt;p&gt;Of course, there’s no global points for $n \neq 1$, since maps 
$1 \to C_n$ correspond to fixed points. But existential quantification 
is &lt;em&gt;local&lt;/em&gt;, so that the topos models $\exists x \in C_n . \top$ if there’s 
some surjection $V \twoheadrightarrow 1$ and a map $V \to C_n$. &lt;del&gt;We 
can take $V = \mathbb{Z}$ with its left multiplication action on itself, 
and there &lt;em&gt;is&lt;/em&gt; a map from $\mathbb{Z} \to C_n$.&lt;/del&gt; &lt;strong&gt;Edit, June 5&lt;/strong&gt;: 
Thanks to Kevin Carlson for pointing out that $\mathbb{Z}$ with its 
left multiplication action isn’t in this topos, since its orbit is infinite! 
We instead need, for each $n$, to look at the surjection from 
$C_n \twoheadrightarrow 1$ and then you can use the identity map from 
$C_n \to C_n$ to witness inhabited-ness.&lt;/p&gt;

      &lt;p&gt;If you’re more used to type theory, we don’t have $\Sigma_{x : C_n} \top$,
since that would imply a global element. But despite this, we &lt;em&gt;do&lt;/em&gt; 
have the &lt;a href=&quot;https://ncatlab.org/nlab/show/bracket+type&quot;&gt;propositional truncation&lt;/a&gt; 
$\lVert \Sigma_{x : C_n} \top \rVert$, so that an element of $C_n$ 
&lt;em&gt;merely&lt;/em&gt; exists. &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot;&gt;

      &lt;p&gt;Since this topos is boolean, nonempty and inhabited are actually 
synonyms here. Moreover, this “nonempty” is closer to how a lot of 
working mathematicians speak, so it felt right to use this wording here. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</description>
        <pubDate>Wed, 04 Jun 2025 00:00:00 +0000</pubDate>
        <link>https://grossack.site/2025/06/04/an-empty-product-of-nonempty-sets.html</link>
        <guid isPermaLink="true">https://grossack.site/2025/06/04/an-empty-product-of-nonempty-sets.html</guid>
      </item>
      
    
  </channel>
</rss>
